defclass A [ a ] { defun :* 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; } defun :* init2() { | b | set b (+ 10 20); set a b; printf "init to %d\n" a; return self; }; }; --- defun String length() { ##ERROR: syntax error - no argument list } --- class A [ 10 ] { ##ERROR: syntax error - not variable name - 10 } --- class A [ a := 20 ] { ##ERROR: syntax error - := disallowed } --- class A [ [ [a] ] ] { ##ERROR: syntax error - not variable name } --- class A [ a + ] { ##ERROR: syntax error - prohibited binary operator - + } ## TODO: This check is supposed to fail. + must be treated as a binop symbol ##--- ##class A [ + ] { ##ERROR: syntax error - prohibited binary operator - + ##}