methods/parameter-fixed-array-initializer.vala \
methods/parameter-ref-array-resize.vala \
methods/parameter-ref-array-resize-captured.vala \
+ methods/parameter-ref-delegate.vala \
methods/prepostconditions.vala \
methods/prepostconditions-captured.vala \
methods/postconditions.vala \
+ methods/return-unowned-delegate.vala \
methods/same-name.vala \
methods/symbolresolution.vala \
methods/bug540483.vala \
--- /dev/null
+delegate int FooFunc ();
+
+void foo (int i, ref FooFunc func) {
+ assert (func () == i);
+ func = () => 4711;
+}
+
+int bar () {
+ return 23;
+}
+
+void main () {
+ {
+ FooFunc func = bar;
+ assert (func () == 23);
+ foo (23, ref func);
+ assert (func () == 4711);
+ }
+ {
+ int i = 42;
+ FooFunc func = () => i;
+ assert (func () == 42);
+ foo (42, ref func);
+ assert (func () == 4711);
+ }
+}
--- /dev/null
+delegate int FooFunc ();
+
+unowned FooFunc foo () {
+ return (FooFunc) manam;
+}
+
+unowned FooFunc bar () {
+ return () => 4711;
+}
+
+int manam () {
+ return 42;
+}
+
+void main () {
+ {
+ FooFunc func = foo ();
+ assert (func == (FooFunc) manam);
+ assert (func () == 42);
+ }
+ {
+ FooFunc func = bar ();
+ assert (func () == 4711);
+ }
+}