Hi Drew, > On Jan 5, 2016, at 12:08 AM, Drew Crawford <d...@sealedabstract.com> wrote: > > >> On Jan 4, 2016, at 3:09 PM, Tony Parker <anthony.par...@apple.com >> <mailto:anthony.par...@apple.com>> wrote: >> >> In this particular case, how would you use the #if? Any should be source >> compatible with AnyObject, since Any is a superset of AnyObject, right? > > Well I don't know what you mean by "compatible" but the thing about strongly > typed languages is we can't do > > let a: Any > > foo(a: AnyObject) { /* */ } > > foo(a) > > because that is "type error". We can of course cast, but if in Darwin a.self > is already AnyObject, casting again to AnyObject produces a warning, and I > try to not have any warnings in my code. > > This is kind of a side quest–there are a lot of ways to work around these > problems–but the obviously straightforward one was to use #if to > conditionally cast, and that wasn't available. > > More broadly I find myself using the #if that I've created very often–my > workflow seems to be to create an extension on an NSClass in-file that adds > missing functionality and then PR it to corelibs-foundation afterwards–and > conditional compilation really helps with that workflow.
My main objection is that I don’t want us to require clients to #if at all, in the long term. Putting it in now means that it will be easier to say “just #if” instead of fixing the underlying source incompatibility problem. I think that if we get to a time nearer to the finish line of Swift 3 and we still have many source incompatible changes between the Core Libs Foundation and a corresponding Darwin Foundation then we should introduce something like the #if. - Tony
_______________________________________________ swift-corelibs-dev mailing list swift-corelibs-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-corelibs-dev