Files
swift-mirror/validation-test/compiler_crashers_2_fixed/0186-rdar46497155.swift
Holly Borla 561e527848 [ConstraintSystem] Extend the ExplicitlySpecifyGenericArguments fix to cover
all cases of missing generic parameters.

In `ComponentStep::take` when there are no bindings or disjunctions, use hole
propagation to default remaining free type variables that aren't for generic
parameters and continue solving. Rather than using a defaultable constraint for
holes, assign a fixed type directly when we have no bindings to try.
2019-11-05 09:15:13 -08:00

33 lines
598 B
Swift

// RUN: %target-typecheck-verify-swift
protocol P {
func isEqual(_ other: P) -> Bool
}
struct A {
var value: P? = nil
}
struct B {
func foo() throws -> A {}
}
struct E {
func getB(_ flag: inout Bool) throws -> B {
return B()
}
}
func foo(arr: [E], other: P) -> Bool {
return arr.compactMap { i in
// expected-error@-1 {{generic parameter 'ElementOfResult' could not be inferred}}
var flag = false
return try? i.getB(&flag)
}.compactMap { u -> P? in
guard let a = try? u.foo() else { return nil }
return a.value!
}.contains {
$0.isEqual(other)
}
}