struct S1 {} func foo1(a: S1) {} class C1 {} func foo2(c : C1) {} enum new_e1 {} func foo3(e : new_e1) {} func foo4(a : S1, b : C1, c: new_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)