struct S1 {} func foo1(a: S1) {} class C1 {} func foo2(c : C1) {} enum E1 {} func foo3(e : E1) {} func foo4(a : S1, b : C1, c: E1) { foo4(a: a, b: b, c :c) } func test() { struct SLocal { init(x: S1) {} } func local(a: SLocal) {} local(a: SLocal(x: S1())) } guard let top = Optional.some("top") else { fatalError() } print(top) protocol P1 {} struct Test { var test: P1 { struct SP1: P1 {} return SP1() } }