194 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #### TODO: create test cases using the following data
 | ||
| 
 | ||
| 
 | ||
| BEGIN { @local abc; abc(); }'
 | ||
| HAWK_ENOTFUN -> ERROR: CODE 97 LINE 1 COLUMN 21 - non-function value in abc 
 | ||
| 
 | ||
| 
 | ||
| BEGIN { @local x; abc(); } 
 | ||
| HAWK_EFUNNF -> ERROR: CODE 96 LINE 1 COLUMN 19 - function 'abc' not found
 | ||
| 
 | ||
| hawk --implicit=off 'BEGIN { @local x; abc(); }'
 | ||
| HAWK_EFUNNF -> ERROR: CODE 96 LINE 1 COLUMN 19 - function 'abc' not defined    ===> same as the above. but it's a parse-time error.
 | ||
| 
 | ||
| 
 | ||
| BEGIN { @local x; x=sys::getpid(); delete x;}
 | ||
| HAWK_ENOTDEL -> ERROR: CODE 98 LINE 1 COLUMN 43 - 'x' not deletable
 | ||
| 
 | ||
| 
 | ||
| hawk --flexmap=off 'BEGIN {  ARGV = 30; }'
 | ||
| HAWK_ENMAPTOSCALAR -> ERROR: CODE 110 LINE 1 COLUMN 10 - not allowed to change a map 'ARGV' to a scalar
 | ||
| 
 | ||
| hawk --flexmap=off 'BEGIN {  @local x; x = 10; x[1] = "hello"; }'
 | ||
| HAWK_ESCALARTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 28 - not allowed to change a scalar 'x' to a map
 | ||
| 
 | ||
| hawk --flexmap=off 'BEGIN {  @local x, y; x[1]=20; ARGC = x; }'
 | ||
| HAWK_ESCALARTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 32 - not allowed to achange a scalar 'ARGC' to a map
 | ||
| 
 | ||
| hawk --flexmap=off 'BEGIN {  ARGC[1] = "hello"; }'
 | ||
| HAWK_ESCALARTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 10 - not allowed to change a scalar 'ARGC' to a map
 | ||
| 
 | ||
| 
 | ||
|  hawk --flexmap=off 'BEGIN {  @local x, y; x[1]=20; CONVFMT = x; }'
 | ||
| HAWK_ESCALARTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 32 - not allowed to change a scalar 'CONVFMT' to a map
 | ||
| 
 | ||
| hawk --flexmap=on 'BEGIN {  @local x, y; x[1]=20; CONVFMT = x; }'
 | ||
| HAWK_ESCALARTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 32 - not allowed to change a scalar 'CONVFMT' to a map
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  @local x, y; x[1] = 10; y[1] = 20; x = y; }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 45 - not allowed to change a map 'x' to another map    => x is a local variable
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  @local y; x[1] = 10; y[1] = 20; x = y; }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 42 - jnot allowed to change a map 'x' to another map    => x is a global variable
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'function abc(x) { @local j; j[1] = 20; x = j; } BEGIN {  @local q; q[1]=20; abc(q); }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 108 LINE 1 COLUMN 40 - not allowed to change a map 'x' to another map  => x is an argument
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'function abc(x) { x = 20; } BEGIN {  @local q; q[1]=20; abc(q); }'
 | ||
| HAWK_EMAPTOSCALAR -> ERROR: CODE 107 LINE 1 COLUMN 19 - not allowed to change a map 'x' to a scalar
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  @local y; x[1] = 10;  x = 20; }'
 | ||
| HAWK_EMAPTOSCALAR -> ERROR: CODE 107 LINE 1 COLUMN 32 - not allowed to change a map 'x' to a scalar
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  x[1] = 10;  x = 20; }'
 | ||
| HAWK_EMAPTOSCALAR -> ERROR: CODE 107 LINE 1 COLUMN 22 - not allowed to change a map 'x' to a scalar
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  x[1] = 10;  jx=x; }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 106 LINE 1 COLUMN 22 - not allowed to assign a map to a variable 'jx'
 | ||
| 
 | ||
| $ hawk --flexmap=off 'BEGIN {  @local x, jx; x[1] = 10;  jx=x; }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 106 LINE 1 COLUMN 36 - not allowed to assign a map to a variable 'jx'
 | ||
| 
 | ||
| 
 | ||
| $ hawk --flexmap=off 'function abc(jx) { @local x; x[1]= 20; jx = x; } BEGIN {  abc(10); }'
 | ||
| HAWK_EMAPTOMAP -> ERROR: CODE 106 LINE 1 COLUMN 40 - not allowed to assign a map to a variable 'jx'
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| $ hawk 'BEGIN { print 0192; }'
 | ||
| HAWK_ELXDIG -> ERROR: CODE 32 LINE 1 COLUMN 15 - invalid digit '9'
 | ||
| 
 | ||
| 
 | ||
| $ hawk 'BEGIN { +
 | ||
| > }'
 | ||
| HAWK_EEXPRNR -> ERROR: CODE 49 LINE 1 COLUMN 9 - expression not recognized around '+'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@pragma stack_limit "99"; BEGIN { }'
 | ||
| HAWK_EINTLIT -> ERROR: CODE 45 LINE 1 COLUMN 21 - integer literal expected in place of '99'
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk --pablock=off '{ print $0; }'
 | ||
| HAWK_EKWFNC -> ERROR: CODE 50 LINE 1 COLUMN 1 - keyword 'function' expected in place of '{'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk --pablock=off 'BEGIN { print $0; }'
 | ||
| HAWK_EKWFNC -> ERROR: CODE 50 LINE 1 COLUMN 1 - keyword 'function' expected in place of 'BEGIN'
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@include "a\0b"; function; BEGIN { function=10; }'
 | ||
| HAWK_EIONMNL -> ERROR: CODE 122 LINE 1 COLUMN 10 - invalid I/O name of length 3 containing '\0'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function add(a,b) { return a + b; } @global add; BEGIN { add = 10; }'
 | ||
| HAWK_EFUNRED -> ERROR: CODE 59 LINE 1 COLUMN 45 - function 'add' redefined
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@global add; function add(a,b) { return a + b; } BEGIN { add = 10; }'
 | ||
| HAWK_EGBLRED -> ERROR: CODE 60 LINE 1 COLUMN 23 - global variable 'add' redefined
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'BEGIN { @local length; }'
 | ||
| HAWK_EFNCRED -> ERROR: CODE 58 LINE 1 COLUMN 16 - intrinsic function 'length' redefined
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@global length;'
 | ||
| HAWK_EFNCRED -> ERROR: CODE 58 LINE 1 COLUMN 9 - intrinsic function 'length' redefined
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function length(x) { return 10; }'
 | ||
| HAWK_EFNCRED -> ERROR: CODE 58 LINE 1 COLUMN 10 - intrinsic function 'length' redefined
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function test(ax) { @local ax; }'
 | ||
| HAWK_EPARRED -> ERROR: CODE 61 LINE 1 COLUMN 28 - parameter 'ax' redefined
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function test(ax, bx, ax) { return ax * bx; }'
 | ||
| HAWK_EDUPPAR -> ERROR: CODE 63 LINE 1 COLUMN 23 - duplicate parameter name 'ax'
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@global x, y, x; '
 | ||
| HAWK_EDUPGBL -> ERROR: CODE 64 LINE 1 COLUMN 15 - duplicate global variable name 'x'
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function test(ax, bx) { @local x, y, x; }'
 | ||
| HAWK_EDUPLCL -> ERROR: CODE 65 LINE 1 COLUMN 38 - duplicate local variable name - x
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function test(ax, bx) { @local ARGC; }'
 | ||
| ERROR: CODE 65 LINE 1 COLUMN 32 - duplicate local variable name - ARGC
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@global 10; '
 | ||
| HAWK_EBADVAR -> ERROR: CODE 67 LINE 1 COLUMN 9 - '10' not a valid variable name
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '{ @local 10; }'
 | ||
| HAWK_EBADVAR -> ERROR: CODE 67 LINE 1 COLUMN 10 - '10' not a valid variable name
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function test(10) {} '
 | ||
| HAWK_EBADPAR -> ERROR: CODE 66 LINE 1 COLUMN 15 - '10' not a valid parameter name
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'BEGIN { print B"abc^Bdef"; }'
 | ||
| HAWK_EMBSCHR -> ERROR: CODE 37 LINE 1 COLUMN 15 - invalid mbs character ''
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk "BEGIN {  print B'abf^Bdef'; }"
 | ||
| HAWK_EMBSCHR -> ERROR: CODE 37 LINE 1 COLUMN 16 - invalid mbs character ''
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk --implicit=off 'BEGIN {  print kcx[10]; }'
 | ||
| HAWK_EUNDEF -> ERROR: CODE 69 LINE 1 COLUMN 16 - undefined identifier 'kcx'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk --implicit=off 'BEGIN {  print ax; }'
 | ||
| HAWK_EUNDEF -> ERROR: CODE 69 LINE 1 COLUMN 16 - undefined identifier 'ax'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk  'function 1.2(a) {}'
 | ||
| HAWK_EFUNNAM -> ERROR: CODE 54 LINE 1 COLUMN 10 - '1.2' not a valid function name
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc(x) print t; }'
 | ||
| HAWK_ELBRACE -> ERROR: CODE 38 LINE 1 COLUMN 17 - left brace expected in place of 'print'
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc(x) { print a[10; }'
 | ||
| HAWK_ERBRACK -> ERROR: CODE 41 LINE 1 COLUMN 29 - right bracket expected in place of ';'
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc x) { print 10; }'
 | ||
| HAWK_ELPAREN -> ERROR: CODE 39 LINE 1 COLUMN 14 - left parenthesis expected in place of 'x'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x) { print (x; }'
 | ||
| HAWK_EPAREN -> ERROR: CODE 40 LINE 1 COLUMN 28 - right parenthesis expected in place of ';'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x { print 10; }'
 | ||
| HAWK_ECOMMA -> ERROR: CODE 42 LINE 1 COLUMN 17 - comma expected in place of '{'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x) { for (i = 10) print i; }'
 | ||
| HAWK_ESCOLON -> ERROR: CODE 43 LINE 1 COLUMN 31 - semicolon expected in place of ')'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x) { print (i? 20, 30); }'
 | ||
| HAWK_ECOLON -> ERROR: CODE 44 LINE 1 COLUMN 32 - colon expected in place of ','
 | ||
| 
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk '@includ "xxx.inc"; BEGIN {}'
 | ||
| HAWK_EXKWNR -> ERROR: CODE 88 LINE 1 COLUMN 1 - '@includ' not recognized
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x) { do { print x }; }'
 | ||
| HAWK_EKWWHL -> ERROR: CODE 51 LINE 1 COLUMN 34 - keyword 'while' expected in place of ';'
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk 'function abc (x) { do { print sysxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtt::xx }; }'
 | ||
| HAWK_ESEGTL -> ERROR: CODE 75 LINE 1 COLUMN 31 - segment 'sysxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtt' too long
 | ||
| 
 | ||
| $ ~/xxx/bin/hawk --tolerant=off 'function abc (x) { (1, 2, 3) }'
 | ||
| HAWK_EKWIN -> ERROR: CODE 47 LINE 1 COLUMN 30 - keyword 'in' expected in place of '}'
 | ||
| 
 | ||
| 
 |