Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
weswigham committed Dec 5, 2022
1 parent 048029e commit ec8c8b8
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
Expand Down
25 changes: 25 additions & 0 deletions tests/baselines/reference/fixCrashAliasLookupForDefauledImport.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//// [tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts] ////

//// [input.ts]
export type Foo<T = string> = {};

//// [usage.ts]
import {Foo} from "./input";

function bar<T>(element: Foo) {
return 1;
}

bar(1 as Foo<number>);


//// [input.js]
"use strict";
exports.__esModule = true;
//// [usage.js]
"use strict";
exports.__esModule = true;
function bar(element) {
return 1;
}
bar(1);
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
=== tests/cases/compiler/input.ts ===
export type Foo<T = string> = {};
>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<T>(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<number>);
>bar : Symbol(bar, Decl(usage.ts, 0, 28))
>Foo : Symbol(Foo, Decl(usage.ts, 0, 8))

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
=== tests/cases/compiler/input.ts ===
export type Foo<T = string> = {};
>Foo : Foo<T>

=== tests/cases/compiler/usage.ts ===
import {Foo} from "./input";
>Foo : any

function bar<T>(element: Foo) {
>bar : <T>(element: Foo) => number
>element : Foo

return 1;
>1 : 1
}

bar(1 as Foo<number>);
>bar(1 as Foo<number>) : number
>bar : <T>(element: Foo) => number
>1 as Foo<number> : Foo<number>
>1 : 1

11 changes: 11 additions & 0 deletions tests/cases/compiler/fixCrashAliasLookupForDefauledImport.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// @filename: input.ts
export type Foo<T = string> = {};

// @filename: usage.ts
import {Foo} from "./input";

function bar<T>(element: Foo) {
return 1;
}

bar(1 as Foo<number>);
46 changes: 23 additions & 23 deletions tests/cases/fourslash/refactorExtractType_js8.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
/// <reference path='fourslash.ts' />

// @allowJs: true
// @Filename: a.js
/////**
//// * @type {/*a*/Foo/*b*/}
//// */

goTo.file('a.js')
goTo.select("a", "b");
edit.applyRefactor({
refactorName: "Extract type",
actionName: "Extract to typedef",
actionDescription: "Extract to typedef",
newContent:
`/**
* @typedef {Foo} /*RENAME*/NewType
*/
/**
* @type {NewType}
*/`,
});
/// <reference path='fourslash.ts' />

// @allowJs: true
// @Filename: a.js
/////**
//// * @type {/*a*/Foo/*b*/}
//// */

goTo.file('a.js')
goTo.select("a", "b");
edit.applyRefactor({
refactorName: "Extract type",
actionName: "Extract to typedef",
actionDescription: "Extract to typedef",
newContent:
`/**
* @typedef {Foo} /*RENAME*/NewType
*/
/**
* @type {NewType}
*/`,
});

0 comments on commit ec8c8b8

Please sign in to comment.