+1

-----Original Message-----
From: "Joe Groff via swift-evolution" <swift-evolution@swift.org>
Sent: ‎16/‎05/‎2016 06:06 PM
To: "swift-evolution" <swift-evolution@swift.org>
Subject: [swift-evolution] [Pitch] Parse expressions after 'as' and 'is'instead 
of just types

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?

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

Reply via email to