Files
swift-mirror/test/SourceKit/CursorInfo/cursor_reuses_astcontext.swift
Ben Barham 5beeca7cf1 [CursorInfo] Prefer AST based results over solver based
Solver based results are fast within a function, where the `ASTContext`
can be re-used. But it is significantly slower than the AST based
results when outside of a function. Instead of using solver based as the
primary results, only use them as a fallback for when AST based fails.

Resolves rdar://108930110.
2023-05-04 20:53:38 -07:00

32 lines
1.0 KiB
Swift

func bar() -> Int { return 1 }
func bar() -> String { return "" }
// RUN: %sourcekitd-test -req=cursor -pos=%(line + 2):7 %s -- %s == -req=cursor -pos=%(line + 3):7 %s -- %s | %FileCheck %s --check-prefix IN-FUNCTION
func foo() {
_ = bar()
_ = bar()
}
// IN-FUNCTION: source.lang.swift.ref.function.free
// IN-FUNCTION-NEXT: bar
// IN-FUNCTION: DID REUSE AST CONTEXT: 0
// IN-FUNCTION: source.lang.swift.ref.function.free
// IN-FUNCTION-NEXT: bar
// IN-FUNCTION-NEXT: bar
// IN-FUNCTION: DID REUSE AST CONTEXT: 1
// RUN: %sourcekitd-test -req=cursor -pos=%(line + 3):9 %s -- %s == -req=cursor -pos=%(line + 4):9 %s -- %s | %FileCheck %s --check-prefix IN-INSTANCE-METHOD
struct MyStruct {
func test() {
_ = bar()
_ = bar()
}
}
// IN-INSTANCE-METHOD: source.lang.swift.ref.function.free
// IN-INSTANCE-METHOD-NEXT: bar
// IN-INSTANCE-METHOD: DID REUSE AST CONTEXT: 0
// IN-INSTANCE-METHOD: source.lang.swift.ref.function.free
// IN-INSTANCE-METHOD-NEXT: bar
// IN-INSTANCE-METHOD: DID REUSE AST CONTEXT: 1