on Mon May 16 2016, Joe Groff <[email protected]> wrote:

> Currently, we parse a type after 'as[?!]' and 'is'. This is mostly
> what you'd expect, but does lead to problems when an 'as' expression
> appears as part of a comparison:
>
>       20 as Int64 < y as Int64 // error, '>' expected to close generic 
> parameter list Int64<y>
>
> Looking to the future, many people have also expressed interest in the
> ability to do dynamic type checks against metatype values, not only
> static types, as in:
>
>       class Base {}
>       class DerivedA {}
>       class DerivedB {}
>
>       var x: Base.Type = DerivedA
>
>       DerivedA() as? x // succeeds
>       DerivedB() as? x // fails
>
> If we accept
> https://github.com/apple/swift-evolution/blob/master/proposals/0090-remove-dot-self.md,
> dropping the '.self' requirement to refer to type objects, then I
> think we should also change 'is' and 'as' to parse the expression
> grammar on their right-hand side, leaving it up to the normal
> expression disambiguation rule to handle angle brackets. This solves
> the '20 as Int64 < x' problem, and prepares us to support dynamic
> is/as queries in the future. (To be clear, designing dynamic queries
> should be its own discussion.) What do you all think?

+1

-- 
-Dave

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to