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

674 B

These tests have been generated using the following script:

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);
}