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 resource fallible { 46 constructor() -> result<fallible, string>; 47 } 48} 49 50world the-world { 51 import resources; 52 53 resource world-resource { 54 constructor(); 55 56 foo: func(); 57 static-foo: static func(); 58 } 59 60 import some-world-func: func() -> world-resource; 61 export some-world-func2: func() -> world-resource; 62 63 export uses-resource-transitively; 64 65 import long-use-chain4; 66} 67 68interface transitive-interface-with-resource { 69 resource foo; 70} 71 72interface uses-resource-transitively { 73 use transitive-interface-with-resource.{foo}; 74 75 handle: func(x: foo); 76} 77 78interface long-use-chain4 { 79 use long-use-chain3.{a}; 80 81 foo: func() -> a; 82} 83interface long-use-chain3 { 84 use long-use-chain2.{a}; 85} 86interface long-use-chain2 { 87 use long-use-chain1.{a}; 88} 89interface long-use-chain1 { 90 resource a; 91} 92