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 element in tuple printf "%d %d\n" a b --- 20 := 90 ##ERROR: syntax error - bad lvalue - invalid element - 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 # - '+' not found in Primitive"