From 90e8859cddadde9ca94dceeb289768c4384b67be Mon Sep 17 00:00:00 2001 From: Rick Waldron <waldron.rick@gmail.com> Date: Mon, 30 Jul 2018 17:15:03 -0400 Subject: [PATCH] Class Fields: Updating frontmatter --- .../class/privatefieldadd-typeerror.js | 5 +-- .../class/privatefieldget-success-1.js | 12 +++---- .../class/privatefieldget-success-2.js | 12 +++---- .../class/privatefieldget-success-3.js | 12 +++---- .../class/privatefieldget-success-4.js | 12 +++---- .../class/privatefieldget-success-5.js | 12 +++---- .../class/privatefieldget-typeerror-1.js | 12 +++---- .../class/privatefieldget-typeerror-2.js | 12 +++---- .../class/privatefieldget-typeerror-3.js | 12 +++---- .../class/privatefieldset-typeerror-1.js | 2 +- .../class/privatefieldset-typeerror-2.js | 2 +- .../class/privatefieldset-typeerror-3.js | 2 +- .../class/privatefieldset-typeerror-4.js | 2 +- .../class/privatefieldset-typeerror-5.js | 2 +- ...privatename-not-valid-earlyerr-script-1.js | 8 ++--- ...privatename-not-valid-earlyerr-script-2.js | 8 ++--- ...privatename-not-valid-earlyerr-script-3.js | 8 ++--- ...privatename-not-valid-earlyerr-script-4.js | 8 ++--- ...privatename-not-valid-earlyerr-script-5.js | 8 ++--- ...privatename-not-valid-earlyerr-script-6.js | 8 ++--- ...privatename-not-valid-earlyerr-script-7.js | 8 ++--- ...privatename-not-valid-earlyerr-script-8.js | 8 ++--- .../privatename-not-valid-eval-earlyerr-1.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-2.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-3.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-4.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-5.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-6.js | 13 +++---- .../privatename-not-valid-eval-earlyerr-7.js | 7 ++-- .../privatename-not-valid-eval-earlyerr-8.js | 7 ++-- .../class/privatename-valid-no-earlyerr.js | 13 +++---- ...atic-classelementname-abrupt-completion.js | 25 +++++-------- ...efinition-initializer-abrupt-completion.js | 35 +++++++------------ 33 files changed, 145 insertions(+), 195 deletions(-) diff --git a/test/language/statements/class/privatefieldadd-typeerror.js b/test/language/statements/class/privatefieldadd-typeerror.js index a22d0536c7..e127521932 100644 --- a/test/language/statements/class/privatefieldadd-typeerror.js +++ b/test/language/statements/class/privatefieldadd-typeerror.js @@ -19,8 +19,8 @@ info: | 2. Assert: Assert constructor is an ECMAScript function object. 3. Let fieldRecords be the value of constructor's [[Fields]] internal slot. 4. For each item fieldRecord in order from fieldRecords, - a. If fieldRecord.[[static]] is false, then - i. Perform ? DefineField(O, fieldRecord). + a. Perform ? DefineField(O, fieldRecord). + 5. Return. DefineField(receiver, fieldRecord) ... @@ -32,6 +32,7 @@ info: | 2. If O is not an object, throw a TypeError exception. 3. Let entry be PrivateFieldFind(P, O). 4. If entry is not empty, throw a TypeError exception. + ... features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatefieldget-success-1.js b/test/language/statements/class/privatefieldget-success-1.js index 834d6c876a..385ff09c9f 100644 --- a/test/language/statements/class/privatefieldget-success-1.js +++ b/test/language/statements/class/privatefieldget-success-1.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-success-2.js b/test/language/statements/class/privatefieldget-success-2.js index a404985e22..d5e091012c 100644 --- a/test/language/statements/class/privatefieldget-success-2.js +++ b/test/language/statements/class/privatefieldget-success-2.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-success-3.js b/test/language/statements/class/privatefieldget-success-3.js index 9b6104eabc..0dd43e38a9 100644 --- a/test/language/statements/class/privatefieldget-success-3.js +++ b/test/language/statements/class/privatefieldget-success-3.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-success-4.js b/test/language/statements/class/privatefieldget-success-4.js index b6c296afb3..7466fb4db2 100644 --- a/test/language/statements/class/privatefieldget-success-4.js +++ b/test/language/statements/class/privatefieldget-success-4.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-success-5.js b/test/language/statements/class/privatefieldget-success-5.js index 64c0ad5511..1dc9700e8e 100644 --- a/test/language/statements/class/privatefieldget-success-5.js +++ b/test/language/statements/class/privatefieldget-success-5.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-typeerror-1.js b/test/language/statements/class/privatefieldget-typeerror-1.js index d90c45efae..9cc17bf3d5 100644 --- a/test/language/statements/class/privatefieldget-typeerror-1.js +++ b/test/language/statements/class/privatefieldget-typeerror-1.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-typeerror-2.js b/test/language/statements/class/privatefieldget-typeerror-2.js index 3594f41021..a06439748b 100644 --- a/test/language/statements/class/privatefieldget-typeerror-2.js +++ b/test/language/statements/class/privatefieldget-typeerror-2.js @@ -8,12 +8,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldget-typeerror-3.js b/test/language/statements/class/privatefieldget-typeerror-3.js index f9669a6610..542e38097c 100644 --- a/test/language/statements/class/privatefieldget-typeerror-3.js +++ b/test/language/statements/class/privatefieldget-typeerror-3.js @@ -9,12 +9,12 @@ info: | GetValue ( V ) ... 5. If IsPropertyReference(V), then - ... - b. If IsPrivateReference(V), then - i. Let env be the running execution context's PrivateNameEnvironment. - ii. Let field be ? ResolveBinding(GetReferencedName(V), env). - iii. Assert: field is a Private Name. - iv. Return ? PrivateFieldGet(field, base). + ... + b. If IsPrivateReference(V), then + i. Let env be the running execution context's PrivateNameEnvironment. + ii. Let field be ? ResolveBinding(GetReferencedName(V), env). + iii. Assert: field is a Private Name. + iv. Return ? PrivateFieldGet(field, base). PrivateFieldGet (P, O ) 1. Assert: P is a Private Name value. diff --git a/test/language/statements/class/privatefieldset-typeerror-1.js b/test/language/statements/class/privatefieldset-typeerror-1.js index 8ad4492c06..01fc83c2db 100644 --- a/test/language/statements/class/privatefieldset-typeerror-1.js +++ b/test/language/statements/class/privatefieldset-typeerror-1.js @@ -7,7 +7,7 @@ esid: sec-putvalue info: | PutValue ( V, W ) ... - 5. Else if IsPropertyReference(V), then + 6. Else if IsPropertyReference(V), then ... b. If IsPrivateReference(V), then i. Let env be the running execution context's PrivateNameEnvironment. diff --git a/test/language/statements/class/privatefieldset-typeerror-2.js b/test/language/statements/class/privatefieldset-typeerror-2.js index a4054aaf68..e64451445b 100644 --- a/test/language/statements/class/privatefieldset-typeerror-2.js +++ b/test/language/statements/class/privatefieldset-typeerror-2.js @@ -7,7 +7,7 @@ esid: sec-putvalue info: | PutValue ( V, W ) ... - 5. Else if IsPropertyReference(V), then + 6. Else if IsPropertyReference(V), then ... b. If IsPrivateReference(V), then i. Let env be the running execution context's PrivateNameEnvironment. diff --git a/test/language/statements/class/privatefieldset-typeerror-3.js b/test/language/statements/class/privatefieldset-typeerror-3.js index 3f64d3eb74..656e8e3490 100644 --- a/test/language/statements/class/privatefieldset-typeerror-3.js +++ b/test/language/statements/class/privatefieldset-typeerror-3.js @@ -8,7 +8,7 @@ esid: sec-putvalue info: | PutValue ( V, W ) ... - 5. Else if IsPropertyReference(V), then + 6. Else if IsPropertyReference(V), then ... b. If IsPrivateReference(V), then i. Let env be the running execution context's PrivateNameEnvironment. diff --git a/test/language/statements/class/privatefieldset-typeerror-4.js b/test/language/statements/class/privatefieldset-typeerror-4.js index 0520bff461..20eff276e5 100644 --- a/test/language/statements/class/privatefieldset-typeerror-4.js +++ b/test/language/statements/class/privatefieldset-typeerror-4.js @@ -7,7 +7,7 @@ esid: sec-putvalue info: | PutValue ( V, W ) ... - 5. Else if IsPropertyReference(V), then + 6. Else if IsPropertyReference(V), then ... b. If IsPrivateReference(V), then i. Let env be the running execution context's PrivateNameEnvironment. diff --git a/test/language/statements/class/privatefieldset-typeerror-5.js b/test/language/statements/class/privatefieldset-typeerror-5.js index 5cc2402896..e8703f5c69 100644 --- a/test/language/statements/class/privatefieldset-typeerror-5.js +++ b/test/language/statements/class/privatefieldset-typeerror-5.js @@ -7,7 +7,7 @@ esid: sec-putvalue info: | PutValue ( V, W ) ... - 5. Else if IsPropertyReference(V), then + 6. Else if IsPropertyReference(V), then ... b. If IsPrivateReference(V), then i. Let env be the running execution context's PrivateNameEnvironment. diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js index a617f44b9e..f1cb3d47c6 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename in constructor without being declared in class fields info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js index a2583a3987..5a4b1c125f 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename in function in class without declaring in field info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js index 18e0feaa41..67f7aaf50e 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename that has not been declared in class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private, class-fields-public] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js index 728b669ae0..1c7553efa3 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename that has not been declared in class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js index e5ed92bcee..f9a9bd414c 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename outside of class info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js index 5901158cfa..f1a4f8ca86 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename outside of class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js index 185ddb54df..58c14e57dc 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename on object, outside of class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js index 6b6e963748..c134b47409 100644 --- a/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js +++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js @@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename on object, outside of class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class-fields-private] negative: phase: parse diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js index 44a3f94835..0da3536a98 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename in constructor without being declared in class fields info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js index 69ea3b5432..434e1345c4 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename in function in class without declaring in field info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js index be2283ccb2..dbfeef0d3a 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename that has not been declared in class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private, class-fields-public] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js index 78395d58da..513999ebc3 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename that has not been declared in class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js index 5572340e67..b3a7bf5a17 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename outside of class info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js index cb50fa1912..1026d9271d 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js @@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename outside of class. info: | Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - 2. If Script is parsed directly from PerformEval, - a. Let env be the running execution context's PrivateNameEnvironment. - b. Repeat while env is not null, - i. For each binding named N in env, - 1. If names does not contain N, append N to names. - ii. Let env be env's outer environment reference. - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class, class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js index 972a395c8e..a5dee6c068 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js @@ -5,9 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename on object, outside of class. info: | Static Semantics: Early Errors - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js index b433d6a6d3..fc1ca835e2 100644 --- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js +++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js @@ -5,9 +5,10 @@ esid: sec-scripts-static-semantics-early-errors description: Early error when referencing privatename on object, outside of class. info: | Static Semantics: Early Errors - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. + ScriptBody : StatementList + + It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval. + features: [class-fields-private] ---*/ diff --git a/test/language/statements/class/privatename-valid-no-earlyerr.js b/test/language/statements/class/privatename-valid-no-earlyerr.js index 85efc04213..7d3f1f52b7 100644 --- a/test/language/statements/class/privatename-valid-no-earlyerr.js +++ b/test/language/statements/class/privatename-valid-no-earlyerr.js @@ -1,16 +1,11 @@ // Copyright (C) 2017 Valerie Young. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -esid: sec-scripts-static-semantics-early-errors +esid: sec-all-private-names-valid description: Referencing privatename in class within class does not error. info: | - Static Semantics: Early Errors - Script : ScriptBody - 1. Let names be an empty List. - ... - 3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception. - Static Semantics: AllPrivateNamesValid + AllPrivateNamesValid is an abstract operation which takes names as an argument. MemberExpression : MemberExpression . PrivateName @@ -21,9 +16,9 @@ info: | 1. If StringValue of PrivateName is in names, return true. 2. Return false. - ClassBody:ClassElementList + ClassBody : ClassElementList 1. Let newNames be the concatenation of names with PrivateBoundNames of ClassBody. - 2.Return AllPrivateNamesValid of ClassElementList with the argument newNames. + 2. Return AllPrivateNamesValid of ClassElementList with the argument newNames. For all other grammatical productions, recurse on subexpressions/substatements, passing in the names of the caller. If all pieces return true, then return true. If any returns false, return false. diff --git a/test/language/statements/class/static-classelementname-abrupt-completion.js b/test/language/statements/class/static-classelementname-abrupt-completion.js index d86d1f30d8..e173f44330 100644 --- a/test/language/statements/class/static-classelementname-abrupt-completion.js +++ b/test/language/statements/class/static-classelementname-abrupt-completion.js @@ -9,26 +9,17 @@ info: | ... 27. For each ClassElement e in order from elements a. If IsStatic of e is false, then - i. Let fields be the result of performing ClassElementEvaluation for e with arguments proto and false. + i. Let fields be the result of performing ClassElementEvaluation + for e with arguments proto and false. b. Else, - i. Let fields be the result of performing ClassElementEvaluation for e with arguments F and false. + i. Let fields be the result of performing ClassElementEvaluation + for e with arguments F and false. c. If fields is an abrupt completion, then - i. Set the running execution context's LexicalEnvironment to lex. - ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment. - iii. Return Completion(status). + i. Set the running execution context's LexicalEnvironment to lex. + ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment. + iii. Return Completion(status). - Runtime Semantics: ClassElementEvaluation - ... - ClassElement : static FieldDefinition ; - 1. Return ClassFieldDefinitionEvaluation of FieldDefinition with parameter true and object. - - Runtime Semantics: ClassFieldDefinitionEvaluation - With parameters isStatic and homeObject. - FieldDefinition : ClassElementNameInitializer - 1. Let fieldName be the result of evaluating ClassElementName. - 2. ReturnIfAbrupt(fieldName). - -features: [class-fields] +features: [class-static-fields-public] ---*/ function f() { diff --git a/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js b/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js index 226586d8b7..616acd38c2 100644 --- a/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js +++ b/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js @@ -7,28 +7,19 @@ esid: runtime-semantics-class-definition-evaluation info: | Runtime Semantics: ClassDefinitionEvaluation ... - 33. Let result be InitializeStaticFields(F). - 34. If result is an abrupt completion, then - a. Set the running execution context's LexicalEnvironment to lex. - b. Return Completion(result). + 27. For each ClassElement e in order from elements + a. If IsStatic of e is false, then + i. Let fields be the result of performing ClassElementEvaluation + for e with arguments proto and false. + b. Else, + i. Let fields be the result of performing ClassElementEvaluation + for e with arguments F and false. + c. If fields is an abrupt completion, then + i. Set the running execution context's LexicalEnvironment to lex. + ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment. + iii. Return Completion(status). - InitializeStaticFields(F) - 1. Assert: Type(F) is Object. - 2. Assert: F is an ECMAScript function object. - 3. Let fieldRecords be the value of F's [[Fields]] internal slot. - 4. For each item fieldRecord in order from fieldRecords, - a. If fieldRecord.[[static]] is true, then - i. Perform ? DefineField(F, fieldRecord). - - DefineField(receiver, fieldRecord) - 1. Assert: Type(receiver) is Object. - 2. Assert: fieldRecord is a Record as created by ClassFieldDefinitionEvaluation. - 3. Let fieldName be fieldRecord.[[Name]]. - 4. Let initializer be fieldRecord.[[Initializer]]. - 5. If initializer is not empty, then - a. Let initValue be ? Call(initializer, receiver). - -features: [class-fields] +features: [class-static-fields-public] ---*/ function f() { @@ -39,4 +30,4 @@ assert.throws(Test262Error, function() { class C { static x = f(); } -}) +}); -- GitLab