Files
swift-mirror/test/Index/invalid_code.swift
Slava Pestov fa4f7dd664 Parse: Don't create PatternBindingDecls with overlapping source ranges
This was happening in the error recovery path when parsing accessors
on a pattern binding declaration that does not bind any variables, eg

let _: Int { 0 }
2020-09-22 00:16:54 -04:00

51 lines
1.4 KiB
Swift

// RUN: %target-swift-ide-test -print-indexed-symbols -include-locals -source-filename %s | %FileCheck %s
var _: Int { get { return 1 } }
func test() {
for o in allObjects {
_ = o.something // don't crash
}
}
class CrashTest {
var something = 0
func returnSelf(_ h: [AnyHashable: Any?]) -> CrashTest {
return self
}
init() { }
}
// CHECK: [[@LINE+1]]:13 | instance-method/Swift | returnSelf
CrashTest().returnSelf(["": 0]).something
class CrashTest2 {
// CHECK: [[@LINE+1]]:8 | instance-method/Swift | bar
func bar() {
someClosure { [weak self] in
guard let sSelf = self else { return }
let newDataProvider = Foo()
newDataProvider.delegate = sSelf
}
}
}
public struct BadCollection: Collection {
public var startIndex: Index { }
public var endIndex: Index { }
public func index(after index: Index) -> Index { }
public subscript(position: Index) -> Element { }
}
struct Protector<T> {}
extension Protector where T: RangeReplaceableCollection {
func append(_ newElement: T.Iterator.Element) {
undefined { (foo: T) in
// CHECK: [[@LINE-1]]:18 | param(local)/Swift | foo | {{.*}} | Def,RelChild
// CHECK: [[@LINE-2]]:18 | function/acc-get(local)/Swift | getter:foo | {{.*}} | Def,Impl,RelChild,RelAcc
// CHECK: [[@LINE-3]]:18 | function/acc-set(local)/Swift | setter:foo | {{.*}} | Def,Impl,RelChild,RelAcc
_ = newElement
}
}
}