<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 24, 2015, at 5:45 PM, Mark S. Miller <<a href="mailto:erights@google.com" class="">erights@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sat, Oct 24, 2015 at 8:00 PM, Sebastian McKenzie <span dir="ltr" class=""><<a href="mailto:sebmck@gmail.com" target="_blank" class="">sebmck@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""></div></blockquote></div></div></div></div></blockquote><div>...</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="">But this check is performed at step 10 whereas the super constructor is actually evaluated at step 7.</div><div class=""><br class=""></div><div class="">Is my reading correct? If so, to me this behaviour seems quite unexpected.</div></div></blockquote><div class=""><br class=""></div><div class="">I'm surprised. Good catch! Frankly, this case had never occurred to me and I do not remember discussing it. I would certainly prefer that it be an error without constructing twice.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">Any insight (or correction) is extremely appreciated, thank you!</div></div>
</blockquote></div></div></div></div></blockquote></div><br class=""><div class="">Sebastian, you reading is correct.</div><div class=""><br class=""></div><div class="">Mark, I’m pretty sure that I brought attention to this in some venue and there was agreement that the possibility of observable side-effects with post call error check really didn’t matter as long as implementations concisely followed the spec. and all did it that way.</div><div class=""><br class=""></div><div class="">But, I agree that pre-check seems more intuitive. I think it ended of this way largely because within the spec. the check for attempting to rebind this only occurs within the  BindThisValue abstract operation.  So doing the post call check was the easier think to specify (and we were working against the clock at that time).  To do a pre-check we’d have to add an additional internal method to FunctionEnviornmentRecord (and probably also replace the check in  BindThisValue with an assertion).</div><div class=""><br class=""></div><div class="">Such a change for ES2016 seems reasonable to me.</div><div class=""><br class=""></div><div class="">Allen</div></body></html>