summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tests/integration/npm_tests.rs21
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs67
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json5
-rw-r--r--cli/tests/testdata/npm/reserved_word_exports/main.out139
-rw-r--r--cli/tests/testdata/npm/reserved_word_exports/main.ts3
-rw-r--r--ext/node/analyze.rs40
6 files changed, 259 insertions, 16 deletions
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs
index 014f22658..884f2a3a9 100644
--- a/cli/tests/integration/npm_tests.rs
+++ b/cli/tests/integration/npm_tests.rs
@@ -103,13 +103,13 @@ itest!(conditional_exports {
});
itest!(conditional_exports_node_modules_dir {
- args:
- "run --allow-read --node-modules-dir $TESTDATA/npm/conditional_exports/main.js",
- output: "npm/conditional_exports/main_node_modules.out",
- envs: env_vars_for_npm_tests(),
- http_server: true,
- temp_cwd: true,
- });
+ args:
+ "run --allow-read --node-modules-dir $TESTDATA/npm/conditional_exports/main.js",
+ output: "npm/conditional_exports/main_node_modules.out",
+ envs: env_vars_for_npm_tests(),
+ http_server: true,
+ temp_cwd: true,
+});
itest!(dual_cjs_esm {
args: "run -A --quiet npm/dual_cjs_esm/main.ts",
@@ -2021,3 +2021,10 @@ fn top_level_install_package_json_explicit_opt_in() {
assert!(node_modules_dir.join("@denotest").exists());
}
+
+itest!(reserved_word_exports {
+ args: "run npm/reserved_word_exports/main.ts",
+ output: "npm/reserved_word_exports/main.out",
+ envs: env_vars_for_npm_tests(),
+ http_server: true,
+});
diff --git a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs b/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs
new file mode 100644
index 000000000..78e0563e4
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs
@@ -0,0 +1,67 @@
+exports["abstract"] = "abstract";
+exports["arguments"] = "arguments";
+exports["async"] = "async";
+exports["await"] = "await";
+exports["boolean"] = "boolean";
+exports["break"] = "break";
+exports["byte"] = "byte";
+exports["case"] = "case";
+exports["catch"] = "catch";
+exports["char"] = "char";
+exports["class"] = "class";
+exports["const"] = "const";
+exports["continue"] = "continue";
+exports["debugger"] = "debugger";
+exports["default"] = "default";
+exports["delete"] = "delete";
+exports["do"] = "do";
+exports["double"] = "double";
+exports["else"] = "else";
+exports["enum"] = "enum";
+exports["eval"] = "eval";
+exports["export"] = "export";
+exports["extends"] = "extends";
+exports["false"] = "false";
+exports["final"] = "final";
+exports["finally"] = "finally";
+exports["float"] = "float";
+exports["for"] = "for";
+exports["function"] = "function";
+exports["get"] = "get";
+exports["goto"] = "goto";
+exports["if"] = "if";
+exports["implements"] = "implements";
+exports["import"] = "import";
+exports["in"] = "in";
+exports["instanceof"] = "instanceof";
+exports["int"] = "int";
+exports["interface"] = "interface";
+exports["let"] = "let";
+exports["long"] = "long";
+exports["native"] = "native";
+exports["new"] = "new";
+exports["null"] = "null";
+exports["package"] = "package";
+exports["private"] = "private";
+exports["protected"] = "protected";
+exports["public"] = "public";
+exports["return"] = "return";
+exports["set"] = "set";
+exports["short"] = "short";
+exports["static"] = "static";
+exports["super"] = "super";
+exports["switch"] = "switch";
+exports["synchronized"] = "synchronized";
+exports["this"] = "this";
+exports["throw"] = "throw";
+exports["throws"] = "throws";
+exports["transient"] = "transient";
+exports["true"] = "true";
+exports["try"] = "try";
+exports["typeof"] = "typeof";
+exports["var"] = "var";
+exports["void"] = "void";
+exports["volatile"] = "volatile";
+exports["while"] = "while";
+exports["with"] = "with";
+exports["yield"] = "yield";
diff --git a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json
new file mode 100644
index 000000000..215b561d3
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "@denotest/reserved-word-exports",
+ "version": "1.0.0",
+ "main": "index.cjs"
+ }
diff --git a/cli/tests/testdata/npm/reserved_word_exports/main.out b/cli/tests/testdata/npm/reserved_word_exports/main.out
new file mode 100644
index 000000000..b98d1004d
--- /dev/null
+++ b/cli/tests/testdata/npm/reserved_word_exports/main.out
@@ -0,0 +1,139 @@
+Download http://localhost:4545/npm/registry/@denotest/reserved-word-exports
+Download http://localhost:4545/npm/registry/@denotest/reserved-word-exports/1.0.0.tgz
+[Module: null prototype] {
+ abstract: "abstract",
+ arguments: "arguments",
+ async: "async",
+ await: "await",
+ boolean: "boolean",
+ break: "break",
+ byte: "byte",
+ case: "case",
+ catch: "catch",
+ char: "char",
+ class: "class",
+ const: "const",
+ continue: "continue",
+ debugger: "debugger",
+ default: {
+ abstract: "abstract",
+ arguments: "arguments",
+ async: "async",
+ await: "await",
+ boolean: "boolean",
+ break: "break",
+ byte: "byte",
+ case: "case",
+ catch: "catch",
+ char: "char",
+ class: "class",
+ const: "const",
+ continue: "continue",
+ debugger: "debugger",
+ default: "default",
+ delete: "delete",
+ do: "do",
+ double: "double",
+ else: "else",
+ enum: "enum",
+ eval: "eval",
+ export: "export",
+ extends: "extends",
+ false: "false",
+ final: "final",
+ finally: "finally",
+ float: "float",
+ for: "for",
+ function: "function",
+ get: "get",
+ goto: "goto",
+ if: "if",
+ implements: "implements",
+ import: "import",
+ in: "in",
+ instanceof: "instanceof",
+ int: "int",
+ interface: "interface",
+ let: "let",
+ long: "long",
+ native: "native",
+ new: "new",
+ null: "null",
+ package: "package",
+ private: "private",
+ protected: "protected",
+ public: "public",
+ return: "return",
+ set: "set",
+ short: "short",
+ static: "static",
+ super: "super",
+ switch: "switch",
+ synchronized: "synchronized",
+ this: "this",
+ throw: "throw",
+ throws: "throws",
+ transient: "transient",
+ true: "true",
+ try: "try",
+ typeof: "typeof",
+ var: "var",
+ void: "void",
+ volatile: "volatile",
+ while: "while",
+ with: "with",
+ yield: "yield"
+ },
+ delete: "delete",
+ do: "do",
+ double: "double",
+ else: "else",
+ enum: "enum",
+ eval: "eval",
+ export: "export",
+ extends: "extends",
+ false: "false",
+ final: "final",
+ finally: "finally",
+ float: "float",
+ for: "for",
+ function: "function",
+ get: "get",
+ goto: "goto",
+ if: "if",
+ implements: "implements",
+ import: "import",
+ in: "in",
+ instanceof: "instanceof",
+ int: "int",
+ interface: "interface",
+ let: "let",
+ long: "long",
+ native: "native",
+ new: "new",
+ null: "null",
+ package: "package",
+ private: "private",
+ protected: "protected",
+ public: "public",
+ return: "return",
+ set: "set",
+ short: "short",
+ static: "static",
+ super: "super",
+ switch: "switch",
+ synchronized: "synchronized",
+ this: "this",
+ throw: "throw",
+ throws: "throws",
+ transient: "transient",
+ true: "true",
+ try: "try",
+ typeof: "typeof",
+ var: "var",
+ void: "void",
+ volatile: "volatile",
+ while: "while",
+ with: "with",
+ yield: "yield"
+}
diff --git a/cli/tests/testdata/npm/reserved_word_exports/main.ts b/cli/tests/testdata/npm/reserved_word_exports/main.ts
new file mode 100644
index 000000000..33cf183d3
--- /dev/null
+++ b/cli/tests/testdata/npm/reserved_word_exports/main.ts
@@ -0,0 +1,3 @@
+import * as exports from "npm:@denotest/reserved-word-exports";
+
+console.log(exports);
diff --git a/ext/node/analyze.rs b/ext/node/analyze.rs
index 2e5c2d15f..7d98f53db 100644
--- a/ext/node/analyze.rs
+++ b/ext/node/analyze.rs
@@ -366,9 +366,16 @@ fn esm_code_from_top_level_decls(
static RESERVED_WORDS: Lazy<HashSet<&str>> = Lazy::new(|| {
HashSet::from([
+ "abstract",
+ "arguments",
+ "async",
+ "await",
+ "boolean",
"break",
+ "byte",
"case",
"catch",
+ "char",
"class",
"const",
"continue",
@@ -376,41 +383,56 @@ static RESERVED_WORDS: Lazy<HashSet<&str>> = Lazy::new(|| {
"default",
"delete",
"do",
+ "double",
"else",
+ "enum",
+ "eval",
"export",
"extends",
"false",
+ "final",
"finally",
+ "float",
"for",
"function",
+ "get",
+ "goto",
"if",
+ "implements",
"import",
"in",
"instanceof",
+ "int",
+ "interface",
+ "let",
+ "long",
+ "native",
"new",
"null",
+ "package",
+ "private",
+ "protected",
+ "public",
"return",
+ "set",
+ "short",
+ "static",
"super",
"switch",
+ "synchronized",
"this",
"throw",
+ "throws",
+ "transient",
"true",
"try",
"typeof",
"var",
"void",
+ "volatile",
"while",
"with",
"yield",
- "let",
- "enum",
- "implements",
- "interface",
- "package",
- "private",
- "protected",
- "public",
- "static",
])
});