mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-10 06:41:59 -06:00
Fix import type resolution in jsdoc, mark 2 (#35057)
Fake alias resolution only applies when the import type is followed by a qualified name. Otherwise the alias is sufficiently resolved already.
This commit is contained in:
parent
93b1aa3e0b
commit
dfe2f07f88
@ -10818,7 +10818,8 @@ namespace ts {
|
||||
isRequireAlias = isCallExpression(expr) && isRequireCall(expr, /*requireStringLiteralLikeArgument*/ true) && !!valueType.symbol;
|
||||
}
|
||||
const isDelayedMergeClass = symbol !== valueType.symbol && getMergedSymbol(symbol) === valueType.symbol;
|
||||
if (isRequireAlias || node.kind === SyntaxKind.ImportType || isDelayedMergeClass) {
|
||||
const isImportTypeWithQualifier = node.kind === SyntaxKind.ImportType && (node as ImportTypeNode).qualifier;
|
||||
if (isRequireAlias || isImportTypeWithQualifier || isDelayedMergeClass) {
|
||||
typeType = getTypeReferenceType(node, valueType.symbol);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
=== tests/cases/conformance/jsdoc/ex.d.ts ===
|
||||
declare var config: {
|
||||
>config : Symbol(config, Decl(ex.d.ts, 0, 11))
|
||||
|
||||
fix: boolean
|
||||
>fix : Symbol(fix, Decl(ex.d.ts, 0, 21))
|
||||
}
|
||||
export = config;
|
||||
>config : Symbol(config, Decl(ex.d.ts, 0, 11))
|
||||
|
||||
=== tests/cases/conformance/jsdoc/test.js ===
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
>demo : Symbol(demo, Decl(test.js, 0, 0))
|
||||
>a : Symbol(a, Decl(test.js, 1, 14))
|
||||
|
||||
a.fix
|
||||
>a.fix : Symbol(fix, Decl(ex.d.ts, 0, 21))
|
||||
>a : Symbol(a, Decl(test.js, 1, 14))
|
||||
>fix : Symbol(fix, Decl(ex.d.ts, 0, 21))
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
=== tests/cases/conformance/jsdoc/ex.d.ts ===
|
||||
declare var config: {
|
||||
>config : { fix: boolean; }
|
||||
|
||||
fix: boolean
|
||||
>fix : boolean
|
||||
}
|
||||
export = config;
|
||||
>config : { fix: boolean; }
|
||||
|
||||
=== tests/cases/conformance/jsdoc/test.js ===
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
>demo : (a: { fix: boolean; }) => void
|
||||
>a : { fix: boolean; }
|
||||
|
||||
a.fix
|
||||
>a.fix : boolean
|
||||
>a : { fix: boolean; }
|
||||
>fix : boolean
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
=== tests/cases/conformance/jsdoc/ex.d.ts ===
|
||||
export var config: {}
|
||||
>config : Symbol(config, Decl(ex.d.ts, 0, 10))
|
||||
|
||||
=== tests/cases/conformance/jsdoc/test.js ===
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
>demo : Symbol(demo, Decl(test.js, 0, 0))
|
||||
>a : Symbol(a, Decl(test.js, 1, 14))
|
||||
|
||||
a.config
|
||||
>a.config : Symbol(config, Decl(ex.d.ts, 0, 10))
|
||||
>a : Symbol(a, Decl(test.js, 1, 14))
|
||||
>config : Symbol(config, Decl(ex.d.ts, 0, 10))
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
=== tests/cases/conformance/jsdoc/ex.d.ts ===
|
||||
export var config: {}
|
||||
>config : {}
|
||||
|
||||
=== tests/cases/conformance/jsdoc/test.js ===
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
>demo : (a: typeof import("tests/cases/conformance/jsdoc/ex")) => void
|
||||
>a : typeof import("tests/cases/conformance/jsdoc/ex")
|
||||
|
||||
a.config
|
||||
>a.config : {}
|
||||
>a : typeof import("tests/cases/conformance/jsdoc/ex")
|
||||
>config : {}
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
// @noEmit: true
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @Filename: ex.d.ts
|
||||
declare var config: {
|
||||
fix: boolean
|
||||
}
|
||||
export = config;
|
||||
|
||||
// @Filename: test.js
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
a.fix
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
// @noEmit: true
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @Filename: ex.d.ts
|
||||
export var config: {}
|
||||
|
||||
// @Filename: test.js
|
||||
/** @param {import('./ex')} a */
|
||||
function demo(a) {
|
||||
a.config
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user