From 4413bdc802e7e55cb05e062ecf335be42bdeba3a Mon Sep 17 00:00:00 2001 From: MichaelMitchell-at <=> Date: Thu, 26 Sep 2024 13:42:06 -0400 Subject: [PATCH] fix(isolated-declarations): Report uninferrable types in arrays --- crates/oxc_isolated_declarations/src/types.rs | 6 +++++- .../tests/fixtures/infer-expression.ts | 1 + .../tests/snapshots/infer-expression.snap | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/oxc_isolated_declarations/src/types.rs b/crates/oxc_isolated_declarations/src/types.rs index ef118d266e1ba..e01da5a121075 100644 --- a/crates/oxc_isolated_declarations/src/types.rs +++ b/crates/oxc_isolated_declarations/src/types.rs @@ -164,7 +164,11 @@ impl<'a> IsolatedDeclarations<'a> { } _ => self .transform_expression_to_ts_type(element.to_expression()) - .map(TSTupleElement::from), + .map(TSTupleElement::from) + .or_else(|| { + self.error(inferred_type_of_expression(element.span())); + None + }), } })); diff --git a/crates/oxc_isolated_declarations/tests/fixtures/infer-expression.ts b/crates/oxc_isolated_declarations/tests/fixtures/infer-expression.ts index 1ac3f10922aa9..a702e33ebc792 100644 --- a/crates/oxc_isolated_declarations/tests/fixtures/infer-expression.ts +++ b/crates/oxc_isolated_declarations/tests/fixtures/infer-expression.ts @@ -16,3 +16,4 @@ const unaryB = -1_2n; const unaryC = +"str" const unaryD = typeof "str" const unaryE = {E: -"str"} as const +const unaryF = [+"str"] as const diff --git a/crates/oxc_isolated_declarations/tests/snapshots/infer-expression.snap b/crates/oxc_isolated_declarations/tests/snapshots/infer-expression.snap index 8631ee9ad849e..6a49c344a90bf 100644 --- a/crates/oxc_isolated_declarations/tests/snapshots/infer-expression.snap +++ b/crates/oxc_isolated_declarations/tests/snapshots/infer-expression.snap @@ -14,6 +14,7 @@ declare const unaryB = -1_2n; declare const unaryC: unknown; declare const unaryD: unknown; declare const unaryE: {}; +declare const unaryF: readonly []; ==================== Errors ==================== @@ -41,6 +42,14 @@ declare const unaryE: {}; 17 | const unaryD = typeof "str" 18 | const unaryE = {E: -"str"} as const : ^^^^^^ + 19 | const unaryF = [+"str"] as const + `---- + + x TS9013: Expression type can't be inferred with --isolatedDeclarations. + ,-[19:17] + 18 | const unaryE = {E: -"str"} as const + 19 | const unaryF = [+"str"] as const + : ^^^^^^ `----