Brendan Eich wrote:
Herby Vojčík <mailto:he...@mailbox.sk>
January 21, 2012 1:56 PM
Brendan Eich wrote:
private foo;

@foo = bar; // this-relative private foo

return @foo === other.@foo;

return {@foo: bar};

This helps a lot, but there still _is_ an
identifier foo having that private name in its value.

This was not decided, as far as I know. There are two choices:

1. "private foo;" defines a lexical binding used to denote the private
name object, as well as after @ to use it to access a property in an
object.

2. Rather, the *only* places foo would be allowed after "private foo;"
above are those after an @. IOW it would be fine to use "let foo = 42;"
and "private foo;" without conflict. Some further syntax, a la the old
#.foo proposal (obsoleted in terms of # now), would be required to
reflect foo from lexical-to-the-right-of-@ space into a first-class
private name object reference.

Oh. I favor 1. Inspired by latest notes and for(let...) I would see
  {
    private foo;
    ...
  }
desugared to
  {
    let foo = _the_real_foo;
    ...
  }
where _the_real_foo is defined somewhere at the module or program level such that it will not clash (hardwired private name or index to a table or whatever) and the rest is just reusing existing rules.

2. is too magical (for me).

/be

Herby
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to