I've pretty much rewritten the propsal 
(https://gist.github.com/charlieMonroe/82e1519dd2b57029f69bc7abe99d7385) to use 
casting to `as Any` instead of the formally suggested `.debugDescription` or 
`.description` to silence the warning.

It also includes `Uninterpolable` protocol that `Optional` conforms to and you 
can hence deprecate interpolation of your own types.

Questions, however:

- `Uninterpolable` seems too restrictive a name - it's not that the type 
*can't* be used for interpolation, but it is discouraged from being used for 
interpolation. Any ideas for better names?

- Should the deprecation of interpolation of `Uninterpolable` be declared:
        - on `String`, thus allowing custom `StringInterpolationConvertible` 
classes to still use the `Uninterpolable` for interpolation, or
        - as an extension of `StringInterpolationConvertible`, thus disallowing 
interpolation of all `Uninterpolable` types.

I personally prefer the latter as you always can force the interpolation using 
`as Any`. Thoughts?
 
Charlie

> On May 24, 2016, at 1:23 AM, Chris Lattner <clatt...@apple.com> wrote:
> 
> 
>> On May 23, 2016, at 12:12 PM, Charlie Monroe via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>>> If the URL path property was defined not to return ‘String?' but to return 
>>> ‘Any’ (which can of course hold an Optional just like it can hold any other 
>>> type) what would the proposed compiler behavior be?
>> 
>> No warning. Since you cast Optional to Any, no warning can even be issued 
>> since that will eventually be determined during runtime, there's not much 
>> the compiler can do here.
> 
> I agree.  It is important for optionals to be string literal convertible in 
> generic situations as well as when boxed in an existential like Any.  That 
> said, emitting a warning when the compiler knows statically that it has an 
> optional makes a lot of sense.
> 
> -Chris

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to