Nicolò Ribaudo 771c730fda
[parser] Disallow duplicate and undeclared private names (#10456)
* [parser] Add private names tracking to Scope

- Disallow duplicate private names
- Disallow undeclared private names

* Update tests

* Test all possible duplications

* Test undeclared private names

* Better error message for top-level private names

* Fix flow

* Update test262 whitelist

* Update fixtures

* Update flow whitelist

* Remove old output.json

* Move ClassScopeHandler to a separate class

* Make the code readable
2020-01-10 02:22:05 +01:00

26 lines
674 B
Markdown

These tests have been generated using the following script:
```js
var feat = {
"field": "#x = 0;",
"method": "#x() {}",
"get": "get #x() {}",
"set": "set #x(_) {}",
};
var placement = {
"static": "static ",
"instance": ""
}
for (var f1 in feat) for (var f2 in feat) for (var p1 in placement) for (var p2 in placement) {
var code = `class A {
${placement[p1]}${feat[f1]}
${placement[p2]}${feat[f2]}
}`;
var name = `${p1}-${f1}-${p2}-${f2}`;
var folder = "packages/babel-parser/test/fixtures/experimental/class-private-names-duplicated/" + name;
if (!fs.existsSync(folder)) fs.mkdirSync(folder);
fs.writeFileSync(folder + "/input.js", code);
}
```