Adding cases to check if SyntaxError is thrown if AllPrivateIdentifiersValid returns false. (#2301)

This commit is contained in:
Caio Lima 2019-08-28 14:58:43 -03:00 committed by Leo Balter
parent 8d41122c2b
commit fbbab61b4a
3 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,20 @@
// Copyright (C) 2019 Caio Lima (Igalia SL). All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-createdynamicfunction
description: CreateDynamicFunction throws SyntaxError if there is some invalid private identifier on its body
info: |
CreateDynamicFunction(constructor, newTarget, kind, args)
...
29. Let privateIdentifiers be an empty List.
30. If AllPrivateIdentifiersValid of body with the argument privateIdentifiers is false, throw a SyntaxError exception.
31. If AllPrivateIdentifiersValid of parameters with the argument privateIdentifiers is false, throw a SyntaxError exception.
...
features: [class-fields-private]
---*/
assert.throws(SyntaxError, function() {
let o = {};
new Function("o.#f");
}, 'It should be a SyntaxError if AllPrivateIdentifiersValid returns false to dynamic function body');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2019 Caio Lima (Igalia SL). All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-evaldeclarationinstantiation
description: EvalDeclarationInstantiation throws SyntaxError if there is some invalid private identifier on its body
info: |
EvalDeclarationInstantiation(body, varEnv, lexEnv, privateEnv, strict)
...
6. Let privateIdentifiers be an empty List.
7. Let privateEnv be privateEnv.
8. Repeat while privateEnv is not null,
a. For each binding named N in privateEnv,
i. If privateIdentifiers does not contain N, append N to privateIdentifiers.
b. Let privateEnv be privateEnv's outer environment reference.
9. If AllPrivateIdentifiersValid of body with the argument privateIdentifiers is false, throw a SyntaxError exception.
...
features: [class-fields-private]
---*/
assert.throws(SyntaxError, function() {
let o = {};
eval("o.#f");
}, 'It should be a SyntaxError if AllPrivateIdentifiersValid returns false to eval body');

View File

@ -0,0 +1,18 @@
// Copyright (C) 2019 Caio Lima (Igalia SL). All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-static-semantics-early-errors
description: >
ModuleBody : ModuleItemList
It is a Syntax Error if AllPrivateIdentifiersValid of ModuleItemList with an empty List as an argument is false.
flags: [module]
features: [class-static-fields-private]
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
var x = {};
x.#f = 'Test262';