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 - := disallowed
}

---
class A [ [ [a] ] ] { ##ERROR: syntax error - not variable name
}

---
class A [ a + ] { ##ERROR: syntax error - not variable name '+'
}

---
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 #<PRIM> - '+' not found in Primitive"
