This moves an internal codegen error to the semantic-analyzer.
delegates/incompatible-target.test \
delegates/instance-method-to-no-target.test \
delegates/instance-method-to-no-target-2.test \
+ delegates/lambda-incompatible.test \
delegates/lambda-mixed-instance-static.vala \
delegates/lambda-shared-closure.vala \
delegates/member-target-destroy.vala \
--- /dev/null
+Invalid Code
+
+[CCode (has_target = false)]
+delegate void FooFunc ();
+
+void main () {
+ int i = 0;
+ FooFunc f = () => {
+ i++;
+ };
+}
}
// delegate without target for instance method or closure
- if (first && m.binding == MemberBinding.INSTANCE && !has_target) {
+ if (first && !has_target && (m.binding == MemberBinding.INSTANCE || m.closure) && (parameters.size == 0 || m.closure)) {
return false;
}