// RUN: %target-swift-ide-test -annotate -source-filename %s | FileCheck %s // CHECK: import struct Swift.Int import struct Swift.Int // CHECK: import func Swift.print_new import func Swift.print_new // CHECK: struct S { // CHECK-NEXT: var x: Int = 0 // CHECK-NEXT: var y: Swift.Int = 0 // CHECK-NEXT: } struct S { var x: Int = 0 var y: Swift.Int = 0 } // CHECK: typealias TypealiasForS = S typealias TypealiasForS = S func test6(p: S) { // CHECK: p.x + 0 p.x + 0 } // CHECK: struct PropagatedTypesInPatterns { // CHECK-NEXT: var a, b: Int // CHECK-NEXT: var c: Int, d, e: Double // CHECK-NEXT: var f, g, h: Int, i: Float, j, k, l, m: Double // CHECK-NEXT: var (x, y): (Int, Float) // CHECK-NEXT: } struct PropagatedTypesInPatterns { var a, b: Int var c: Int, d, e: Double var f, g, h: Int, i: Float, j, k, l, m: Double var (x, y): (Int, Float) } // CHECK: class MyCls { // CHECK: var www : Int // CHECK: func foo(x : Int) {} // CHECK: } class MyCls { var www : Int = 0 func foo(x : Int) {} } // CHECK: func foo(n : Float) -> Int { // CHECK: var q = MyCls() // CHECK: var ee = "yoo"; // CHECK: return 100009 // CHECK: } func foo(n : Float) -> Int { var q = MyCls() var ee = "yoo"; return 100009 } // CHECK-LABEL: protocol Prot { // CHECK-NEXT: typealias Blarg // CHECK-NEXT: func protMeth(x: Int) // CHECK-NEXT: var protocolProperty1: Int { get } // CHECK-NEXT: var protocolProperty2: Int { get set } // CHECK-NEXT: } protocol Prot { typealias Blarg func protMeth(x: Int) var protocolProperty1: Int { get } var protocolProperty2: Int { get set } } // CHECK: protocol Prot2 {} protocol Prot2 {} // CHECK: class SubCls : MyCls, Prot { // CHECK: typealias Blarg = Prot2 // CHECK: func protMeth(x: Int) {} // CHECK: } class SubCls : MyCls, Prot { typealias Blarg = Prot2 func protMeth(x: Int) {} var protocolProperty1 = 0 var protocolProperty2 = 0 } // CHECK: func genFn<T : Prot where T.Blarg : Prot2>(p : T) -> Int {}{{$}} func genFn(p : T) -> Int {} func test(x: Int) { // CHECK: genFn(SubCls()) genFn(SubCls()) // CHECK: "This is string \(genFn({(a:Int) in SubCls()}(x))) interpolation" "This is string \(genFn({(a:Int) in SubCls()}(x))) interpolation" } // CHECK: func bar(x: Int) -> (Int, Float) { func bar(x: Int) -> (Int, Float) { // CHECK: TypealiasForS() TypealiasForS() } class C2 { typealias WW = Int var p = 0 func meth(x: Int) {} } func test2(x: C2) { // CHECK: x.meth(0) x.meth(0) } // CHECK: class GenCls<T> { class GenCls { // CHECK: init() {} init() {} // CHECK: subscript (i : Int, j : Int) -> Int { subscript (i : Int, j : Int) -> Int { get { // CHECK: return i + j return i + j } // CHECK: set(v) { set(v) { // CHECK: v + i - j v + i - j } } } func test2() { // CHECK: GenCls<Int>() GenCls() } func test3(name: Int, x: Int) { // CHECK: x = 0 name = 0; x = 0 } class C4 { class In { class func goo() {} class func foo() { // CHECK: In.goo() In.goo() // CHECK: C4.In.goo() C4.In.goo() // CHECK: C4.In() C4.In() } } } class GenC { class func foo() {} } func test4() { // CHECK: GenC<Int, TypealiasForS>.foo() GenC.foo() } class C5 {} protocol P5 {} // CHECK: extension C5 : P5 {} extension C5 : P5 {} extension Array : P5 {} // CHECK: extension Array : P5 {} extension Optional : P5 {} // CHECK: extension Optional : P5 {} extension ImplicitlyUnwrappedOptional : P5 {} // CHECK: extension ImplicitlyUnwrappedOptional : P5 {} class C6 { func meth() { // CHECK: meth2() meth2() // CHECK: self.meth2() self.meth2(); } func meth2() {} } func test5() { var x: Int // CHECK: for i in 1..<100 { for i in 1..<100 { // CHECK: x = i x = i } } class C7 { var c7ivar: Int func meth(p: Undeclared) { // CHECK: c7ivar = 0 c7ivar = 0 } } class C8 { init(_ x: Int) { // CHECK: self.init(1) self.init(1) } } class SubC8 : C8 { init(x: Int) { // CHECK: super.init(2) super.init(2) } } class Observers { func doit() {} var p1 : Int { // CHECK: willSet(newValue) { doit() } willSet(newValue) { doit() } // CHECK: didSet { doit() } didSet { doit() } } } class C9 {} // CHECK: func test6(o: AnyObject) { func test6(o: AnyObject) { // CHECK: let x = o as! C9 let x = o as! C9 } // CHECK: enum myCoolEnum { enum myCoolEnum { // CHECK: case water case water // CHECK-NEXT: case case } // rdar://19614869, do not crash class E { lazy var u: T { return 1 } } class C10 { init(int: Int, andThis: Float) {} func meth(x: Int, withFloat: Float) {} } // CHECK: var c10 = C10(int: 0, andThis: 0) var c10 = C10(int: 0, andThis: 0) // CHECK: c10.meth(0, withFloat: 0) c10.meth(0, withFloat: 0) func test7(int x: Int, andThis y: Float) {} // CHECK: test7(int: 0, andThis: 0) test7(int: 0, andThis: 0) func test8(x: T) {} // CHECK: func test8<T : Prot2>(x: T) {}{{$}} class C11 { // CHECK: var a: Int = { var tmp = 0; return tmp }() var a: Int = { var tmp = 0; return tmp }() // CHECK: lazy var b: Int = { var tmp = 0; return tmp }() lazy var b: Int = { var tmp = 0; return tmp }() // CHECK: var c: Int { get { {var tmp = 0; return tmp}() } } var c: Int { get { {var tmp = 0; return tmp}() } } } // CHECK: var g1 = { (x: Int) -> Int in return 0 } var g1 = { (x: Int) -> Int in return 0 } class C12 { class Inn {} typealias AliasInn = Inn } typealias AliasC12 = C12 // CHECK: extension C12.Inn {} extension C12.Inn {} // CHECK: extension AliasC12.AliasInn {} extension AliasC12.AliasInn {} typealias AliasPH = C12 func testPH(x: Int) {} func testPH(x: AliasPH) {} // CHECK: testPH(<#T##x: AliasPH##AliasPH##C12#>) testPH(<#T##x: AliasPH##AliasPH##C12#>) class NumberTooLarge {} // CHECK: guard case let error as NumberTooLarge = NumberTooLarge() else {} guard case let error as NumberTooLarge = NumberTooLarge() else {} // CHECK: testMod(x: Swift.String) { func testMod(x: Swift.String) { // CHECK: let x = Swift let x = Swift } func +(a: C12, b: C12) {} func test9(a: C12, b: C12) { // CHECK: a+b a+b } func test10(a: [Int], i: Int) { // CHECK: a[i] a[i] } class CWS { subscript (i : Int, j : Int) -> Int { return 0 } } func test11(a: CWS, i: Int) { // CHECK: a[i,i] a[i,i] } // CHECK: func test_defer() { func test_defer() { defer { // CHECK: test_defer() test_defer() } }