<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Sep 27, 2017 at 12:23 PM, Jordan Rose <span dir="ltr">&lt;<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>&gt;</span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><div class="gmail-h5"><br></div></div><div>This is <i>definitely</i> a change that would need to go through swift-evolution. There are a number of potential issues and possibilities for breaking existing code that’s relying on this shadowing behavior, intentionally or unintentionally.</div><span class="gmail-HOEnZb"><font color="#888888"><div><br></div><div>Jordan</div></font></span></div></blockquote></div><br></div><div class="gmail_extra">Perhaps I am misunderstanding, but I don’t see how it is possible for code to be relying on this in a manner that would be affected by what’s being discussed.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><b>Things that will change with this bug fix:</b></div><div class="gmail_extra"><br></div><div class="gmail_extra">If there are both a local function and a global function with the base name being called, and the local function’s signature does not match the call-site but the global function’s does, that is currently a compiler error, but after the bug is fixed the global function will be called.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><b>Things that will stay the same:</b></div><div class="gmail_extra"><br></div><div class="gmail_extra">1) If there is only a global function and no local function with the base name being called, and the global function’s signature matches the call-site, currently the global function is called, and it will still be called after the bug is fixed.</div><div class="gmail_extra"><br></div><div class="gmail_extra">2) If there is only a local function and no global function with the base name being called, and the local function’s signature matches the call-site, currently the local function is called, and it will still be called after the bug is fixed.</div><div class="gmail_extra"><br></div><div class="gmail_extra">3) If there is neither a local function nor a global function with the base name being called, currently that is a compiler error, and it will still be one after the bug is fixed.</div><div class="gmail_extra"><br class="gmail-Apple-interchange-newline">4) If there are both a local function and a global function with the base name being called, but neither of their signatures match the call-site, currently that is a compiler error, and it will still be one after the bug is fixed.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">5) If there are both a local function and a global function with the base name being called, and the local function’s signature matches the call-site, the local function is called currently, and it will still be called after the bug is fixed.</div><div class="gmail_extra"><br></div><div class="gmail_extra"> • • •</div><div class="gmail_extra"><br></div><div class="gmail_extra">The only change here is that something which is a compiler error today, will not be a compiler error once the bug is fixed. There cannot possibly be any valid code which relies on the current behavior, because the current behavior is a compiler error.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Am I missing something?</div><div class="gmail_extra"><br></div><div class="gmail_extra">Nevin</div></div>