1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
[Compact]
class Foo {
[DestroysInstance]
public int destroy () {
//FIXME No free possible due to broken sizeof(Foo)
// https://gitlab.gnome.org/GNOME/vala/issues/442
Slice.free (sizeof (int), this);
return 42;
}
}
void bar () throws Error {
}
Foo get_foo () {
return new Foo ();
}
class Bar {
Foo faz;
public void instance_simple () {
var foo = new Foo ();
var res = foo.destroy ();
assert (foo == null);
assert (res == 42);
}
public void instance_field () {
bar ();
faz = new Foo ();
var res = faz.destroy ();
assert (faz == null);
assert (res == 42);
}
}
Foo faz;
void field () {
bar ();
faz = new Foo ();
var res = faz.destroy ();
assert (faz == null);
assert (res == 42);
}
void local () {
bar ();
var foo = new Foo ();
var res = foo.destroy ();
assert (foo == null);
assert (res == 42);
}
void parameter (owned Foo foo) {
bar ();
var res = foo.destroy ();
assert (foo == null);
assert (res == 42);
}
void simple () {
var foo = new Foo ();
var res = foo.destroy ();
assert (foo == null);
assert (res == 42);
}
void returned () {
bar ();
var res = get_foo ().destroy ();
assert (res == 42);
}
void main () {
simple ();
field ();
local ();
parameter (new Foo ());
returned ();
var bar = new Bar ();
bar.instance_simple ();
bar.instance_field ();
}
|