1const string[] FOO = { "foo", "bar" };
2
3unowned string[] transfer_none () {
4	return FOO;
5}
6
7(unowned string)[] transfer_container () {
8	return FOO;
9}
10
11string[] transfer_full () {
12	return FOO;
13}
14
15void main () {
16	var bar = FOO;
17
18	for (int i = 0; i < 42; i++) {
19		string[] baz = bar;
20	}
21
22	for (int i = 0; i < 42; i++) {
23		unowned string[] a = transfer_none ();
24		assert ("foo" in a);
25		assert ("bar" in a);
26	}
27
28	for (int i = 0; i < 42; i++) {
29		(unowned string)[] a = transfer_container ();
30		assert ("foo" in a);
31		assert ("bar" in a);
32	}
33
34	for (int i = 0; i < 42; i++) {
35		string[] a = transfer_full ();
36		assert ("foo" in a);
37		assert ("bar" in a);
38	}
39
40	assert ("foo" in FOO);
41	assert ("bar" in FOO);
42}
43