// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s // rdar://20532214 -- Wrong code for witness method lookup lets executable crash public protocol P1 { func foo(_ rhs: Self) -> Bool } public protocol P2 { associatedtype Index : P1 var startIndex: Index {get} } public protocol P3 : P1 {} public struct C3 : P3 { public func foo(_ rhs: C3) -> Bool { return true } } public struct C2 : P2 { public var startIndex: C3 { return C3() } } extension P2 where Self.Index : P3 { public var bar: Bool { let i = startIndex return i.foo(i) } } let s = C2() s.bar // CHECK: call {{.*}} @"$s29protocol_extensions_constrain2C3VAA2P3AAWP"