func foo() -> Int{
var aaa = 1 + 2
aaa = aaa + 3
if aaa == 3 { aaa = 4 }
return aaa
}
func foo1() -> Int { return 0 }
class C { func foo() {} }
struct S { func foo() {} }
// MARK: - Something
struct Something{
internal func foo() {
#if os(tvOS)
let blah = 42
#else
let blah = 0
#endif
return blah
}
}
// RUN: %sourcekitd-test -req=range -pos=2:13 -length 5 %s -- %s | %FileCheck %s -check-prefix=CHECK1
// RUN: %sourcekitd-test -req=range -pos=3:3 -length 13 %s -- %s | %FileCheck %s -check-prefix=CHECK2
// RUN: %sourcekitd-test -req=range -pos=3:1 -length 15 %s -- %s | %FileCheck %s -check-prefix=CHECK2
// RUN: %sourcekitd-test -req=range -pos=4:1 -length 25 %s -- %s | %FileCheck %s -check-prefix=CHECK3
// RUN: %sourcekitd-test -req=range -pos=4:1 -length 26 %s -- %s | %FileCheck %s -check-prefix=CHECK3
// RUN: %sourcekitd-test -req=range -pos=4:1 -length 27 %s -- %s | %FileCheck %s -check-prefix=CHECK3
// RUN: %sourcekitd-test -req=range -pos=5:1 -length 12 %s -- %s | %FileCheck %s -check-prefix=CHECK4
// RUN: %sourcekitd-test -req=range -pos=5:2 -length 11 %s -- %s | %FileCheck %s -check-prefix=CHECK4
// RUN: %sourcekitd-test -req=range -pos=8:1 -length 31 %s -- %s | %FileCheck %s -check-prefix=CHECK5
// RUN: %sourcekitd-test -req=range -pos=9:1 -length 25 %s -- %s | %FileCheck %s -check-prefix=CHECK6
// RUN: %sourcekitd-test -req=range -pos=10:1 -length 26 %s -- %s | %FileCheck %s -check-prefix=CHECK7
// RUN: %sourcekitd-test -req=range -pos=3:1 -length 42 %s -- %s | %FileCheck %s -check-prefix=CHECK8
// RUN: %sourcekitd-test -req=range -pos=3:1 -length 55 %s -- %s | %FileCheck %s -check-prefix=CHECK9
// RUN: %sourcekitd-test -req=range -pos=4:1 -length 36 %s -- %s | %FileCheck %s -check-prefix=CHECK10
// RUN: %sourcekitd-test -req=range -pos=8:1 -end-pos 8:32 %s -- %s | %FileCheck %s -check-prefix=CHECK5
// RUN: %sourcekitd-test -req=range -pos=9:1 -end-pos 9:26 %s -- %s | %FileCheck %s -check-prefix=CHECK6
// RUN: %sourcekitd-test -req=range -pos=10:1 -end-pos 10:27 %s -- %s | %FileCheck %s -check-prefix=CHECK7
// RUN: %sourcekitd-test -req=range -pos=3:1 -end-pos=4:26 %s -- %s | %FileCheck %s -check-prefix=CHECK8
// RUN: %sourcekitd-test -req=range -pos=3:1 -end-pos=5:13 %s -- %s | %FileCheck %s -check-prefix=CHECK9
// RUN: %sourcekitd-test -req=range -pos=4:1 -end-pos=5:13 %s -- %s | %FileCheck %s -check-prefix=CHECK10
// RUN: %sourcekitd-test -req=range -pos=12:4 -end-pos=12:21 %s -- %s | %FileCheck %s -check-prefix=CHECK11
// RUN: %sourcekitd-test -req=range -pos=14:12 -end-pos=21:4 %s -- %s | %FileCheck %s -check-prefix=CHECK12
// CHECK1-DAG: source.lang.swift.range.singleexpression
// CHECK1-DAG: 1 + 2
// CHECK1-DAG: Int
// CHECK2-DAG: source.lang.swift.range.singleexpression
// CHECK2-DAG: aaa = aaa + 3
// CHECK2-DAG: ()
// CHECK3-DAG: source.lang.swift.range.singlestatement
// CHECK3-DAG: if aaa == 3 { aaa = 4 }
// CHECK3-DAG:
// CHECK4-DAG: source.lang.swift.range.singlestatement
// CHECK4-DAG: return aaa
// CHECK4-DAG:
// CHECK5-DAG: source.lang.swift.range.singledeclaration
// CHECK5-DAG: func foo1() -> Int { return 0 }
// CHECK5-DAG:
// CHECK6-DAG: source.lang.swift.range.singledeclaration
// CHECK6-DAG: class C { func foo() {} }
// CHECK6-DAG:
// CHECK7-DAG: source.lang.swift.range.singledeclaration
// CHECK7-DAG: struct S { func foo() {} }
// CHECK7-DAG:
// CHECK8-DAG: source.lang.swift.range.multistatement
// CHECK8-DAG: aaa = aaa + 3
// CHECK8-DAG: if aaa == 3 { aaa = 4 }
// CHECK8-DAG:
// CHECK9-DAG: source.lang.swift.range.multistatement
// CHECK9-DAG: aaa = aaa + 3
// CHECK9-DAG: if aaa == 3 { aaa = 4 }
// CHECK9-DAG: return aaa
// CHECK9-DAG:
// CHECK10-DAG: source.lang.swift.range.multistatement
// CHECK10-DAG: if aaa == 3 { aaa = 4 }
// CHECK10-DAG: return aaa
// CHECK10-DAG:
// CHECK11-DAG: source.lang.swift.range.invalid
// CHECK11-DAG:
// CHECK11-DAG:
// CHECK12-DAG: source.lang.swift.range.invalid
// CHECK12-DAG:
// CHECK12-DAG: