Release 0.41.92
[vala-gnome.git] / tests / delegates / casting.vala
blob5ebbf116b88ad0027d70d443599c71bb41d7ffc5
1 delegate void FooFunc ();
3 [CCode (has_target = false)]
4 delegate void FooFuncTargetless ();
6 class Foo : Object {
7 public Foo () {
8 baz (func);
9 assert (ref_count == 1);
11 bar (func);
12 assert (ref_count == 1);
14 baz ((FooFunc) func);
15 assert (ref_count == 1);
17 bar ((FooFunc) func);
18 assert (ref_count == 1);
20 man ((FooFuncTargetless) func);
21 assert (ref_count == 1);
23 maz ((FooFuncTargetless) func);
24 assert (ref_count == 1);
27 public void func () {
30 void baz (FooFunc f) {
31 assert (ref_count == 1);
34 void bar (owned FooFunc f) {
35 assert (ref_count == 2);
38 void man (FooFuncTargetless f) {
39 assert (ref_count == 1);
42 void maz (owned FooFuncTargetless f) {
43 assert (ref_count == 1);
47 void func () {
50 void main () {
51 var foo = new Foo ();
52 assert (foo.ref_count == 1);
54 FooFunc f0 = foo.func;
55 assert (foo.ref_count == 2);
56 f0 = null;
57 assert (foo.ref_count == 1);
59 var f1 = (FooFunc) foo.func;
60 assert (foo.ref_count == 2);
61 f1 = null;
62 assert (foo.ref_count == 1);
64 unowned FooFunc f2 = foo.func;
65 assert (foo.ref_count == 1);
66 f2 = null;
67 assert (foo.ref_count == 1);
69 unowned FooFunc f3 = (FooFunc) foo.func;
70 assert (foo.ref_count == 1);
71 f3 = null;
72 assert (foo.ref_count == 1);
74 var f4 = (FooFuncTargetless) foo.func;
75 assert (foo.ref_count == 1);
76 f4 = null;
77 assert (foo.ref_count == 1);
79 FooFuncTargetless f5 = func;
80 f5 = null;
82 var f6 = (FooFuncTargetless) func;
83 f6 = null;
85 unowned FooFuncTargetless f7 = func;
86 f7 = null;
88 unowned FooFuncTargetless f8 = (FooFuncTargetless) func;
89 f8 = null;