<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Feb 8, 2011, at 2:41 PM, Allen Wirfs-Brock wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>The other one I know of is nested named function declarations &lt;<a href="http://wiki.ecmascript.org/doku.php?id=conventions:no_non_standard_strict_decls">http://wiki.ecmascript.org/doku.php?id=conventions:no_non_standard_strict_decls</a>&gt;. And there was an ASI mis-description for "break" and "continue" that was corrected between ES5 and ES5.1.</div></blockquote><div><br></div><div>There really isn't any useful common semantics for function declaration in blocks. &nbsp;See&nbsp;<a href="https://blogs.msdn.com/b/ie/archive/2010/08/25/chakra-interoperability-means-more-than-just-standards.aspx">https://blogs.msdn.com/b/ie/archive/2010/08/25/chakra-interoperability-means-more-than-just-standards.aspx&nbsp;</a></div></div></div></blockquote><br></div><div>Yet we keep running into bugs where someone uses function-in-block intersection semantics.</div><div><br></div><div>Clearly it's useful, since we want it in Harmony. Of course, it's not supported so developers counting on it are on thin ice regarding name collisions, name leaks, etc.</div><div><br></div><div>Most recent example:</div><div><br></div><div><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=630851">https://bugzilla.mozilla.org/show_bug.cgi?id=630851</a></div><div><br></div><div>See&nbsp;<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=630851#c8">https://bugzilla.mozilla.org/show_bug.cgi?id=630851#c8</a> in particular.</div><div><br></div><div>Nevertheless, we are banning function-in-block under Firefox 4's ES5 strict mode implementation.</div><div><br></div><div>/be</div><br></body></html>