79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| class A ( a ) {
 | |
| 	fun[#ci] init1() {
 | |
| 		| b |
 | |
| 		set b (+ 1 2);
 | |
| 		set a b;
 | |
| 		printf "init to %d\n" a;
 | |
| 		return self;
 | |
| 	};
 | |
| 
 | |
| 	{
 | |
| 		## this must not be allowed at this level. if it's allowed,
 | |
| 		## it should be at the top-level which is above the class level. this is confusing.
 | |
| 		| j | ##ERROR: syntax error - variable declaration disallowed in class init scope
 | |
| 		set j 20;
 | |
| 		printf ">>> %d\n" j;
 | |
| 	}
 | |
| 
 | |
| 	fun[#ci] init2() {
 | |
| 		| b |
 | |
| 		set b (+ 10 20);
 | |
| 		set a b;
 | |
| 		printf "init to %d\n" a;
 | |
| 		return self;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| ---
 | |
| 
 | |
| fun String length() { ##ERROR: syntax error - 'String' not followed by ( but followed by 'length'
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| class A ( 10 ) { ##ERROR: syntax error - not variable name '10'
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| class A ( a := 20 ) { ##ERROR: syntax error - block expression expected as 'class' body
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| class A ( ( (a) ) ) { ##ERROR: syntax error - not variable name
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## TODO: improve the reader to be aware that it's in the class definition context
 | |
| ##       while reading '(a + )' and to flag + as an invalid variable name...
 | |
| class A ( a + ) { ##ERROR: syntax error - no operand after binary selector '+'
 | |
| }
 | |
| 
 | |
| ---
 | |
| class A ( + ) { ##ERROR: syntax error - not variable name '+'
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| fun xxx(x :: p q) { p := (x + 1); q := (x + 2) }
 | |
| [a,[b]] := (xxx 20) ##ERROR: syntax error - bad lvalue - invalid token in tuple
 | |
| printf "%d %d\n" a b
 | |
| 
 | |
| ---
 | |
| 
 | |
| 20 := 90 ##ERROR: syntax error - bad lvalue - invalid identifier '20'
 | |
| 
 | |
| ---
 | |
| 
 | |
| [a b] := 10 ##ERROR: syntax error - non-function call/non-message send disallowed
 | |
| 
 | |
| ---
 | |
| 
 | |
| [] := 10 ##ERROR: syntax error - bad lvalue - blank expression
 | |
| 
 | |
| ---
 | |
| 
 | |
| + + 100 ##ERROR: exception not handled - "unable to send + to #<PRIM> - '+' not found in Primitive"
 |