diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 637249acfe23c..e36d7db63e4b6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4395,6 +4395,7 @@ namespace ts { getProjectReferenceRedirect: fileName => host.getProjectReferenceRedirect(fileName), isSourceOfProjectReferenceRedirect: fileName => host.isSourceOfProjectReferenceRedirect(fileName), fileExists: fileName => host.fileExists(fileName), + getFileIncludeReasons: () => host.getFileIncludeReasons(), } : undefined }, encounteredError: false, visitedTypes: undefined, diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 8d495dfebda0f..24174483fdc6d 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -849,7 +849,8 @@ namespace ts { useCaseSensitiveFileNames: () => host.useCaseSensitiveFileNames(), getProgramBuildInfo: returnUndefined, getSourceFileFromReference: returnUndefined, - redirectTargetsMap: createMultiMap() + redirectTargetsMap: createMultiMap(), + getFileIncludeReasons: notImplemented, }; emitFiles( notImplementedResolver, diff --git a/src/compiler/moduleSpecifiers.ts b/src/compiler/moduleSpecifiers.ts index 2b605fcd312e5..38e0a0bc2e3e0 100644 --- a/src/compiler/moduleSpecifiers.ts +++ b/src/compiler/moduleSpecifiers.ts @@ -104,8 +104,21 @@ namespace ts.moduleSpecifiers { const info = getInfo(importingSourceFile.path, host); const moduleSourceFile = getSourceFileOfNode(moduleSymbol.valueDeclaration || getNonAugmentationDeclaration(moduleSymbol)); const modulePaths = getAllModulePaths(importingSourceFile.path, moduleSourceFile.originalFileName, host); - const preferences = getPreferences(userPreferences, compilerOptions, importingSourceFile); + + const existingSpecifier = forEach(modulePaths, modulePath => forEach( + host.getFileIncludeReasons().get(toPath(modulePath.path, host.getCurrentDirectory(), info.getCanonicalFileName)), + reason => { + if (reason.kind !== FileIncludeKind.Import || reason.file !== importingSourceFile.path) return undefined; + const specifier = getModuleNameStringLiteralAt(importingSourceFile, reason.index).text; + // If the preference is for non relative and the module specifier is relative, ignore it + return preferences.relativePreference !== RelativePreference.NonRelative || !pathIsRelative(specifier) ? + specifier : + undefined; + } + )); + if (existingSpecifier) return [existingSpecifier]; + const importedFileIsInNodeModules = some(modulePaths, p => p.isInNodeModules); // Module specifier priority: diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 54e76afb13df8..0756ac92f3071 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1649,6 +1649,7 @@ namespace ts { getProgramBuildInfo: () => program.getProgramBuildInfo && program.getProgramBuildInfo(), getSourceFileFromReference: (file, ref) => program.getSourceFileFromReference(file, ref), redirectTargetsMap, + getFileIncludeReasons: program.getFileIncludeReasons, }; } @@ -3968,7 +3969,8 @@ namespace ts { return res; } - function getModuleNameStringLiteralAt({ imports, moduleAugmentations }: SourceFile, index: number): StringLiteralLike { + /* @internal */ + export function getModuleNameStringLiteralAt({ imports, moduleAugmentations }: SourceFile, index: number): StringLiteralLike { if (index < imports.length) return imports[index]; let augIndex = imports.length; for (const aug of moduleAugmentations) { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 3adbac3ad991c..791db3f88432e 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -7953,6 +7953,7 @@ namespace ts { readonly redirectTargetsMap: RedirectTargetsMap; getProjectReferenceRedirect(fileName: string): string | undefined; isSourceOfProjectReferenceRedirect(fileName: string): boolean; + getFileIncludeReasons(): MultiMap; } // Note: this used to be deprecated in our public API, but is still used internally diff --git a/src/services/utilities.ts b/src/services/utilities.ts index c9a8703a7afdd..8344c3e60ff87 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1835,6 +1835,7 @@ namespace ts { getProjectReferenceRedirect: fileName => program.getProjectReferenceRedirect(fileName), isSourceOfProjectReferenceRedirect: fileName => program.isSourceOfProjectReferenceRedirect(fileName), getNearestAncestorDirectoryWithPackageJson: maybeBind(host, host.getNearestAncestorDirectoryWithPackageJson), + getFileIncludeReasons: () => program.getFileIncludeReasons(), }; } diff --git a/src/testRunner/unittests/tsbuild/declarationEmit.ts b/src/testRunner/unittests/tsbuild/declarationEmit.ts index 6139f585b9663..122912e026d8c 100644 --- a/src/testRunner/unittests/tsbuild/declarationEmit.ts +++ b/src/testRunner/unittests/tsbuild/declarationEmit.ts @@ -75,5 +75,44 @@ declare type MyNominal = T & { }), commandLineArgs: ["--b", "/src/solution/tsconfig.json", "--verbose"] }); + + verifyTsc({ + scenario: "declarationEmit", + subScenario: "when declaration file used inferred type from referenced project", + fs: () => loadProjectFromFiles({ + "/src/tsconfig.json": JSON.stringify({ + compilerOptions: { + composite: true, + baseUrl: ".", + paths: { "@fluentui/*": ["packages/*/src"] } + } + }), + "/src/packages/pkg1/src/index.ts": Utils.dedent` +export interface IThing { + a: string; +} +export interface IThings { + thing1: IThing; +}`, + "/src/packages/pkg1/tsconfig.json": JSON.stringify({ + extends: "../../tsconfig", + compilerOptions: { outDir: "lib" }, + include: ["src"] + }), + "/src/packages/pkg2/src/index.ts": Utils.dedent` +import { IThings } from '@fluentui/pkg1'; +export function fn4() { + const a: IThings = { thing1: { a: 'b' } }; + return a.thing1; +}`, + "/src/packages/pkg2/tsconfig.json": JSON.stringify({ + extends: "../../tsconfig", + compilerOptions: { outDir: "lib" }, + include: ["src"], + references: [{ path: "../pkg1" }] + }), + }), + commandLineArgs: ["--b", "/src/packages/pkg2/tsconfig.json", "--verbose"] + }); }); } diff --git a/src/testRunner/unittests/tsserver/projectReferenceErrors.ts b/src/testRunner/unittests/tsserver/projectReferenceErrors.ts index 432cd81098128..0fb2f8d883f9b 100644 --- a/src/testRunner/unittests/tsserver/projectReferenceErrors.ts +++ b/src/testRunner/unittests/tsserver/projectReferenceErrors.ts @@ -149,7 +149,7 @@ fnErr(); { line: 4, offset: 5 }, { line: 4, offset: 10 }, Diagnostics.Module_0_has_no_exported_member_1, - [`"../dependency/fns"`, "fnErr"], + [`"../decls/fns"`, "fnErr"], "error", ) ], diff --git a/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.js b/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.js index 61ca223c5750b..b4a0c03e6f168 100644 --- a/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.js +++ b/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.js @@ -45,4 +45,4 @@ export interface MutableRefObject { current: T; } export declare function useRef(current: T): MutableRefObject; -export declare const useCsvParser: () => MutableRefObject; +export declare const useCsvParser: () => MutableRefObject; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt index 23e68afb15602..55fb4f65cc1b4 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(3,27): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(5,27): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,27): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,30): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(9,27): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(11,27): error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. Did you mean to use 'import m from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(3,27): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(5,27): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,27): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,30): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(9,27): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(11,27): error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. Did you mean to use 'import m from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0.ts (0 errors) ==== @@ -15,24 +15,24 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(11,27) var x1: number = defaultBinding1; import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? var x1: number = defaultBinding2; import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? var x1: number = defaultBinding3; import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. Did you mean to use 'import a from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? var x1: number = defaultBinding4; import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. Did you mean to use 'import x from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? var x1: number = defaultBinding5; import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; ~ -!!! error TS2614: Module '"./es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. Did you mean to use 'import m from "./es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? +!!! error TS2614: Module '"es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. Did you mean to use 'import m from "es6ImportDefaultBindingFollowedWithNamedImport1_0"' instead? var x1: number = defaultBinding6; \ No newline at end of file diff --git a/tests/baselines/reference/tsbuild/declarationEmit/initial-build/when-declaration-file-used-inferred-type-from-referenced-project.js b/tests/baselines/reference/tsbuild/declarationEmit/initial-build/when-declaration-file-used-inferred-type-from-referenced-project.js new file mode 100644 index 0000000000000..4986a8f274631 --- /dev/null +++ b/tests/baselines/reference/tsbuild/declarationEmit/initial-build/when-declaration-file-used-inferred-type-from-referenced-project.js @@ -0,0 +1,176 @@ +Input:: +//// [/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } +interface ReadonlyArray {} +declare const console: { log(msg: any): void; }; + +//// [/src/packages/pkg1/src/index.ts] +export interface IThing { + a: string; +} +export interface IThings { + thing1: IThing; +} + +//// [/src/packages/pkg1/tsconfig.json] +{"extends":"../../tsconfig","compilerOptions":{"outDir":"lib"},"include":["src"]} + +//// [/src/packages/pkg2/src/index.ts] +import { IThings } from '@fluentui/pkg1'; +export function fn4() { + const a: IThings = { thing1: { a: 'b' } }; + return a.thing1; +} + +//// [/src/packages/pkg2/tsconfig.json] +{"extends":"../../tsconfig","compilerOptions":{"outDir":"lib"},"include":["src"],"references":[{"path":"../pkg1"}]} + +//// [/src/tsconfig.json] +{"compilerOptions":{"composite":true,"baseUrl":".","paths":{"@fluentui/*":["packages/*/src"]}}} + + + +Output:: +/lib/tsc --b /src/packages/pkg2/tsconfig.json --verbose +[12:00:00 AM] Projects in this build: + * src/packages/pkg1/tsconfig.json + * src/packages/pkg2/tsconfig.json + +[12:00:00 AM] Project 'src/packages/pkg1/tsconfig.json' is out of date because output file 'src/packages/pkg1/lib/src/index.js' does not exist + +[12:00:00 AM] Building project '/src/packages/pkg1/tsconfig.json'... + +[12:00:00 AM] Project 'src/packages/pkg2/tsconfig.json' is out of date because output file 'src/packages/pkg2/lib/src/index.js' does not exist + +[12:00:00 AM] Building project '/src/packages/pkg2/tsconfig.json'... + +exitCode:: ExitStatus.Success + + +//// [/src/packages/pkg1/lib/src/index.d.ts] +export interface IThing { + a: string; +} +export interface IThings { + thing1: IThing; +} + + +//// [/src/packages/pkg1/lib/src/index.js] +"use strict"; +exports.__esModule = true; + + +//// [/src/packages/pkg1/lib/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../src/index.ts": { + "version": "-2072077482-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}", + "signature": "-5386205042-export interface IThing {\r\n a: string;\r\n}\r\nexport interface IThings {\r\n thing1: IThing;\r\n}\r\n", + "affectsGlobalScope": false + } + }, + "options": { + "composite": true, + "baseUrl": "../../..", + "paths": { + "@fluentui/*": [ + "packages/*/src" + ] + }, + "pathsBasePath": "/src", + "outDir": "./", + "configFilePath": "../tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../../lib/lib.d.ts", + "../src/index.ts" + ] + }, + "version": "FakeTSVersion" +} + +//// [/src/packages/pkg2/lib/src/index.d.ts] +export declare function fn4(): import("@fluentui/pkg1").IThing; + + +//// [/src/packages/pkg2/lib/src/index.js] +"use strict"; +exports.__esModule = true; +exports.fn4 = void 0; +function fn4() { + var a = { thing1: { a: 'b' } }; + return a.thing1; +} +exports.fn4 = fn4; + + +//// [/src/packages/pkg2/lib/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../../pkg1/lib/src/index.d.ts": { + "version": "-5386205042-export interface IThing {\r\n a: string;\r\n}\r\nexport interface IThings {\r\n thing1: IThing;\r\n}\r\n", + "signature": "-5386205042-export interface IThing {\r\n a: string;\r\n}\r\nexport interface IThings {\r\n thing1: IThing;\r\n}\r\n", + "affectsGlobalScope": false + }, + "../src/index.ts": { + "version": "8515046367-import { IThings } from '@fluentui/pkg1';\nexport function fn4() {\n const a: IThings = { thing1: { a: 'b' } };\n return a.thing1;\n}", + "signature": "-9447422063-export declare function fn4(): import(\"@fluentui/pkg1\").IThing;\r\n", + "affectsGlobalScope": false + } + }, + "options": { + "composite": true, + "baseUrl": "../../..", + "paths": { + "@fluentui/*": [ + "packages/*/src" + ] + }, + "pathsBasePath": "/src", + "outDir": "./", + "configFilePath": "../tsconfig.json" + }, + "referencedMap": { + "../src/index.ts": [ + "../../pkg1/lib/src/index.d.ts" + ] + }, + "exportedModulesMap": { + "../src/index.ts": [ + "../../pkg1/lib/src/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "../../../../lib/lib.d.ts", + "../../pkg1/lib/src/index.d.ts", + "../src/index.ts" + ] + }, + "version": "FakeTSVersion" +} + diff --git a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js index f1e988e16f528..cb13986460bac 100644 --- a/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js +++ b/tests/baselines/reference/tsbuild/javascriptProjectEmit/initial-build/loads-js-based-projects-and-emits-them-correctly.js @@ -233,7 +233,7 @@ export function getVar(): keyof typeof variable; declare namespace variable { const key: MyNominal; } -import { MyNominal } from "../sub-project"; +import { MyNominal } from "../sub-project/index"; export {}; @@ -274,7 +274,7 @@ exports.getVar = getVar; }, "../../src/sub-project-2/index.js": { "version": "9520601400-import { MyNominal } from '../sub-project/index';\n\nconst variable = {\n key: /** @type {MyNominal} */('value'),\n};\n\n/**\n * @return {keyof typeof variable}\n */\nexport function getVar() {\n return 'key';\n}\n", - "signature": "-24091164549-/**\r\n * @return {keyof typeof variable}\r\n */\r\nexport function getVar(): keyof typeof variable;\r\ndeclare namespace variable {\r\n const key: MyNominal;\r\n}\r\nimport { MyNominal } from \"../sub-project\";\r\nexport {};\r\n", + "signature": "-8647857726-/**\r\n * @return {keyof typeof variable}\r\n */\r\nexport function getVar(): keyof typeof variable;\r\ndeclare namespace variable {\r\n const key: MyNominal;\r\n}\r\nimport { MyNominal } from \"../sub-project/index\";\r\nexport {};\r\n", "affectsGlobalScope": false } }, diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.errors.txt b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.errors.txt index a6373dbda5699..30cec591dfec4 100644 --- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.errors.txt +++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/declarationEmit/main.ts(1,10): error TS2305: Module '"./node_modules/ext/ts3.1"' has no exported member 'fa'. +tests/cases/conformance/declarationEmit/main.ts(1,10): error TS2305: Module '"ext"' has no exported member 'fa'. ==== tests/cases/conformance/declarationEmit/tsconfig.json (0 errors) ==== @@ -30,7 +30,7 @@ tests/cases/conformance/declarationEmit/main.ts(1,10): error TS2305: Module '"./ ==== tests/cases/conformance/declarationEmit/main.ts (1 errors) ==== import { fa } from "ext"; ~~ -!!! error TS2305: Module '"./node_modules/ext/ts3.1"' has no exported member 'fa'. +!!! error TS2305: Module '"ext"' has no exported member 'fa'. import { fb } from "ext/other"; export const va = fa();