mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[AutoDiff] Improve @derivative attribute diagnostics.
Previously, `@derivative` attribute type-checking produced a confusing error referencing unbound types `T` and `U`: ``` '@derivative(of:)' attribute requires function to return a two-element tuple of type '(value: T..., pullback: (U.TangentVector) -> T.TangentVector...)' or '(value: T..., differential: (T.TangentVector...) -> U.TangentVector)' ``` Now, the error is less confusing: ``` '@derivative(of:)' attribute requires function to return a two-element tuple; first element must have label 'value:' and second element must have label 'pullback:' or 'differential:' ```
This commit is contained in:
@@ -2972,18 +2972,18 @@ NOTE(protocol_witness_missing_differentiable_attr,none,
|
||||
// @derivative
|
||||
ERROR(derivative_attr_expected_result_tuple,none,
|
||||
"'@derivative(of:)' attribute requires function to return a two-element "
|
||||
"tuple of type '(value: T..., pullback: (U.TangentVector) -> T.TangentVector...)' "
|
||||
"or '(value: T..., differential: (T.TangentVector...) -> U.TangentVector)'", ())
|
||||
"tuple; first element must have label 'value:' and second element must "
|
||||
"have label 'pullback:' or 'differential:'", ())
|
||||
ERROR(derivative_attr_invalid_result_tuple_value_label,none,
|
||||
"'@derivative(of:)' attribute requires function to return a two-element "
|
||||
"tuple (first element must have label 'value:')", ())
|
||||
"tuple; first element must have label 'value:'", ())
|
||||
ERROR(derivative_attr_invalid_result_tuple_func_label,none,
|
||||
"'@derivative(of:)' attribute requires function to return a two-element "
|
||||
"tuple (second element must have label 'pullback:' or 'differential:')",
|
||||
"tuple; second element must have label 'pullback:' or 'differential:'",
|
||||
())
|
||||
ERROR(derivative_attr_result_value_not_differentiable,none,
|
||||
"'@derivative(of:)' attribute requires function to return a two-element "
|
||||
"tuple (first element type %0 must conform to 'Differentiable')", (Type))
|
||||
"tuple; first element type %0 must conform to 'Differentiable'", (Type))
|
||||
ERROR(derivative_attr_result_func_type_mismatch,none,
|
||||
"function result's %0 type does not match %1", (Identifier, DeclName))
|
||||
NOTE(derivative_attr_result_func_type_mismatch_note,none,
|
||||
|
||||
Reference in New Issue
Block a user