1package foo:foo; 2 3interface resources { 4 resource bar { 5 constructor(); 6 static-a: static func() -> u32; 7 method-a: func() -> u32; 8 } 9 10 bar-own-arg: func(x: own<bar>); 11 bar-borrow-arg: func(x: borrow<bar>); 12 bar-result: func() -> own<bar>; 13 14 tuple-own-arg: func(x: tuple<own<bar>, u32>); 15 tuple-borrow-arg: func(x: tuple<own<bar>, u32>); 16 tuple-result: func() -> tuple<own<bar>, u32>; 17 18 option-own-arg: func(x: option<own<bar>>); 19 option-borrow-arg: func(x: option<borrow<bar>>); 20 option-result: func() -> option<own<bar>>; 21 22 result-own-arg: func(x: result<own<bar>>); 23 result-borrow-arg: func(x: result<borrow<bar>>); 24 result-result: func() -> result<own<bar>>; 25 26 list-own-arg: func(x: list<own<bar>>); 27 list-borrow-arg: func(x: list<borrow<bar>>); 28 list-result: func() -> list<own<bar>>; 29 30 record nested-own { 31 nested-bar: own<bar> 32 } 33 34 record nested-borrow { 35 nested-bar: borrow<bar> 36 } 37 38 record-own-arg: func(x: nested-own); 39 record-borrow-arg: func(x: nested-borrow); 40 record-result: func() -> nested-own; 41 42 type some-handle = borrow<bar>; 43 func-with-handle-typedef: func(x: some-handle); 44} 45 46world the-world { 47 import resources; 48 49 resource world-resource { 50 constructor(); 51 52 foo: func(); 53 static-foo: static func(); 54 } 55 56 import some-world-func: func() -> world-resource; 57 export some-world-func2: func() -> world-resource; 58 59 export uses-resource-transitively; 60 61 import long-use-chain4; 62} 63 64interface transitive-interface-with-resource { 65 resource foo; 66} 67 68interface uses-resource-transitively { 69 use transitive-interface-with-resource.{foo}; 70 71 handle: func(x: foo); 72} 73 74interface long-use-chain4 { 75 use long-use-chain3.{a}; 76 77 foo: func() -> a; 78} 79interface long-use-chain3 { 80 use long-use-chain2.{a}; 81} 82interface long-use-chain2 { 83 use long-use-chain1.{a}; 84} 85interface long-use-chain1 { 86 resource a; 87} 88