struct S {
let count = 1
}
public class CC {
func foo(_ s : S) -> Int {
if s.count > 0 {
return 1
} else {
return 0
}
}
func getSelf() -> CC {
return self
}
func getSelf(_ i : Int) -> CC {
return self
}
}
func foo1(_ c : CC) -> CC{
_ = c.getSelf().getSelf().getSelf().getSelf()
_ = c.getSelf(1).getSelf(1).getSelf(1).getSelf(1)
return c.getSelf()
}
protocol Foo {
var bar: String { get }
}
func foo(x: Foo) {
_ = x.bar
}
func testWithoutActuallyEscaping(closure: (Int) -> Void) {
withoutActuallyEscaping(closure) { escapable in
_ = escapable
}
}
// https://github.com/apple/swift/issues/55403
class C2 {
static let main = C2()
}
func bar(x: C2 = .main) {}
// RUN: %target-swift-ide-test -range -pos=7:8 -end-pos=7:19 -source-filename %s | %FileCheck %s -check-prefix=CHECK-BOOL
// CHECK-BOOL: Bool
// RUN: %target-swift-ide-test -range -pos=22:39 -end-pos=22:48 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR
// RUN: %target-swift-ide-test -range -pos=22:29 -end-pos=22:38 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR
// RUN: %target-swift-ide-test -range -pos=22:19 -end-pos=22:28 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR
// RUN: %target-swift-ide-test -range -pos=22:9 -end-pos=22:18 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR
// RUN: %target-swift-ide-test -range -pos=23:42 -end-pos=23:52 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR1
// RUN: %target-swift-ide-test -range -pos=23:31 -end-pos=23:41 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR1
// RUN: %target-swift-ide-test -range -pos=23:20 -end-pos=23:30 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR1
// RUN: %target-swift-ide-test -range -pos=23:9 -end-pos=23:19 -source-filename %s | %FileCheck %s -check-prefix=CHECK-PART-EXPR1
// RUN: %target-swift-ide-test -range -pos=31:7 -end-pos=31:12 -source-filename %s | %FileCheck %s -check-prefix=CHECK-OEE-EXPR
// RUN: %target-swift-ide-test -range -pos=35:1 -end-pos=38:1 -source-filename %s | %FileCheck %s -check-prefix=CHECK-MTEE-EXPR-1
// RUN: %target-swift-ide-test -range -pos=35:27 -end-pos=35:34 -source-filename %s | %FileCheck %s -check-prefix=CHECK-MTEE-EXPR-2
// RUN: %target-swift-ide-test -range -pos=35:36 -end-pos=37:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-MTEE-EXPR-3
// RUN: %target-swift-ide-test -range -pos=45:18 -end-pos=45:23 -source-filename %s | %FileCheck %s -check-prefix=CHECK-DEFAULT-ARGUMENT
// CHECK-PART-EXPR: PartOfExpression
// CHECK-PART-EXPR-NEXT: getSelf()
// CHECK-PART-EXPR-NEXT: swift_ide_test.(file).foo1(_:)
// CHECK-PART-EXPR-NEXT: Call
// CHECK-PART-EXPR-NEXT: 1
// CHECK-PART-EXPR-NEXT:
// CHECK-PART-EXPR1: PartOfExpression
// CHECK-PART-EXPR2: getSelf(1)
// CHECK-PART-EXPR2: swift_ide_test.(file).foo1(_:)
// CHECK-PART-EXPR2: Call
// CHECK-PART-EXPR2: 2
// CHECK-PART-EXPR2:
// CHECK-OEE-EXPR: SingleExpression
// CHECK-OEE-EXPR-NEXT: x.bar
// CHECK-OEE-EXPR-NEXT: Stringfalse
// CHECK-OEE-EXPR-NEXT: swift_ide_test.(file).foo(x:)
// CHECK-OEE-EXPR-NEXT: 1
// CHECK-OEE-EXPR-NEXT:
// CHECK-MTEE-EXPR-1: SingleExpression
// CHECK-MTEE-EXPR-1-NEXT: withoutActuallyEscaping(closure) { escapable in
// CHECK-MTEE-EXPR-1-NEXT: _ = escapable
// CHECK-MTEE-EXPR-1-NEXT: }
// CHECK-MTEE-EXPR-1-NEXT: ()false
// CHECK-MTEE-EXPR-1-NEXT: swift_ide_test.(file).testWithoutActuallyEscaping(closure:)
// CHECK-MTEE-EXPR-1-NEXT: escapablefalse
// CHECK-MTEE-EXPR-1-NEXT: closure(Int) -> Void
// CHECK-MTEE-EXPR-1-NEXT: escapable(Int) -> Void
// CHECK-MTEE-EXPR-1-NEXT: 1
// CHECK-MTEE-EXPR-1-NEXT:
// CHECK-MTEE-EXPR-2: SingleExpression
// CHECK-MTEE-EXPR-2-NEXT: closure
// CHECK-MTEE-EXPR-2-NEXT: (Int) -> Voidfalse
// CHECK-MTEE-EXPR-2-NEXT: swift_ide_test.(file).testWithoutActuallyEscaping(closure:)
// CHECK-MTEE-EXPR-2-NEXT: closure(Int) -> Void
// CHECK-MTEE-EXPR-2-NEXT: 1
// CHECK-MTEE-EXPR-2-NEXT:
// CHECK-MTEE-EXPR-3: SingleExpression
// CHECK-MTEE-EXPR-3-NEXT: { escapable in
// CHECK-MTEE-EXPR-3-NEXT: _ = escapable
// CHECK-MTEE-EXPR-3-NEXT: }
// CHECK-MTEE-EXPR-3-NEXT: (@escaping (Int) -> Void) -> ()false
// CHECK-MTEE-EXPR-3-NEXT: swift_ide_test.(file).testWithoutActuallyEscaping(closure:)
// CHECK-MTEE-EXPR-3-NEXT: escapablefalse
// CHECK-MTEE-EXPR-3-NEXT: escapable(Int) -> Void
// CHECK-MTEE-EXPR-3-NEXT: 1
// CHECK-MTEE-EXPR-3-NEXT:
// CHECK-DEFAULT-ARGUMENT: SingleExpression
// CHECK-DEFAULT-ARGUMENT-NEXT: .main
// CHECK-DEFAULT-ARGUMENT-NEXT: C2false
// CHECK-DEFAULT-ARGUMENT-NEXT: swift_ide_test.(file).bar(x:)
// CHECK-DEFAULT-ARGUMENT-NEXT: 1
// CHECK-DEFAULT-ARGUMENT-NEXT: