mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Consider: 1. File struct.swift defining `struct Struct` with `static func max` member 2. File derivatives.swift defining `extension Struct` with custom derivative of the `max` function 3. File error.swift defining a differentiable function which uses `Struct.max`. Previously, when passing error.swift as primary file and derivatives.swift as a secondary file to swift-frontend (and forgetting to pass struct.swift as a secondary file as well), an assertion failure was triggered. This patch fixes the issue by adding a check against `ErrorType` in `findAutoDiffOriginalFunctionDecl` before calling `lookupMember`. Co-authored-by: Anton Korobeynikov <anton@korobeynikov.info>
11 lines
380 B
Swift
11 lines
380 B
Swift
// RUN: %target-swift-frontend -emit-sil -verify -primary-file %s \
|
|
// RUN: %S/Inputs/derivatives.swift %S/Inputs/struct.swift -module-name main -o /dev/null
|
|
|
|
import _Differentiation
|
|
|
|
@differentiable(reverse)
|
|
func clamp(_ value: Double, _ lowerBound: Double, _ upperBound: Double) -> Double {
|
|
// No error expected
|
|
return Struct.max(min(value, upperBound), lowerBound)
|
|
}
|