Skip to content
Snippets Groups Projects
Commit 1d8316cb authored by André Bargull's avatar André Bargull
Browse files

Remove invalid private name templates

Inner classes have access to outer private names.

Fixes #2039
parent 9345023d
No related branches found
No related tags found
No related merge requests found
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/statements/class/elements/syntax/early-errors/invalid-names/method-inner-
name: >
Invalid private names should throw a SyntaxError,
method in inner class declaration
features: [class, class-fields-private]
esid: sec-static-semantics-early-errors
info: |
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.
ModuleBody:ModuleItemList
It is a Syntax Error if AllPrivateNamesValid of ModuleItemList with an empty List
as an argument is false.
Static Semantics: AllPrivateNamesValid
ClassBody : ClassElementList
1. Let newNames be the concatenation of names with PrivateBoundNames of ClassBody.
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.
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
class C {
#x = 42;
m() {
class Inner {
z() { /*{ body }*/ }
}
}
}
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/expressions/class/elements/syntax/early-errors/invalid-names/method-inner-
name: >
Invalid private names should throw a SyntaxError,
method in inner class expression
features: [class, class-fields-private]
info: |
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.
ModuleBody:ModuleItemList
It is a Syntax Error if AllPrivateNamesValid of ModuleItemList with an empty List
as an argument is false.
Static Semantics: AllPrivateNamesValid
ClassBody : ClassElementList
1. Let newNames be the concatenation of names with PrivateBoundNames of ClassBody.
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.
esid: sec-static-semantics-early-errors
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
var C = class {
#x = 42;
m() {
class Inner {
z() { /*{ body }*/ }
}
}
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment