diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 11164845ba139..c3c2b2e25c722 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14896,7 +14896,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const resolved = resolveAlias(aliasSymbol); if (resolved && resolved.flags & SymbolFlags.TypeAlias) { newAliasSymbol = resolved; - aliasTypeArguments = typeArgumentsFromTypeReferenceNode(node); + aliasTypeArguments = typeArgumentsFromTypeReferenceNode(node) || (typeParameters ? [] : undefined); } } } diff --git a/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.js b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.js new file mode 100644 index 0000000000000..0b01d73ce87ce --- /dev/null +++ b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts] //// + +//// [input.ts] +export type Foo = {}; + +//// [usage.ts] +import {Foo} from "./input"; + +function bar(element: Foo) { + return 1; +} + +bar(1 as Foo); + + +//// [input.js] +"use strict"; +exports.__esModule = true; +//// [usage.js] +"use strict"; +exports.__esModule = true; +function bar(element) { + return 1; +} +bar(1); diff --git a/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.symbols b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.symbols new file mode 100644 index 0000000000000..78574383420fa --- /dev/null +++ b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.symbols @@ -0,0 +1,22 @@ +=== tests/cases/compiler/input.ts === +export type Foo = {}; +>Foo : Symbol(Foo, Decl(input.ts, 0, 0)) +>T : Symbol(T, Decl(input.ts, 0, 16)) + +=== tests/cases/compiler/usage.ts === +import {Foo} from "./input"; +>Foo : Symbol(Foo, Decl(usage.ts, 0, 8)) + +function bar(element: Foo) { +>bar : Symbol(bar, Decl(usage.ts, 0, 28)) +>T : Symbol(T, Decl(usage.ts, 2, 13)) +>element : Symbol(element, Decl(usage.ts, 2, 16)) +>Foo : Symbol(Foo, Decl(usage.ts, 0, 8)) + + return 1; +} + +bar(1 as Foo); +>bar : Symbol(bar, Decl(usage.ts, 0, 28)) +>Foo : Symbol(Foo, Decl(usage.ts, 0, 8)) + diff --git a/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types new file mode 100644 index 0000000000000..6842c50459cc9 --- /dev/null +++ b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/input.ts === +export type Foo = {}; +>Foo : Foo + +=== tests/cases/compiler/usage.ts === +import {Foo} from "./input"; +>Foo : any + +function bar(element: Foo) { +>bar : (element: Foo) => number +>element : Foo + + return 1; +>1 : 1 +} + +bar(1 as Foo); +>bar(1 as Foo) : number +>bar : (element: Foo) => number +>1 as Foo : Foo +>1 : 1 + diff --git a/tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts b/tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts new file mode 100644 index 0000000000000..17f5ab92aae09 --- /dev/null +++ b/tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts @@ -0,0 +1,11 @@ +// @filename: input.ts +export type Foo = {}; + +// @filename: usage.ts +import {Foo} from "./input"; + +function bar(element: Foo) { + return 1; +} + +bar(1 as Foo);