summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tools/compile.rs6
-rw-r--r--tests/integration/compile_tests.rs29
-rw-r--r--tests/testdata/compile/compiler_options/deno.json5
-rw-r--r--tests/testdata/compile/compiler_options/main.ts42
4 files changed, 81 insertions, 1 deletions
diff --git a/cli/tools/compile.rs b/cli/tools/compile.rs
index 0a5e75f9a..0e8df2952 100644
--- a/cli/tools/compile.rs
+++ b/cli/tools/compile.rs
@@ -72,8 +72,12 @@ pub async fn compile(
graph
};
+ let ts_config_for_emit =
+ cli_options.resolve_ts_config_for_emit(deno_config::TsConfigType::Emit)?;
+ let emit_options =
+ crate::args::ts_config_to_emit_options(ts_config_for_emit.ts_config);
let parser = parsed_source_cache.as_capturing_parser();
- let eszip = eszip::EszipV2::from_graph(graph, &parser, Default::default())?;
+ let eszip = eszip::EszipV2::from_graph(graph, &parser, emit_options)?;
log::info!(
"{} {} to {}",
diff --git a/tests/integration/compile_tests.rs b/tests/integration/compile_tests.rs
index fbf924fbb..b038819a7 100644
--- a/tests/integration/compile_tests.rs
+++ b/tests/integration/compile_tests.rs
@@ -1178,3 +1178,32 @@ fn dynamic_import_bad_data_uri() {
"[WILDCARD]TypeError: Unable to decode data url.[WILDCARD]",
);
}
+
+#[test]
+fn standalone_config_file_respects_compiler_options() {
+ let context = TestContextBuilder::new().build();
+ let dir = context.temp_dir();
+ let exe = if cfg!(windows) {
+ dir.path().join("compiler_options.exe")
+ } else {
+ dir.path().join("compiler_options")
+ };
+ context
+ .new_command()
+ .args_vec([
+ "compile",
+ "--allow-read",
+ "--config",
+ "compile/compiler_options/deno.json",
+ "--output",
+ &exe.to_string_lossy(),
+ "./compile/compiler_options/main.ts",
+ ])
+ .run()
+ .skip_output_check()
+ .assert_exit_code(0);
+ let output = context.new_command().name(&exe).run();
+
+ output.assert_exit_code(0);
+ output.assert_matches_text("[WILDCARD]C.test() called[WILDCARD]");
+}
diff --git a/tests/testdata/compile/compiler_options/deno.json b/tests/testdata/compile/compiler_options/deno.json
new file mode 100644
index 000000000..504cd646e
--- /dev/null
+++ b/tests/testdata/compile/compiler_options/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true
+ }
+}
diff --git a/tests/testdata/compile/compiler_options/main.ts b/tests/testdata/compile/compiler_options/main.ts
new file mode 100644
index 000000000..40a26bbd4
--- /dev/null
+++ b/tests/testdata/compile/compiler_options/main.ts
@@ -0,0 +1,42 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("@A evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@A called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @A");
+ fn();
+ };
+ };
+}
+
+function b() {
+ console.log("@B evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@B called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @B");
+ fn();
+ };
+ };
+}
+
+class C {
+ @a()
+ @b()
+ static test() {
+ console.log("C.test() called");
+ }
+}
+
+C.test();