<div dir="ltr">On Mon, Feb 13, 2017 at 11:53 PM, Rod Brown <span dir="ltr">&lt;<a href="mailto:rodney.brown6@icloud.com" target="_blank">rodney.brown6@icloud.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto"><div>I think the biggest problem we&#39;re going to face with this one is changes to Objective-C are out of scope for Swift Evolution. Apple tend to be the ones in control of the development of new Objective-C features and compatibility because they control the compiler.</div></div></blockquote><div><br></div><div>I don’t think that Objective-C changes are out of bounds when Swift is involved—see my past, accepted proposal at <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0033-import-objc-constants.md">SE-0033</a>.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto"><div id="gmail-m_-8936043654950753604AppleMailSignature">That said, as a request to Apple for this change, I think it&#39;s a reasonable idea for Ints, but I&#39;m not sure of its feasibility for other types. Could the API be descriptive enough to cover enough types? (Eg CGRectNull)<br></div></div></blockquote><div><br></div><div>It’s an open-and-shut case for any standard primitive, but structs like <font face="monospace, monospace">CGRect</font> are where it starts to get tricky. I see that <font face="monospace, monospace">CGRect</font> conforms to <font face="monospace, monospace">Equatable</font> when it’s imported into Swift; perhaps that could be enough for this to work? If the translation to and from <font face="monospace, monospace">nil</font> happens in the Swift side, I can see <font face="monospace, monospace">Equatable</font> as a reasonable requirement for the type.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto"><div id="gmail-m_-8936043654950753604AppleMailSignature"></div><div><div class="gmail-h5"><div id="gmail-m_-8936043654950753604AppleMailSignature">On 14 Feb 2017, at 2:33 pm, Jeff Kelley via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br></div><div><br></div><blockquote type="cite"><div><div dir="ltr">Hi all,<div><br></div><div><span class="gmail-m_-8936043654950753604gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>I don’t have a formal proposal written up yet, but in my continued quest to make better-annotated Objective-C code, I had an idea for bridging <font face="monospace, monospace">nil</font> with primitives. Since in Objective-C we often use constant values to represent invalid values or <font face="monospace, monospace">nil</font>, the most obvious being <font face="monospace, monospace">NSNotFound</font>, could we use that as a shorthand for <font face="monospace, monospace">nil</font>? Something like this for <font face="monospace, monospace">NSArray</font>:</div><div><br></div><div><font face="monospace, monospace">- (NSUInteger NS_SWIFT_NIL(NSNotFound))<wbr>indexOfObject:(ObjectType)<wbr>anObject;</font></div><div><br></div><div><span class="gmail-m_-8936043654950753604gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>This is a little verbose, so it could also work with a <font face="monospace, monospace">typedef</font>:</div><div><br></div><div><font face="monospace, monospace">typedef NSUInteger NS_SWIFT_NIL(NSNotFound) NSArrayIndex;</font></div><div><font face="monospace, monospace">- (NSArrayIndex)indexOfObject:(<wbr>ObjectType)anObject;</font><br></div><div><br></div><div><span class="gmail-m_-8936043654950753604Apple-tab-span" style="white-space:pre-wrap">        </span>This would change the existing Swift interface to return an <font face="monospace, monospace">Int?</font> instead of an <font face="monospace, monospace">Int</font>. I see this as working both ways—converting these values to <font face="monospace, monospace">nil</font> when returning from Objective-C to Swift, and sending these values instead of <font face="monospace, monospace">nil</font> when Swift calls into Objective-C code.</div><div><br></div><div><span class="gmail-m_-8936043654950753604Apple-tab-span" style="white-space:pre-wrap">        </span>Is this worth writing up a proposal for? Is another, better method already in someone’s mind?</div><div><br clear="all"><div><div class="gmail-m_-8936043654950753604gmail_signature"><div dir="ltr"><div style="font-family:helvetica"><br></div><div style="font-family:helvetica">Jeff Kelley</div><div style="font-family:helvetica"><br></div><div style="font-family:helvetica"><a href="mailto:SlaunchaMan@gmail.com" style="color:rgb(17,85,204)" target="_blank">SlaunchaMan@gmail.com</a> | <a href="https://twitter.com/SlaunchaMan" style="color:rgb(17,85,204)" target="_blank">@<wbr>SlaunchaMan</a> | <a href="http://jeffkelley.org/" style="color:rgb(17,85,204)" target="_blank">jeffkelley.org</a></div></div></div></div></div></div></div></blockquote></div></div></div></blockquote></div><br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div style="font-family:helvetica"><br></div><div style="font-family:helvetica">Jeff Kelley</div><div style="font-family:helvetica"><br></div><div style="font-family:helvetica"><a href="mailto:SlaunchaMan@gmail.com" target="_blank">SlaunchaMan@gmail.com</a> | <a href="https://twitter.com/SlaunchaMan" target="_blank">@SlaunchaMan</a> | <a href="http://jeffkelley.org/" target="_blank">jeffkelley.org</a></div></div></div></div><br></div></div>