Skip to content

Commit

Permalink
fix(compile): respect compiler options for emit (#22521)
Browse files Browse the repository at this point in the history
`deno compile` was ignoring configuration file and thus not applying
`compilerOptions` to influence the way files were emitted.
  • Loading branch information
bartlomieju committed Feb 21, 2024
1 parent 190776f commit 197d248
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 1 deletion.
6 changes: 5 additions & 1 deletion cli/tools/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {}",
Expand Down
29 changes: 29 additions & 0 deletions tests/integration/compile_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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]");
}
5 changes: 5 additions & 0 deletions tests/testdata/compile/compiler_options/deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"compilerOptions": {
"experimentalDecorators": true
}
}
42 changes: 42 additions & 0 deletions tests/testdata/compile/compiler_options/main.ts
Original file line number Diff line number Diff line change
@@ -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();

0 comments on commit 197d248

Please sign in to comment.