blob: e43b5446e5e994922a15dc64d27d5946b1ea4f1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// |reftest| error:SyntaxError
// This file was procedurally generated from the following sources:
// - src/invalid-private-names/call-expression-bad-reference.case
// - src/invalid-private-names/default/cls-decl-method-heritage.template
/*---
description: bad reference in call expression (Invalid private names should throw a SyntaxError, method in class declaration)
esid: sec-static-semantics-early-errors
features: [class-fields-private, class]
flags: [generated]
negative:
phase: parse
type: SyntaxError
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.
Static Semantics: AllPrivateNamesValid
MemberExpression : MemberExpression . PrivateName
1. If StringValue of PrivateName is in names, return true.
2. Return false.
CallExpression : CallExpression . PrivateName
1. If StringValue of PrivateName is in names, return true.
2. Return false.
---*/
$DONOTEVALUATE();
class Parent {
#x = 42;
}
class C extends Parent {
m() {
(() => {})().#x
}
}
|