[swift-evolution] [Proposal] Explicit Synthetic Behaviour
brent at architechies.com
Wed Sep 6 18:11:25 CDT 2017
> On Sep 5, 2017, at 1:02 PM, Haravikk via swift-evolution <swift-evolution at swift.org> wrote:
> This proposal idea is essentially for a new attribute @synthetic (name is up for debate). This attribute is required for any default implementation that includes reflective type compiler magic, use of the reflection API against `self` or, in future, any native Swift macros within the method (possibly limited to specific features, will depend on the macro language and its capabilities).
"Use of the reflection API against `self`"? `String(describing:)` and `String(reflecting:)` sometimes do that.
I see zero justification for having @synthetic cover all of these random things, but not ordinary default implementations—they have the same amount of dangerous implicitness. And I think we agree that using default methods only when @synthetic is specified is a non-starter, if only because default methods are a backwards compatibility tool for library evolution.
We should show these pseudo-default methods in the generated interface for the module and be done with it. They only seem scary right now because people haven't had time to grow comfortable with them.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution