[swift-evolution] [Pitch] Parse expressions after 'as' and 'is' instead of just types
Dan Appel
dan.appel00 at gmail.com
Mon May 16 19:49:47 CDT 2016
Just to clarify: in your example, did you mean for DerivedA and DerivedB to
inherit from Base?
On Mon, May 16, 2016 at 4:18 PM Matthew Johnson via swift-evolution <
swift-evolution at swift.org> wrote:
> +1
>
> Sent from my iPhone
>
> > On May 16, 2016, at 4:06 PM, Joe Groff via swift-evolution <
> swift-evolution at swift.org> 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?
> >
> > -Joe
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution at swift.org
> > https://lists.swift.org/mailman/listinfo/swift-evolution
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
--
Dan Appel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160517/49f43804/attachment.html>
More information about the swift-evolution
mailing list