fun self.x() { ##ERROR: syntax error - invalid function name 'self.x' for 'fun'
};

---

fun if() { ##ERROR: syntax error - invalid function name 'if' for 'fun'
};

---

fun a if() { ##ERROR: syntax error - 'a' not followed by ( but followed by 'if'
};

---

fun a:b if() { ##ERROR: syntax error - 'b' not followed by ( but followed by 'if'
};

---

fun x (x :: 20) { ##ERROR: syntax error - invalid return variable '20' for 'fun'
}

---
fun x (x :: if) { ##ERROR: syntax error - invalid return variable 'if' for 'fun'
}

---

fun x (x :: self.y) { ##ERROR: syntax error - invalid return variable 'self.y' for 'fun'
}

---

fun x (x :: z z) { ##ERROR: syntax error - duplicate return variable name 'z' for 'fun'
}

---

fun x (x 20) { ##ERROR: syntax error - invalid argument name '20' for 'fun'
}

---

fun x (+) { ##ERROR: syntax error - invalid argument name '+' for 'fun'
}

---

fun x (a while) { ##ERROR: syntax error - invalid argument name 'while' for 'fun'
}

---

fun x (a b a) { ##ERROR: syntax error - duplicate argument name 'a' for 'fun'
}

---

fun x (... a) { ##ERROR: syntax error - unexpected token 'a' after '...' for 'fun'
}

---

fun x (... : a) { ##ERROR: syntax error - : disallowed
}

---

fun :: fun1() { ##ERROR: syntax error - invalid function name '::' for 'fun'
     return 10;
};

---

fun fun fun1() { ##ERROR: syntax error - invalid function name 'fun' for 'fun'
     return 10;
};

---

fun(#ci) fun1() { ##ERROR: syntax error - attribute list prohibited on plain function 'fun1'
}

---

fun() ()  { ##ERROR: syntax error - attribute list prohibited on unnamed function for 'fun'
}

---

fun() X:y() { ##ERROR: syntax error - empty attribute list on 'X:y' for 'fun'
}

---

class X {
	fun() y() { ##ERROR: syntax error - empty attribute list on 'y' for 'fun'
	}
}
