In Section B.3.1 on "__proto__ Property Names in Object Initializers"
<http://people.mozilla.org/~jorendorff/es6-draft.html#sec-__proto__-property-names-in-object-initializers>
there is a paragraph explaining when duplicate properties will result in a
syntax error. It says:

It is a Syntax Error if *PropertyNameList* of *PropertyDefinitionList*
> contains any duplicate entries for "__proto__" and at least two of those
> entries were obtained from productions of the form *PropertyDefinition* :
> *PropertyName* : *AssignmentExpression* .
>

Where *PropertyName *is defined as:

PropertyName[Yield,GeneratorParameter] :
>   LiteralPropertyName
>   [+GeneratorParameter] ComputedPropertyName
>   [~GeneratorParameter] ComputedPropertyName[?Yield]
>
> LiteralPropertyName :
>   IdentifierName
>   StringLiteral
>   NumericLiteral


That paragraph (using the definitions provided) seems to assert that it is
a syntax error if there are any duplicate uses of __proto__ with an
IdentifierName, StringLiteral, or ComputedPropertyName. To translate this
into an example, it seems to assert that in ES6 this is not valid:

var obj = {
>   __proto__: somePrototype,
>   ["__proto__"]: somePrototype
> }

// Error: SyntaxError


Is that correct? Step 6 of Section B.3.1 explicitly states that the
computed ["__proto__"] does not have the same special behavior as the
literal property. But from my understanding of other es-discuss topics &
resources, the restriction on duplicate "__proto__" properties also does
not apply to computed properties. If that is true, then the quoted
paragraph above seems to be incorrect or misleading.

Can anyone clarify this? I may just be misunderstanding the docs and/or the
recent discussions. Or it could be that the definition has changed around
that quoted paragraph and it needs to be updated.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to