for (int dim = 1; dim <= array_type.rank; dim++) {
vdeclarator.add_parameter (new CCodeParameter (get_array_length_cname ("result", dim), length_ctype));
}
+ } else if ((prop.property_type is DelegateType) && get_ccode_delegate_target (prop) && ((DelegateType) prop.property_type).delegate_symbol.has_target) {
+ vdeclarator.add_parameter (new CCodeParameter (get_delegate_target_cname ("result"), "gpointer*"));
}
var vdecl = new CCodeDeclaration (creturn_type);
for (int dim = 1; dim <= array_type.rank; dim++) {
vdeclarator.add_parameter (new CCodeParameter (get_array_length_cname ("value", dim), length_ctype));
}
+ } else if ((prop.property_type is DelegateType) && get_ccode_delegate_target (prop) && ((DelegateType) prop.property_type).delegate_symbol.has_target) {
+ vdeclarator.add_parameter (new CCodeParameter (get_delegate_target_cname ("value"), "gpointer"));
}
var vdecl = new CCodeDeclaration ("void");
objects/interfaces.vala \
objects/interface-generics.vala \
objects/interface-property-base-access.vala \
+ objects/interface-property-delegate.vala \
objects/interface-virtual-override.vala \
objects/methods.vala \
objects/paramspec.vala \
--- /dev/null
+delegate void FooFunc ();
+
+interface IFoo {
+ public abstract unowned FooFunc prop { get; set; }
+}
+
+class Foo : IFoo {
+ public unowned FooFunc prop { get; set; }
+}
+
+class Bar {
+ public bool reached;
+
+ public Bar () {
+ var foo = new Foo ();
+ foo.prop = bar;
+
+ foo.prop ();
+ }
+
+ void bar () {
+ reached = true;
+ }
+}
+
+void main () {
+ var bar = new Bar ();
+ assert (bar.reached);
+}