3 # Try making some traits
12 .class [trait] Frobbable {
15 .method [public] frob() {
28 .use Frobbable { frob as heh; }
32 .class [trait] PrivateFoo {
34 .method [private] foo() {
35 String "PrivateFoo::foo()\n"
42 .use PrivateFoo { foo as [public]; }
46 .class [trait] Conflicting {
49 .method [public] frob() {
50 String "Conflicting::Frobbed\n"
58 .use Conflicting Frobbable {
59 Conflicting::frob insteadof Frobbable;
60 Frobbable::frob as yo;
64 .function ["__EntryPoint"("""y:0:{}""")] main() {
69 FCallCtor <LockWhileUnwinding> 0 1 "" - "" ""
78 FCallObjMethodD <> 0 1 "" - "" "" NullThrows "frob"
85 FCallCtor <LockWhileUnwinding> 0 1 "" - "" ""
94 FCallObjMethodD <> 0 1 "" - "" "" NullThrows "heh"
101 FCallCtor <LockWhileUnwinding> 0 1 "" - "" ""
110 FCallObjMethodD <> 0 1 "" - "" "" NullThrows "foo"
117 FCallCtor <LockWhileUnwinding> 0 1 "" - "" ""
126 FCallObjMethodD <> 0 1 "" - "" "" NullThrows "frob"
132 FCallObjMethodD <> 0 1 "" - "" "" NullThrows "yo"