summaryrefslogtreecommitdiff
path: root/tests/methods/generics.vala
blob: 9b37aeeab31044f8c3f5910c09cb6287e8bcf20f (plain)
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
interface Foo : Object {
	public void foo<T> (owned T bar) {
	       bar = null;
	}
}

class Bar {
}

class Baz : Object, Foo {
}

void foo<T> (owned T bar) {
	bar = null;
}

bool is_check<G> () {
	var o = new Bar ();
	return o is G;
}

void main () {
	var bar = new Object ();
	foo<Object> (bar);
	assert (bar.ref_count == 1);

	var baz = new Baz ();
	baz.foo<Object> (bar);
	assert (baz.ref_count == 1);

	assert (is_check<Bar> ());
	assert (!is_check<Baz> ());
}