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