<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Mar 23, 2012, at 11:33 AM, Russell Leggett wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Fri, Mar 23, 2012 at 2:06 PM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.org">brendan@mozilla.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
<div class="im">Brendan Eich wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
We need to overcome at least one TC39er who values <br>
</blockquote></div>
"requiring an error for"<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
use-before-init for instance properties, perhaps only if const or guarded, so (I hope) we can defer those without being hostile to them in the future. <br>
</blockquote></div>
Hope it was clear the first time...</blockquote><div><br></div></div></blockquote><div>I think that   the current "maximal minimal" proposal is quite future friendly WRT any future hoisting variants .  Presumably any new alternative hoisting semantics for class declarations would only be observable in that some things that had been a runtime (or possible early) error under the current proposal might no longer be errors.  Defining a new non-error semantics for what was perviously an error condition is usually a safe change.<br></div><div><br></div><blockquote type="cite"><div class="gmail_quote"><div>I'll admit I was a little confused. Makes sense now. To be clear, you would be referring to:</div><div><br></div><div><div>    let foo = new Foo();</div></div></div></blockquote><div>under the current proposal the above is also an error, because Foo is not yet initialized. You would never get to the next statment.</div><br><blockquote type="cite"><div class="gmail_quote"><div>
<div>    foo.fail(); //this should be an error</div><div>    </div><div>    class Foo {</div><div>        fail(){</div><div>            alert("This alert won't happen.");</div><div>        }</div><div>        </div>
<div>        success(){</div><div>            alert("This should be fine");</div><div>        }</div><div>    }</div><div>    </div><div>    let foo2 = new Foo();</div><div>    foo2.success(); //would work fine</div>
</div><div><br></div><div>and by error you mean before the code is actually evaluated?</div><div><br></div><div>- Russ</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
<br>
/be<br>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</div></div></blockquote></div><br>
_______________________________________________<br>es-discuss mailing list<br><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>https://mail.mozilla.org/listinfo/es-discuss<br></blockquote></div><br></body></html>