<br><br><div class="gmail_quote">On Fri, Mar 23, 2012 at 12:14 PM, Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com">allen@wirfs-brock.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
On Mar 23, 2012, at 12:42 AM, Claus Reinke wrote:<br>
<br>
</div><div class="im">> - could we think of hoisting a class as hoisting its constructor<br>
>   (the hoisted binding wouldn't be undefined, but shouldn't         be called before initialization, either)?<br>
><br>
<br>
</div>But its value could be accessed?  It's properties could be accessed?<br>
<br>
This would be a new kind of Temporal deal zone.  I don't think we need it.  Can you show a use case  were the current proposal (class X{} scopes just like const X;) doesn't work.<br></blockquote><div><br></div><div>
Yeah, this would be a pretty awkward middle phase - you could say new X(), but not use any methods. OTOH, one possible use case would be the ability to do inheritance out of source order.</div><div><br></div><div><div>    //can still extend A because the resulting constructor is hoisted</div>
<div>    class B extends A{...}</div><div>    </div><div>    class A{...}</div></div><div><br></div><div>The only weird thing is wouldn't that mean you could somehow do a circular inheritance tree?</div><div><br></div>
<div><div>    class B extends A{...}</div><div>    </div><div>    class A extends B{...}</div></div><div><br></div><div>That should probably not be legal but begs the question how does extension fit into hoisting. Would this work?</div>
<div><br></div><div><div>    class C extends B{...}</div><div>    class B extends A{...}</div><div>    class A{...}</div></div><div><br></div><div>Desugaring extension into <| would force it back into an assignment expression again instead of a function declaration, so following that logic, only A would be hoisted in my last example, and so class C would fail.</div>
<div><br></div><div>I think we should stick with const style hoisting. The restrictions are not very difficult and the result is cleaner.</div><div><br></div><div>- Russ</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<span class="HOEnZb"><font color="#888888"><br>
Allen<br>
<br>
</font></span></blockquote></div><br>