[AutoDiff upstream] Relax @differentiable
for protocol witnesses.
#30629
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, all witnesses of a
@differentiable
protocol requirement wererequired to have the same attribute (or one with superset parameter indices).
However, this leads to many annotations on witnesses and is not ideal for
usability.
@differentiable
attributes are really only significant onpublic witnesses, so that they are clearly
@differentiable
at a glance (insource code, interface files, and API documentation), without looking through
protocol conformance hierarchies.
Now, only public witnesses of
@differentiable
protocol requirements arerequired to have the same attribute (or one with superset parameter indices).
For less-visible witnesses, an implicit
@differentiable
attribute is createdwith the same configuration as the requirement's.
Resolves TF-1117.
Upstreams #29771 from
tensorflow
branch.Example:
Before (misleading diagnostic due to TF-1014):
After: no error.
An implicit
@differentiable
attribute is created forDummyInternalLayer.callAsFunction
: