From 889857ccb5ce8d4f75b8f94db1e08d192b0fd956 Mon Sep 17 00:00:00 2001 From: Valerie R Young <valerie@bocoup.com> Date: Tue, 31 Oct 2017 14:19:30 -0400 Subject: [PATCH] Fixes for forbidden property names --- src/class-fields/propname-constructor.case | 2 +- .../cls-decl-computed-name.template | 2 +- .../cls-decl-literal-name.template | 2 +- .../cls-decl-string-name.template | 4 ++-- .../cls-decl-variable-name.template | 22 +++++++++++++++++++ .../cls-expr-computed-name.template | 2 +- .../cls-expr-literal-name.template | 2 +- .../cls-expr-string-name.template | 4 ++-- .../cls-expr-variable-name.template | 22 +++++++++++++++++++ .../static-propname-constructor.case | 2 +- .../static-propname-prototype.case | 2 +- 11 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 src/class-fields/propname-error/cls-decl-variable-name.template create mode 100644 src/class-fields/propname-error/cls-expr-variable-name.template diff --git a/src/class-fields/propname-constructor.case b/src/class-fields/propname-constructor.case index a700e99119..3353606ddb 100644 --- a/src/class-fields/propname-constructor.case +++ b/src/class-fields/propname-constructor.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: Static class fields cannot have PropName 'constructor' +desc: class fields forbid PropName 'constructor' info: | // This test file tests the following early error: diff --git a/src/class-fields/propname-error/cls-decl-computed-name.template b/src/class-fields/propname-error/cls-decl-computed-name.template index 72e252f808..406a209707 100644 --- a/src/class-fields/propname-error/cls-decl-computed-name.template +++ b/src/class-fields/propname-error/cls-decl-computed-name.template @@ -4,7 +4,7 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/statements/class/fields-computed-name- -name: computed +name: no early error -- PropName of ComputedPropertyName not forbidden value info: | Static Semantics: PropName ... diff --git a/src/class-fields/propname-error/cls-decl-literal-name.template b/src/class-fields/propname-error/cls-decl-literal-name.template index b51b78ef20..3c4ce9e9e7 100644 --- a/src/class-fields/propname-error/cls-decl-literal-name.template +++ b/src/class-fields/propname-error/cls-decl-literal-name.template @@ -4,7 +4,7 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/statements/class/fields-literal-name- -name: literal name +name: early error -- PropName of IdentifierName is forbidden value negative: type: SyntaxError phase: early diff --git a/src/class-fields/propname-error/cls-decl-string-name.template b/src/class-fields/propname-error/cls-decl-string-name.template index 173990f660..743f20f744 100644 --- a/src/class-fields/propname-error/cls-decl-string-name.template +++ b/src/class-fields/propname-error/cls-decl-string-name.template @@ -4,14 +4,14 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/statements/class/fields-string-name- -name: string name +name: early error -- PropName of StringLiteral is forbidden value negative: type: SyntaxError phase: early info: | Static Semantics: PropName ... - LiteralPropertyName:StringLiteral + LiteralPropertyName : StringLiteral Return the String value whose code units are the SV of the StringLiteral. ---*/ diff --git a/src/class-fields/propname-error/cls-decl-variable-name.template b/src/class-fields/propname-error/cls-decl-variable-name.template new file mode 100644 index 0000000000..cbda5b8319 --- /dev/null +++ b/src/class-fields/propname-error/cls-decl-variable-name.template @@ -0,0 +1,22 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/fields-computed-variable-name- +name: no early error -- PropName of ComputedPropertyName not forbidden value +info: | + Static Semantics: PropName + ... + ComputedPropertyName : [ AssignmentExpression ] + Return empty. +---*/ + +var /*{ propname }*/ = 'foo'; +class C { + /*{ static }*/ [/*{ propname }*/]; +} + +var c = new C(); + +assert.sameValue(c.hasOwnProperty("foo"), true); diff --git a/src/class-fields/propname-error/cls-expr-computed-name.template b/src/class-fields/propname-error/cls-expr-computed-name.template index dc37681833..e509263eea 100644 --- a/src/class-fields/propname-error/cls-expr-computed-name.template +++ b/src/class-fields/propname-error/cls-expr-computed-name.template @@ -4,7 +4,7 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/expressions/class/fields-computed-name- -name: computed +name: no early error -- PropName of ComputedPropertyName not forbidden value info: | Static Semantics: PropName ... diff --git a/src/class-fields/propname-error/cls-expr-literal-name.template b/src/class-fields/propname-error/cls-expr-literal-name.template index 84d8310abb..bd87b81d2a 100644 --- a/src/class-fields/propname-error/cls-expr-literal-name.template +++ b/src/class-fields/propname-error/cls-expr-literal-name.template @@ -4,7 +4,7 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/expressions/class/fields-literal-name- -name: literal name +name: early error -- PropName of IdentifierName is forbidden negative: type: SyntaxError phase: early diff --git a/src/class-fields/propname-error/cls-expr-string-name.template b/src/class-fields/propname-error/cls-expr-string-name.template index b6a3af65c2..189a1bd80f 100644 --- a/src/class-fields/propname-error/cls-expr-string-name.template +++ b/src/class-fields/propname-error/cls-expr-string-name.template @@ -4,14 +4,14 @@ /*--- esid: sec-class-definitions-static-semantics-early-errors path: language/expressions/class/fields-string-name- -name: string name +name: early error -- PropName of StringLiteral is forbidden negative: type: SyntaxError phase: early info: | Static Semantics: PropName ... - LiteralPropertyName:StringLiteral + LiteralPropertyName : StringLiteral Return the String value whose code units are the SV of the StringLiteral. ---*/ diff --git a/src/class-fields/propname-error/cls-expr-variable-name.template b/src/class-fields/propname-error/cls-expr-variable-name.template new file mode 100644 index 0000000000..50b255197f --- /dev/null +++ b/src/class-fields/propname-error/cls-expr-variable-name.template @@ -0,0 +1,22 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/fields-computed-variable-name- +name: no early error -- PropName of ComputedPropertyName not forbidden value +info: | + Static Semantics: PropName + ... + ComputedPropertyName : [ AssignmentExpression ] + Return empty. +---*/ + +var /*{ propname }*/ = 'foo'; +var C = class { + /*{ static }*/ [/*{ propname }*/]; +} + +var c = new C(); + +assert.sameValue(c.hasOwnProperty("foo"), true); diff --git a/src/class-fields/static-propname-constructor.case b/src/class-fields/static-propname-constructor.case index ffa6754e20..ff3d00af6a 100644 --- a/src/class-fields/static-propname-constructor.case +++ b/src/class-fields/static-propname-constructor.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: Static class field cannot have PropName 'constructor' +desc: static class field forbid PropName 'constructor' info: | // This test file tests the following early error: diff --git a/src/class-fields/static-propname-prototype.case b/src/class-fields/static-propname-prototype.case index 9b2e9ab331..99d85ff64a 100644 --- a/src/class-fields/static-propname-prototype.case +++ b/src/class-fields/static-propname-prototype.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: Static class fields cannot have PropName 'prototype' +desc: static class fields forbid PropName 'prototype' info: | // This test file tests the following early error: -- GitLab