<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3314" name=GENERATOR></HEAD>
<BODY 
style="WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space">
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2>There might be a slight misunderstanding here.&nbsp; In my 
example, the name C.ns is constant, not a general expression; C needs to be a 
class, and ns needs to be a static namespace definition inside that class 
(suitably available).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2>In my (repentant) opinion the ns in _any_ ns::id expression 
must reference a namespace binding that was not introduced into the scope by 
"with" (and I'm happy to outlaw all such expressions in the body of a "with", if 
that helps keep it simple).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2>I think you're trying to say something else too but I can't 
figure out what it is, something about the ns in ns::id being a literal in a 
stronger sense than what I just outlined?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=406164619-11042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>--lars</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> Brendan Eich 
  [mailto:brendan@mozilla.org] <BR><B>Sent:</B> 11. april 2008 
  13:44<BR><B>To:</B> Lars Hansen; Jon Zeppieri<BR><B>Cc:</B> 
  es4-discuss@mozilla.org es4-discuss; liorean<BR><B>Subject:</B> Re: Strict 
  mode recap<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV>On Apr 11, 2008, at 10:22 AM, Lars Hansen wrote:</DIV>
  <DIV><BR>
  <BLOCKQUOTE type="cite">
    <DIV style="MARGIN: 0px">(It _is_ an indication that the syntax used 
in</DIV>
    <DIV style="MARGIN: 0px">the object initializers is not fully general, 
    though, since it only</DIV>
    <DIV style="MARGIN: 0px">allows simple identifiers in the namespace 
    position.<SPAN class=Apple-converted-space>&nbsp; 
  </SPAN>Sigh.)</DIV></BLOCKQUOTE><BR></DIV>
  <DIV>I've argued that JS's literal property identifiers in object 
  initialisers, instead of mandatory quoted strings for literal names and 
  evaluated expressions for runtime naming, is a virtue, 
  <I>pace</I>&nbsp;Python. It certainly reduces the quote burden compared to 
  JSON or Python. It allows readers and compilers to make static judgments about 
  what names are bound in the object created for the initialiser. Anyway, it's 
  an old decision, hard to change now.&nbsp;</DIV>
  <DIV><BR></DIV>
  <DIV>I'm mailing mainly to ask whether this restriction is something 
  considered harmful in ES4 with namespaces, or for any other reason. I think 
  Jon and I have agreed in the past on namespaces being constant, but argument 
  has evolved since then.</DIV>
  <DIV><BR></DIV>
  <DIV>My reason for agreeing with Jon then was that readers, never mind 
  compilers, otherwise can have a hard time figuring out the meaning of names. 
  This is always hard with globals, less so with outer names in closures, and no 
  picnic with property initialisers if you add computed namespaces to 
them.</DIV>
  <DIV><BR></DIV>
  <DIV>I don't have a stronger reason than favoring comprehension and easing 
  implementation, though. The second is less important than the first, but we 
  consider efficiency too.</DIV>
  <DIV><BR></DIV>
  <DIV>/be</DIV><BR></BLOCKQUOTE></BODY></HTML>