<div dir="ltr">On 26 October 2017 at 20:24, David Hart <span dir="ltr">&lt;<a href="mailto:david@hartbit.com" target="_blank">david@hartbit.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-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">I don’t see how this makes any sense or be possible:<br><div><div><br></div><div>* It doesn’t make sense for me because local is not a member function of A.</div><div>* It would cause ambiguity when trying to call another member function with the same name as the local function.</div></div></div></blockquote><div><br></div><div>in the escaping contexts, &quot;self.&quot; is currently required before the instance members (**). </div><div>the idea is to require it before some local functions as well, recursively analysing what these local functions do (at the compile time).</div><div><br></div><div>/* local */ foo() {</div><div>    bar()</div><div>    variable = 1</div><div>}</div><div><br></div><div>...</div><div>self.foo()</div><div><br></div><div>// self is required because the compiler knows what&#39;s inside, and if it were to put the content inline that would be:<br></div><div><br></div><div>// inlining foo pseudo code:</div><div>     self.bar()</div><div>     self.variable = 1</div><div><br></div><div>hence the compiler can figure out that in this case &quot;self&quot; is required before foo()</div><div><br></div><div>on the other hand:</div><div><br></div><div>/* local */ poo() {</div><div>    print(&quot;doesnt not capture anything&quot;)</div><div>}</div><div><br></div><div>here, if compiler were to use poo in the escaping context it would not require &quot;self.&quot; before it.</div><div><br></div><div>this decision (whether to require &quot;self.&quot; on not) can be on the use side.</div><div><br></div><div>(**) FTM, the normal instance methods that do not capture anything may as well not require &quot;self.&quot; before them in escaping contexts:</div><div><br></div><div>/* non local */ baz() {</div><div>    print(&quot;doesn&#39;t capture anything&quot;)</div><div>}</div><div><br></div><div>Mike</div><div><br></div></div></div></div>