diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-05-30 17:32:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-30 17:32:48 +0200 |
commit | 550556e948e750dc64039dcffd311752cf8312fd (patch) | |
tree | df52534e766d1ba2ee33603abd373344c3df4c1c | |
parent | 8b037364ac269b7887f3420fefb38be8d0693e9e (diff) |
fix: ES private fields parsing in SWC (#5964)
-rw-r--r-- | cli/swc_util.rs | 6 | ||||
-rw-r--r-- | cli/tests/es_private_fields.js | 15 | ||||
-rw-r--r-- | cli/tests/es_private_fields.js.out | 1 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 5 |
4 files changed, 24 insertions, 3 deletions
diff --git a/cli/swc_util.rs b/cli/swc_util.rs index 968255440..0d1d1ba08 100644 --- a/cli/swc_util.rs +++ b/cli/swc_util.rs @@ -32,9 +32,9 @@ use swc_ecma_visit::Visit; fn get_default_es_config() -> EsConfig { let mut config = EsConfig::default(); config.num_sep = true; - config.class_private_props = false; - config.class_private_methods = false; - config.class_props = false; + config.class_private_props = true; + config.class_private_methods = true; + config.class_props = true; config.export_default_from = true; config.export_namespace_from = true; config.dynamic_import = true; diff --git a/cli/tests/es_private_fields.js b/cli/tests/es_private_fields.js new file mode 100644 index 000000000..b5f83e39c --- /dev/null +++ b/cli/tests/es_private_fields.js @@ -0,0 +1,15 @@ +class Foo { + #field = "field"; + + setValue(val) { + this.#field = val; + } + + getValue() { + return this.#field; + } +} + +const bar = new Foo(); +bar.setValue("PRIVATE"); +console.log(bar.getValue()); diff --git a/cli/tests/es_private_fields.js.out b/cli/tests/es_private_fields.js.out new file mode 100644 index 000000000..be1970b05 --- /dev/null +++ b/cli/tests/es_private_fields.js.out @@ -0,0 +1 @@ +PRIVATE diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 0a50190d2..6ab204082 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -1827,6 +1827,11 @@ itest!(fix_js_imports { output: "fix_js_imports.ts.out", }); +itest!(es_private_fields { + args: "run --quiet --reload es_private_fields.js", + output: "es_private_fields.js.out", +}); + itest!(proto_exploit { args: "run proto_exploit.js", output: "proto_exploit.js.out", |