blob: d4315a962552f551bbd392445e2464296b88ca47 [file] [log] [blame]
// RUN: %target-swift-frontend -typecheck -verify %s
protocol P {}
public protocol HasRequirement {
@differentiable
// expected-note @+1 {{protocol requires function 'requirement' with type '<T> (T, T) -> T'; do you want to add a stub?}}
func requirement<T: Differentiable>(_ x: T, _ y: T) -> T
}
// expected-error @+1 {{type 'AttemptsToSatisfyRequirement' does not conform to protocol 'HasRequirement'}}
public struct AttemptsToSatisfyRequirement: HasRequirement {
// This does not satisfy the requirement because the differentiable attribute is more
// constrained than the requirement's differentiable attribute.
@differentiable(where T: P)
// expected-note @+1 {{candidate is missing explicit '@differentiable(wrt: (x, y))' attribute to satisfy requirement 'requirement' (in protocol 'HasRequirement')}}
public func requirement<T: Differentiable>(_ x: T, _ y: T) -> T { x }
}