// RUN: %target-typecheck-verify-swift -swift-version 4 let x: Int = 1 let y: Int = x.self let int: Int.Type = Int.self // SE-0071 - Allow (most) keywords in member references // https://github.com/apple/swift-evolution/blob/master/proposals/0071-member-keywords.md struct SE0071Struct { var `default` : Int } func f1(a : SE0071Struct) -> Int { return a.default } func f2(a : SE0071Struct) -> Int { return a.`default` } enum SE0071Enum { case `case` } func f2() -> SE0071Enum { return .case } class SE0071Base { func `default`() {} } class SE0071Derived : SE0071Base { func zonk() { super.default() } } // SR-3043: Diagnostics when accessing deinit class SR3043Base { } class SR3043Derived: SR3043Base { deinit { super.deinit() // expected-error {{deinitializers cannot be accessed}} } } let sr3043 = SR3043Derived() sr3043.deinit() // expected-error {{deinitializers cannot be accessed}} sr3043.deinit // expected-error {{deinitializers cannot be accessed}} SR3043Derived.deinit() // expected-error {{deinitializers cannot be accessed}} // Allow deinit functions in classes class ClassWithDeinitFunc { func `deinit`() { } func `deinit`(a: SR3043Base) { } } let instanceWithDeinitFunc = ClassWithDeinitFunc() instanceWithDeinitFunc.deinit() _ = instanceWithDeinitFunc.deinit(a:) _ = instanceWithDeinitFunc.deinit as () -> Void SR3043Derived.deinit() // expected-error {{deinitializers cannot be accessed}} class ClassWithDeinitMember { var `deinit`: SR3043Base? } let instanceWithDeinitMember = ClassWithDeinitMember() _ = instanceWithDeinitMember.deinit // SR-5715 : Fix variable name in nested static value struct SR5715 { struct A { struct B {} } } extension SR5715.A.B { private static let x: Int = 5 func f() -> Int { return x // expected-error {{static member 'x' cannot be used on instance of type 'SR5715.A.B'}} {{12-12=SR5715.A.B.}} } } // Static function in protocol should have `Self.` instead of its protocol name protocol P {} extension P { static func f() {} func g() { f() // expected-error {{static member 'f' cannot be used on instance of type 'Self'}} {{5-5=Self.}} } }