diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 9f08bdb35d83d..3ee4748496899 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -5688,14 +5688,6 @@ "category": "Message", "code": 6361 }, - "Skipping build of project '{0}' because its dependency '{1}' has errors": { - "category": "Message", - "code": 6362 - }, - "Project '{0}' can't be built because its dependency '{1}' has errors": { - "category": "Message", - "code": 6363 - }, "Build one or more projects and their dependencies, if out of date": { "category": "Message", "code": 6364 @@ -5740,14 +5732,6 @@ "category": "Message", "code": 6381 }, - "Skipping build of project '{0}' because its dependency '{1}' was not built": { - "category": "Message", - "code": 6382 - }, - "Project '{0}' can't be built because its dependency '{1}' was not built": { - "category": "Message", - "code": 6383 - }, "Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it.": { "category": "Message", "code": 6384 diff --git a/src/compiler/tsbuild.ts b/src/compiler/tsbuild.ts index 74ec7be532261..abb6c83e30978 100644 --- a/src/compiler/tsbuild.ts +++ b/src/compiler/tsbuild.ts @@ -25,7 +25,6 @@ export enum UpToDateStatusType { OutOfDateOptions, OutOfDateRoots, UpstreamOutOfDate, - UpstreamBlocked, ComputingUpstream, TsVersionOutputOfDate, UpToDateWithInputFileText, @@ -48,7 +47,6 @@ export type UpToDateStatus = | Status.OutOfDateBuildInfo | Status.OutOfDateRoots | Status.UpstreamOutOfDate - | Status.UpstreamBlocked | Status.ComputingUpstream | Status.TsVersionOutOfDate | Status.ContainerOnly @@ -137,15 +135,6 @@ export namespace Status { upstreamProjectName: string; } - /** - * This project depends an upstream project with build errors - */ - export interface UpstreamBlocked { - type: UpToDateStatusType.UpstreamBlocked; - upstreamProjectName: string; - upstreamProjectBlocked: boolean; - } - /** * Computing status of upstream projects referenced */ diff --git a/src/compiler/tsbuildPublic.ts b/src/compiler/tsbuildPublic.ts index 041676f25412e..f22c3d53db239 100644 --- a/src/compiler/tsbuildPublic.ts +++ b/src/compiler/tsbuildPublic.ts @@ -1128,18 +1128,18 @@ function createBuildOrUpdateInvalidedProject( updateOutputTimestampsWorker(state, config, projectPath, Diagnostics.Updating_unchanged_output_timestamps_of_project_0, emittedOutputs); } state.projectErrorsReported.set(projectPath, true); + buildResult = program.hasChangedEmitSignature?.() ? BuildResultFlags.None : BuildResultFlags.DeclarationOutputUnchanged; if (!diagnostics.length) { state.diagnostics.delete(projectPath); state.projectStatus.set(projectPath, { type: UpToDateStatusType.UpToDate, oldestOutputFileName: firstOrUndefinedIterator(emittedOutputs.values()) ?? getFirstProjectOutput(config, !host.useCaseSensitiveFileNames()), }); - buildResult = program.hasChangedEmitSignature?.() ? BuildResultFlags.None : BuildResultFlags.DeclarationOutputUnchanged; } else { state.diagnostics.set(projectPath, diagnostics); state.projectStatus.set(projectPath, { type: UpToDateStatusType.Unbuildable, reason: `it had errors` }); - buildResult = BuildResultFlags.AnyErrors; + buildResult |= BuildResultFlags.AnyErrors; } afterProgramDone(state, program); step = BuildStep.QueueReferencingProjects; @@ -1256,23 +1256,6 @@ function getNextInvalidatedProjectCreateInfo( } } - if (status.type === UpToDateStatusType.UpstreamBlocked) { - verboseReportProjectStatus(state, project, status); - reportAndStoreErrors(state, projectPath, getConfigFileParsingDiagnostics(config)); - projectPendingBuild.delete(projectPath); - if (options.verbose) { - reportStatus( - state, - status.upstreamProjectBlocked ? - Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_was_not_built : - Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_has_errors, - project, - status.upstreamProjectName, - ); - } - continue; - } - if (status.type === UpToDateStatusType.ContainerOnly) { verboseReportProjectStatus(state, project, status); reportAndStoreErrors(state, projectPath, getConfigFileParsingDiagnostics(config)); @@ -1474,26 +1457,6 @@ function getUpToDateStatusWorker(state: SolutionBuilde continue; } - // An upstream project is blocked - if ( - refStatus.type === UpToDateStatusType.Unbuildable || - refStatus.type === UpToDateStatusType.UpstreamBlocked - ) { - return { - type: UpToDateStatusType.UpstreamBlocked, - upstreamProjectName: ref.path, - upstreamProjectBlocked: refStatus.type === UpToDateStatusType.UpstreamBlocked, - }; - } - - // If the upstream project is out of date, then so are we (someone shouldn't have asked, though?) - if (refStatus.type !== UpToDateStatusType.UpToDate) { - return { - type: UpToDateStatusType.UpstreamOutOfDate, - upstreamProjectName: ref.path, - }; - } - if (!force) (referenceStatuses ||= []).push({ ref, refStatus, resolvedRefPath, resolvedConfig }); } } @@ -1701,7 +1664,7 @@ function getUpToDateStatusWorker(state: SolutionBuilde for (const { ref, refStatus, resolvedConfig, resolvedRefPath } of referenceStatuses) { // If the upstream project's newest file is older than our oldest output, we // can't be out of date because of it - if (refStatus.newestInputFileTime && refStatus.newestInputFileTime <= oldestOutputFileTime) { + if ((refStatus as Status.UpToDate).newestInputFileTime && (refStatus as Status.UpToDate).newestInputFileTime! <= oldestOutputFileTime) { continue; } @@ -1867,8 +1830,6 @@ function queueReferencingProjects( buildOrder: readonly ResolvedConfigFileName[], buildResult: BuildResultFlags, ) { - // Queue only if there are no errors - if (buildResult & BuildResultFlags.AnyErrors) return; // Only composite projects can be referenced by other projects if (!config.options.composite) return; // Always use build order to queue projects @@ -1904,12 +1865,6 @@ function queueReferencingProjects( }); } break; - - case UpToDateStatusType.UpstreamBlocked: - if (toResolvedConfigFilePath(state, resolveProjectName(state, status.upstreamProjectName)) === projectPath) { - clearProjectStatus(state, nextProjectPath); - } - break; } } addProjToQueue(state, nextProjectPath, ProgramUpdateLevel.Update); @@ -2413,15 +2368,6 @@ function reportUpToDateStatus(state: SolutionBuilderSt relName(state, configFileName), relName(state, status.upstreamProjectName), ); - case UpToDateStatusType.UpstreamBlocked: - return reportStatus( - state, - status.upstreamProjectBlocked ? - Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_was_not_built : - Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_has_errors, - relName(state, configFileName), - relName(state, status.upstreamProjectName), - ); case UpToDateStatusType.Unbuildable: return reportStatus( state, diff --git a/src/testRunner/unittests/tsbuild/sample.ts b/src/testRunner/unittests/tsbuild/sample.ts index 7740022960b1b..7b5498ecec553 100644 --- a/src/testRunner/unittests/tsbuild/sample.ts +++ b/src/testRunner/unittests/tsbuild/sample.ts @@ -353,7 +353,7 @@ describe("unittests:: tsbuild:: on 'sample1' project", () => { describe("downstream-blocked compilations", () => { verifyTsc({ scenario: "sample1", - subScenario: "does not build downstream projects if upstream projects have errors", + subScenario: "builds downstream projects even if upstream projects have errors", fs: () => projFs, commandLineArgs: ["--b", "tests", "--verbose"], modifyFs: fs => replaceText(fs, "logic/index.ts", "c.multiply(10, 15)", `c.muitply()`), diff --git a/src/testRunner/unittests/tsbuildWatch/programUpdates.ts b/src/testRunner/unittests/tsbuildWatch/programUpdates.ts index b3a4f1cbfa78c..d5dfc7d2742db 100644 --- a/src/testRunner/unittests/tsbuildWatch/programUpdates.ts +++ b/src/testRunner/unittests/tsbuildWatch/programUpdates.ts @@ -300,6 +300,15 @@ createSomeObject().message;`, caption: "change core", edit: sys => sys.appendFile("core/index.ts", `\nlet x: string = 10;`), // Builds core + timeouts: sys => { + sys.runQueuedTimeoutCallbacks(); + sys.runQueuedTimeoutCallbacks(); + }, + }, + { + caption: "fix error in logic", + edit: sys => sys.replaceFileText("logic/index.ts", `\nlet y: string = 10;`, ""), + // Builds logic timeouts: sys => sys.runQueuedTimeoutCallbacks(), }, ], diff --git a/tests/baselines/reference/tsbuild/demo/in-bad-ref-branch-reports-the-error-about-files-not-in-rootDir-at-the-import-location.js b/tests/baselines/reference/tsbuild/demo/in-bad-ref-branch-reports-the-error-about-files-not-in-rootDir-at-the-import-location.js index fd669f18d8422..705207a854ef0 100644 --- a/tests/baselines/reference/tsbuild/demo/in-bad-ref-branch-reports-the-error-about-files-not-in-rootDir-at-the-import-location.js +++ b/tests/baselines/reference/tsbuild/demo/in-bad-ref-branch-reports-the-error-about-files-not-in-rootDir-at-the-import-location.js @@ -205,18 +205,18 @@ Output::    ~~~ File is included via import here. -[HH:MM:SS AM] Project 'animals/tsconfig.json' can't be built because its dependency 'core' has errors +[HH:MM:SS AM] Project 'animals/tsconfig.json' is out of date because output file 'lib/animals/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/demo/animals/tsconfig.json' because its dependency '/user/username/projects/demo/core' has errors +[HH:MM:SS AM] Building project '/user/username/projects/demo/animals/tsconfig.json'... -[HH:MM:SS AM] Project 'zoo/tsconfig.json' can't be built because its dependency 'animals' was not built +[HH:MM:SS AM] Project 'zoo/tsconfig.json' is out of date because output file 'lib/zoo/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/demo/zoo/tsconfig.json' because its dependency '/user/username/projects/demo/animals' was not built +[HH:MM:SS AM] Building project '/user/username/projects/demo/zoo/tsconfig.json'... Found 7 errors. -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/user/username/projects/demo/animals/animal.d.ts] @@ -271,6 +271,157 @@ var dog_1 = require("./dog"); Object.defineProperty(exports, "createDog", { enumerable: true, get: function () { return dog_1.createDog; } }); +//// [/user/username/projects/demo/lib/animals/animal.d.ts] +export type Size = "small" | "medium" | "large"; +export default interface Animal { + size: Size; +} + + +//// [/user/username/projects/demo/lib/animals/animal.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); + + +//// [/user/username/projects/demo/lib/animals/dog.d.ts] +import Animal from '.'; +export interface Dog extends Animal { + woof(): void; + name: string; +} +export declare function createDog(): Dog; + + +//// [/user/username/projects/demo/lib/animals/dog.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDog = createDog; +var utilities_1 = require("../core/utilities"); +function createDog() { + return ({ + size: "medium", + woof: function () { + console.log("".concat(this.name, " says \"Woof\"!")); + }, + name: (0, utilities_1.makeRandomName)() + }); +} + + +//// [/user/username/projects/demo/lib/animals/index.d.ts] +import Animal from './animal'; +export default Animal; +import { createDog, Dog } from './dog'; +export { createDog, Dog }; + + +//// [/user/username/projects/demo/lib/animals/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDog = void 0; +var dog_1 = require("./dog"); +Object.defineProperty(exports, "createDog", { enumerable: true, get: function () { return dog_1.createDog; } }); + + +//// [/user/username/projects/demo/lib/animals/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../../a/lib/lib.d.ts","../../animals/animal.ts","../../animals/index.ts","../core/utilities.d.ts","../../animals/dog.ts"],"fileIdsList":[[3,4],[2,5]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n",{"version":"-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n","signature":"1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n"},"-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n",{"version":"-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n","signature":"6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n"}],"root":[2,3,5],"options":{"composite":true,"declaration":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../animals","strict":true,"target":1},"referencedMap":[[5,1],[3,2]],"latestChangedDtsFile":"./dog.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/demo/lib/animals/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../../a/lib/lib.d.ts", + "../../animals/animal.ts", + "../../animals/index.ts", + "../core/utilities.d.ts", + "../../animals/dog.ts" + ], + "fileIdsList": [ + [ + "../../animals/index.ts", + "../core/utilities.d.ts" + ], + [ + "../../animals/animal.ts", + "../../animals/dog.ts" + ] + ], + "fileInfos": { + "../../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../../animals/animal.ts": { + "version": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n", + "signature": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n" + }, + "../../animals/index.ts": { + "original": { + "version": "-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "version": "-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "../core/utilities.d.ts": { + "version": "-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n", + "signature": "-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n" + }, + "../../animals/dog.ts": { + "original": { + "version": "-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + }, + "version": "-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + } + }, + "root": [ + [ + 2, + "../../animals/animal.ts" + ], + [ + 3, + "../../animals/index.ts" + ], + [ + 5, + "../../animals/dog.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "module": 1, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "./", + "rootDir": "../../animals", + "strict": true, + "target": 1 + }, + "referencedMap": { + "../../animals/dog.ts": [ + "../../animals/index.ts", + "../core/utilities.d.ts" + ], + "../../animals/index.ts": [ + "../../animals/animal.ts", + "../../animals/dog.ts" + ] + }, + "latestChangedDtsFile": "./dog.d.ts", + "version": "FakeTSVersion", + "size": 2168 +} + //// [/user/username/projects/demo/lib/core/tsconfig.tsbuildinfo] {"fileNames":["../../../../../../a/lib/lib.d.ts","../../animals/animal.ts","../../animals/dog.ts","../../animals/index.ts","../../core/utilities.ts"],"fileIdsList":[[4,5],[2,3],[4]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n",{"version":"-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n","signature":"6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n"},{"version":"-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n","signature":"1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n"},{"version":"-22163106409-import * as A from '../animals';\nexport function makeRandomName() {\n return \"Bob!?! \";\n}\n\nexport function lastElementOf(arr: T[]): T | undefined {\n if (arr.length === 0) return undefined;\n return arr[arr.length - 1];\n}\n","signature":"-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../core","strict":true,"target":1},"referencedMap":[[3,1],[4,2],[5,3]],"semanticDiagnosticsPerFile":[[5,[{"start":0,"length":32,"messageText":"'A' is declared but its value is never read.","category":1,"code":6133,"reportsUnnecessary":true}]]],"latestChangedDtsFile":"./utilities.d.ts","version":"FakeTSVersion"} @@ -407,3 +558,108 @@ function lastElementOf(arr) { } +//// [/user/username/projects/demo/lib/zoo/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../../a/lib/lib.d.ts","../animals/animal.d.ts","../animals/dog.d.ts","../animals/index.d.ts","../../zoo/zoo.ts"],"fileIdsList":[[4],[2,3]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n","6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n","1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n",{"version":"13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n","signature":"10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../zoo","strict":true,"target":1},"referencedMap":[[3,1],[4,2],[5,1]],"latestChangedDtsFile":"./zoo.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/demo/lib/zoo/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../../a/lib/lib.d.ts", + "../animals/animal.d.ts", + "../animals/dog.d.ts", + "../animals/index.d.ts", + "../../zoo/zoo.ts" + ], + "fileIdsList": [ + [ + "../animals/index.d.ts" + ], + [ + "../animals/animal.d.ts", + "../animals/dog.d.ts" + ] + ], + "fileInfos": { + "../../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../animals/animal.d.ts": { + "version": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n", + "signature": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n" + }, + "../animals/dog.d.ts": { + "version": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + }, + "../animals/index.d.ts": { + "version": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "../../zoo/zoo.ts": { + "original": { + "version": "13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n", + "signature": "10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n" + }, + "version": "13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n", + "signature": "10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n" + } + }, + "root": [ + [ + 5, + "../../zoo/zoo.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "module": 1, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "./", + "rootDir": "../../zoo", + "strict": true, + "target": 1 + }, + "referencedMap": { + "../animals/dog.d.ts": [ + "../animals/index.d.ts" + ], + "../animals/index.d.ts": [ + "../animals/animal.d.ts", + "../animals/dog.d.ts" + ], + "../../zoo/zoo.ts": [ + "../animals/index.d.ts" + ] + }, + "latestChangedDtsFile": "./zoo.d.ts", + "version": "FakeTSVersion", + "size": 1710 +} + +//// [/user/username/projects/demo/lib/zoo/zoo.d.ts] +import { Dog } from '../animals/index'; +export declare function createZoo(): Array; + + +//// [/user/username/projects/demo/lib/zoo/zoo.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createZoo = createZoo; +var index_1 = require("../animals/index"); +function createZoo() { + return [ + (0, index_1.createDog)() + ]; +} + + diff --git a/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js b/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js index fc075d8cb6db0..ea1d1e9af9646 100644 --- a/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js +++ b/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js @@ -298,14 +298,14 @@ lib/lib.d.ts Default library for target 'es5' src/child/child.ts Matched by default include pattern '**/*' -[HH:MM:SS AM] Project 'src/main/tsconfig.json' can't be built because its dependency 'src/child' has errors +[HH:MM:SS AM] Project 'src/main/tsconfig.json' is up to date with .d.ts files from its dependencies -[HH:MM:SS AM] Skipping build of project '/src/main/tsconfig.json' because its dependency '/src/child' has errors +[HH:MM:SS AM] Updating output timestamps of project '/src/main/tsconfig.json'... Found 1 error. -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/child/child.js] file written with same contents @@ -365,3 +365,4 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped "size": 1011 } +//// [/src/main/tsconfig.tsbuildinfo] file changed its modified time diff --git a/tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js b/tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js index 8c3b0bf5f0212..0fc6cc21d03c0 100644 --- a/tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js +++ b/tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js @@ -261,14 +261,42 @@ lib/lib.d.ts Default library for target 'es5' src/child/child.ts Matched by default include pattern '**/*' -[HH:MM:SS AM] Project 'src/main/tsconfig.json' can't be built because its dependency 'src/child' has errors +[HH:MM:SS AM] Project 'src/main/tsconfig.json' is out of date because output 'src/mainResult.tsbuildinfo' is older than input 'src/child' -[HH:MM:SS AM] Skipping build of project '/src/main/tsconfig.json' because its dependency '/src/child' has errors +[HH:MM:SS AM] Building project '/src/main/tsconfig.json'... +======== Resolving module 'child' from '/src/main/main.ts'. ======== +Module resolution kind is not specified, using 'Classic'. +File '/src/main/child.ts' does not exist. +File '/src/main/child.tsx' does not exist. +File '/src/main/child.d.ts' does not exist. +File '/src/child.ts' does not exist. +File '/src/child.tsx' does not exist. +File '/src/child.d.ts' does not exist. +File '/child.ts' does not exist. +File '/child.tsx' does not exist. +File '/child.d.ts' does not exist. +Searching all ancestor node_modules directories for preferred extensions: Declaration. +Directory '/src/main/node_modules' does not exist, skipping all lookups in it. +Directory '/src/node_modules' does not exist, skipping all lookups in it. +Directory '/node_modules' does not exist, skipping all lookups in it. +File '/src/main/child.js' does not exist. +File '/src/main/child.jsx' does not exist. +File '/src/child.js' does not exist. +File '/src/child.jsx' does not exist. +File '/child.js' does not exist. +File '/child.jsx' does not exist. +======== Module name 'child' was not resolved. ======== +lib/lib.d.ts + Default library for target 'es5' +src/childResult.d.ts + Output from referenced project 'src/child/tsconfig.json' included because '--outFile' specified +src/main/main.ts + Matched by default include pattern '**/*' Found 1 error. -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/childResult.d.ts] @@ -332,3 +360,36 @@ define("child", ["require", "exports", "../child/child2"], function (require, ex "size": 1106 } +//// [/src/mainResult.js] file written with same contents +//// [/src/mainResult.tsbuildinfo] +{"fileNames":["../lib/lib.d.ts","./childresult.d.ts","./main/main.ts"],"fileInfos":["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; };","8966811613-declare module \"child\" {\n export function child(): void;\n}\n","-8784613407-import { child } from \"child\";\nexport function main() {\n child();\n}\n"],"root":[3],"options":{"composite":true,"module":2,"outFile":"./mainResult.js"},"outSignature":"7955277823-declare module \"main\" {\n export function main(): void;\n}\n","latestChangedDtsFile":"./mainResult.d.ts","version":"FakeTSVersion"} + +//// [/src/mainResult.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../lib/lib.d.ts", + "./childresult.d.ts", + "./main/main.ts" + ], + "fileInfos": { + "../lib/lib.d.ts": "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; };", + "./childresult.d.ts": "8966811613-declare module \"child\" {\n export function child(): void;\n}\n", + "./main/main.ts": "-8784613407-import { child } from \"child\";\nexport function main() {\n child();\n}\n" + }, + "root": [ + [ + 3, + "./main/main.ts" + ] + ], + "options": { + "composite": true, + "module": 2, + "outFile": "./mainResult.js" + }, + "outSignature": "7955277823-declare module \"main\" {\n export function main(): void;\n}\n", + "latestChangedDtsFile": "./mainResult.d.ts", + "version": "FakeTSVersion", + "size": 941 +} + diff --git a/tests/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js b/tests/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js index c35f0d25a3a4b..014e4f852c687 100644 --- a/tests/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js +++ b/tests/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js @@ -121,8 +121,13 @@ Output:: 1 import { Nominal } from '../common/nominal';    ~~~~~~~ +src/sub-project-2/index.js:1:10 - error TS18042: 'MyNominal' is a type and cannot be imported in JavaScript files. Use 'import("../sub-project/index").MyNominal' in a JSDoc type annotation. -Found 1 error. +1 import { MyNominal } from '../sub-project/index'; +   ~~~~~~~~~ + + +Found 2 errors. exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -280,3 +285,119 @@ var nominal_1 = require("../common/nominal"); "size": 1640 } +//// [/lib/sub-project-2/index.d.ts] +/** + * @return {keyof typeof variable} + */ +export function getVar(): keyof typeof variable; +declare namespace variable { + let key: MyNominal; +} +import { MyNominal } from '../sub-project/index'; +export {}; + + +//// [/lib/sub-project-2/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getVar = getVar; +var index_1 = require("../sub-project/index"); +var variable = { + key: /** @type {MyNominal} */ ('value'), +}; +/** + * @return {keyof typeof variable} + */ +function getVar() { + return 'key'; +} + + +//// [/lib/sub-project-2/tsconfig.tsbuildinfo] +{"fileNames":["../lib.d.ts","../common/nominal.d.ts","../sub-project/index.d.ts","../../src/sub-project-2/index.js"],"fileIdsList":[[2],[3]],"fileInfos":[{"version":"-32082413277-/// \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; };\ninterface SymbolConstructor {\n readonly species: symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\n","affectsGlobalScope":true},"-13020584488-export type Nominal = T & {\n [Symbol.species]: Name;\n};\n","-13328259909-export type MyNominal = Nominal;\nimport { Nominal } from '../common/nominal';\n",{"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":"33013066229-/**\n * @return {keyof typeof variable}\n */\nexport function getVar(): keyof typeof variable;\ndeclare namespace variable {\n let key: MyNominal;\n}\nimport { MyNominal } from '../sub-project/index';\nexport {};\n"}],"root":[4],"options":{"allowJs":true,"checkJs":true,"composite":true,"declaration":true,"outDir":"..","rootDir":"../../src","skipLibCheck":true},"referencedMap":[[3,1],[4,2]],"semanticDiagnosticsPerFile":[[4,[{"start":9,"length":9,"messageText":"'MyNominal' is a type and cannot be imported in JavaScript files. Use 'import(\"../sub-project/index\").MyNominal' in a JSDoc type annotation.","category":1,"code":18042}]]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/lib/sub-project-2/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../lib.d.ts", + "../common/nominal.d.ts", + "../sub-project/index.d.ts", + "../../src/sub-project-2/index.js" + ], + "fileIdsList": [ + [ + "../common/nominal.d.ts" + ], + [ + "../sub-project/index.d.ts" + ] + ], + "fileInfos": { + "../lib.d.ts": { + "original": { + "version": "-32082413277-/// \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; };\ninterface SymbolConstructor {\n readonly species: symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\n", + "affectsGlobalScope": true + }, + "version": "-32082413277-/// \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; };\ninterface SymbolConstructor {\n readonly species: symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\n", + "signature": "-32082413277-/// \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; };\ninterface SymbolConstructor {\n readonly species: symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\n", + "affectsGlobalScope": true + }, + "../common/nominal.d.ts": { + "version": "-13020584488-export type Nominal = T & {\n [Symbol.species]: Name;\n};\n", + "signature": "-13020584488-export type Nominal = T & {\n [Symbol.species]: Name;\n};\n" + }, + "../sub-project/index.d.ts": { + "version": "-13328259909-export type MyNominal = Nominal;\nimport { Nominal } from '../common/nominal';\n", + "signature": "-13328259909-export type MyNominal = Nominal;\nimport { Nominal } from '../common/nominal';\n" + }, + "../../src/sub-project-2/index.js": { + "original": { + "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": "33013066229-/**\n * @return {keyof typeof variable}\n */\nexport function getVar(): keyof typeof variable;\ndeclare namespace variable {\n let key: MyNominal;\n}\nimport { MyNominal } from '../sub-project/index';\nexport {};\n" + }, + "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": "33013066229-/**\n * @return {keyof typeof variable}\n */\nexport function getVar(): keyof typeof variable;\ndeclare namespace variable {\n let key: MyNominal;\n}\nimport { MyNominal } from '../sub-project/index';\nexport {};\n" + } + }, + "root": [ + [ + 4, + "../../src/sub-project-2/index.js" + ] + ], + "options": { + "allowJs": true, + "checkJs": true, + "composite": true, + "declaration": true, + "outDir": "..", + "rootDir": "../../src", + "skipLibCheck": true + }, + "referencedMap": { + "../sub-project/index.d.ts": [ + "../common/nominal.d.ts" + ], + "../../src/sub-project-2/index.js": [ + "../sub-project/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../../src/sub-project-2/index.js", + [ + { + "start": 9, + "length": 9, + "messageText": "'MyNominal' is a type and cannot be imported in JavaScript files. Use 'import(\"../sub-project/index\").MyNominal' in a JSDoc type annotation.", + "category": 1, + "code": 18042 + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 2025 +} + diff --git a/tests/baselines/reference/tsbuild/sample1/does-not-build-downstream-projects-if-upstream-projects-have-errors.js b/tests/baselines/reference/tsbuild/sample1/builds-downstream-projects-even-if-upstream-projects-have-errors.js similarity index 71% rename from tests/baselines/reference/tsbuild/sample1/does-not-build-downstream-projects-if-upstream-projects-have-errors.js rename to tests/baselines/reference/tsbuild/sample1/builds-downstream-projects-even-if-upstream-projects-have-errors.js index bfc7dff7e260f..46b03372246a5 100644 --- a/tests/baselines/reference/tsbuild/sample1/does-not-build-downstream-projects-if-upstream-projects-have-errors.js +++ b/tests/baselines/reference/tsbuild/sample1/builds-downstream-projects-even-if-upstream-projects-have-errors.js @@ -116,9 +116,9 @@ Output:: 3 return c.muitply();    ~~~~~~~ -[HH:MM:SS AM] Project 'tests/tsconfig.json' can't be built because its dependency 'logic' has errors +[HH:MM:SS AM] Project 'tests/tsconfig.json' is out of date because output file 'tests/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/tests/tsconfig.json' because its dependency '/user/username/projects/sample1/logic' has errors +[HH:MM:SS AM] Building project '/user/username/projects/sample1/tests/tsconfig.json'... Found 1 error. @@ -334,6 +334,102 @@ exports.m = mod; "size": 1627 } +//// [/user/username/projects/sample1/tests/index.d.ts] +import * as mod from '../core/anotherModule'; +export declare const m: typeof mod; + + +//// [/user/username/projects/sample1/tests/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +var c = require("../core/index"); +var logic = require("../logic/index"); +c.leftPad("", 10); +logic.getSecondsInDay(); +var mod = require("../core/anotherModule"); +exports.m = mod; + + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","../logic/index.d.ts","./index.ts"],"fileIdsList":[[3],[2,3,4]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n","-5620866737-export declare function getSecondsInDay(): any;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n",{"version":"-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true},"referencedMap":[[4,1],[5,2]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/anothermodule.d.ts" + ], + [ + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../core/anothermodule.d.ts": { + "version": "-9234818176-export declare const World = \"hello\";\n", + "signature": "-9234818176-export declare const World = \"hello\";\n" + }, + "../logic/index.d.ts": { + "version": "-5620866737-export declare function getSecondsInDay(): any;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n", + "signature": "-5620866737-export declare function getSecondsInDay(): any;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "./index.ts": { + "original": { + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + } + }, + "root": [ + [ + 5, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true + }, + "referencedMap": { + "../logic/index.d.ts": [ + "../core/anothermodule.d.ts" + ], + "./index.ts": [ + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1562 +} + Change:: no-change-run @@ -358,13 +454,14 @@ Output:: 3 return c.muitply();    ~~~~~~~ -[HH:MM:SS AM] Project 'tests/tsconfig.json' can't be built because its dependency 'logic' has errors +[HH:MM:SS AM] Project 'tests/tsconfig.json' is up to date with .d.ts files from its dependencies -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/tests/tsconfig.json' because its dependency '/user/username/projects/sample1/logic' has errors +[HH:MM:SS AM] Updating output timestamps of project '/user/username/projects/sample1/tests/tsconfig.json'... Found 1 error. -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time diff --git a/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing-with-force.js b/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing-with-force.js index fd276d26c1421..0f3994fcc2835 100644 --- a/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing-with-force.js +++ b/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing-with-force.js @@ -115,16 +115,26 @@ Output::    ~~~~~~~~~~~~~~~~~~ File is matched by 'files' list specified here. -[HH:MM:SS AM] Project 'logic/tsconfig.json' can't be built because its dependency 'core' has errors +[HH:MM:SS AM] Project 'logic/tsconfig.json' is being forcibly rebuilt -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/logic/tsconfig.json' because its dependency '/user/username/projects/sample1/core' has errors +[HH:MM:SS AM] Building project '/user/username/projects/sample1/logic/tsconfig.json'... -[HH:MM:SS AM] Project 'tests/tsconfig.json' can't be built because its dependency 'core' has errors +logic/index.ts:5:22 - error TS2307: Cannot find module '../core/anotherModule' or its corresponding type declarations. -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/tests/tsconfig.json' because its dependency '/user/username/projects/sample1/core' has errors +5 import * as mod from '../core/anotherModule'; +   ~~~~~~~~~~~~~~~~~~~~~~~ +[HH:MM:SS AM] Project 'tests/tsconfig.json' is being forcibly rebuilt -Found 1 error. +[HH:MM:SS AM] Building project '/user/username/projects/sample1/tests/tsconfig.json'... + +tests/index.ts:7:22 - error TS2307: Cannot find module '../core/anotherModule' or its corresponding type declarations. + +7 import * as mod from '../core/anotherModule'; +   ~~~~~~~~~~~~~~~~~~~~~~~ + + +Found 3 errors. exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -216,3 +226,194 @@ function multiply(a, b) { return a * b; } "size": 1200 } +//// [/user/username/projects/sample1/logic/index.d.ts] +export declare function getSecondsInDay(): number; +export declare const m: any; + + +//// [/user/username/projects/sample1/logic/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +exports.getSecondsInDay = getSecondsInDay; +var c = require("../core/index"); +function getSecondsInDay() { + return c.multiply(10, 15); +} +var mod = require("../core/anotherModule"); +exports.m = mod; +//# sourceMappingURL=index.js.map + +//// [/user/username/projects/sample1/logic/index.js.map] +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","./index.ts"],"fileIdsList":[[2]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n"}],"root":[3],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true,"sourceMap":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"start":126,"length":23,"messageText":"Cannot find module '../core/anotherModule' or its corresponding type declarations.","category":1,"code":2307}]]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "./index.ts": { + "original": { + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + }, + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + } + }, + "root": [ + [ + 3, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true, + "sourceMap": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "./index.ts", + [ + { + "start": 126, + "length": 23, + "messageText": "Cannot find module '../core/anotherModule' or its corresponding type declarations.", + "category": 1, + "code": 2307 + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1473 +} + +//// [/user/username/projects/sample1/tests/index.d.ts] +export declare const m: any; + + +//// [/user/username/projects/sample1/tests/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +var c = require("../core/index"); +var logic = require("../logic/index"); +c.leftPad("", 10); +logic.getSecondsInDay(); +var mod = require("../core/anotherModule"); +exports.m = mod; + + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../logic/index.d.ts","./index.ts"],"fileIdsList":[[2,3]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n",{"version":"-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-5014854126-export declare const m: any;\n"}],"root":[4],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"start":144,"length":23,"messageText":"Cannot find module '../core/anotherModule' or its corresponding type declarations.","category":1,"code":2307}]]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../logic/index.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts", + "../logic/index.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../logic/index.d.ts": { + "version": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + }, + "./index.ts": { + "original": { + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-5014854126-export declare const m: any;\n" + }, + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-5014854126-export declare const m: any;\n" + } + }, + "root": [ + [ + 4, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts", + "../logic/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "./index.ts", + [ + { + "start": 144, + "length": 23, + "messageText": "Cannot find module '../core/anotherModule' or its corresponding type declarations.", + "category": 1, + "code": 2307 + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1548 +} + diff --git a/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing.js b/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing.js index 41597404931c9..1205bcc402ec9 100644 --- a/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing.js +++ b/tests/baselines/reference/tsbuild/sample1/reports-error-if-input-file-is-missing.js @@ -115,16 +115,26 @@ Output::    ~~~~~~~~~~~~~~~~~~ File is matched by 'files' list specified here. -[HH:MM:SS AM] Project 'logic/tsconfig.json' can't be built because its dependency 'core' has errors +[HH:MM:SS AM] Project 'logic/tsconfig.json' is out of date because output file 'logic/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/logic/tsconfig.json' because its dependency '/user/username/projects/sample1/core' has errors +[HH:MM:SS AM] Building project '/user/username/projects/sample1/logic/tsconfig.json'... -[HH:MM:SS AM] Project 'tests/tsconfig.json' can't be built because its dependency 'core' has errors +logic/index.ts:5:22 - error TS2307: Cannot find module '../core/anotherModule' or its corresponding type declarations. -[HH:MM:SS AM] Skipping build of project '/user/username/projects/sample1/tests/tsconfig.json' because its dependency '/user/username/projects/sample1/core' has errors +5 import * as mod from '../core/anotherModule'; +   ~~~~~~~~~~~~~~~~~~~~~~~ +[HH:MM:SS AM] Project 'tests/tsconfig.json' is out of date because output file 'tests/tsconfig.tsbuildinfo' does not exist -Found 1 error. +[HH:MM:SS AM] Building project '/user/username/projects/sample1/tests/tsconfig.json'... + +tests/index.ts:7:22 - error TS2307: Cannot find module '../core/anotherModule' or its corresponding type declarations. + +7 import * as mod from '../core/anotherModule'; +   ~~~~~~~~~~~~~~~~~~~~~~~ + + +Found 3 errors. exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -216,3 +226,194 @@ function multiply(a, b) { return a * b; } "size": 1200 } +//// [/user/username/projects/sample1/logic/index.d.ts] +export declare function getSecondsInDay(): number; +export declare const m: any; + + +//// [/user/username/projects/sample1/logic/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +exports.getSecondsInDay = getSecondsInDay; +var c = require("../core/index"); +function getSecondsInDay() { + return c.multiply(10, 15); +} +var mod = require("../core/anotherModule"); +exports.m = mod; +//# sourceMappingURL=index.js.map + +//// [/user/username/projects/sample1/logic/index.js.map] +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","./index.ts"],"fileIdsList":[[2]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n"}],"root":[3],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true,"sourceMap":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"start":126,"length":23,"messageText":"Cannot find module '../core/anotherModule' or its corresponding type declarations.","category":1,"code":2307}]]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "./index.ts": { + "original": { + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + }, + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + } + }, + "root": [ + [ + 3, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true, + "sourceMap": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "./index.ts", + [ + { + "start": 126, + "length": 23, + "messageText": "Cannot find module '../core/anotherModule' or its corresponding type declarations.", + "category": 1, + "code": 2307 + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1473 +} + +//// [/user/username/projects/sample1/tests/index.d.ts] +export declare const m: any; + + +//// [/user/username/projects/sample1/tests/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +var c = require("../core/index"); +var logic = require("../logic/index"); +c.leftPad("", 10); +logic.getSecondsInDay(); +var mod = require("../core/anotherModule"); +exports.m = mod; + + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../logic/index.d.ts","./index.ts"],"fileIdsList":[[2,3]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n",{"version":"-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-5014854126-export declare const m: any;\n"}],"root":[4],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"start":144,"length":23,"messageText":"Cannot find module '../core/anotherModule' or its corresponding type declarations.","category":1,"code":2307}]]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../logic/index.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts", + "../logic/index.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../logic/index.d.ts": { + "version": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n", + "signature": "-4481271033-export declare function getSecondsInDay(): number;\nexport declare const m: any;\n" + }, + "./index.ts": { + "original": { + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-5014854126-export declare const m: any;\n" + }, + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-5014854126-export declare const m: any;\n" + } + }, + "root": [ + [ + 4, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts", + "../logic/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "./index.ts", + [ + { + "start": 144, + "length": 23, + "messageText": "Cannot find module '../core/anotherModule' or its corresponding type declarations.", + "category": 1, + "code": 2307 + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1548 +} + diff --git a/tests/baselines/reference/tsbuild/transitiveReferences/reports-error-about-module-not-found-with-node-resolution-with-external-module-name.js b/tests/baselines/reference/tsbuild/transitiveReferences/reports-error-about-module-not-found-with-node-resolution-with-external-module-name.js index 960585cbc318d..767e1ce12c3de 100644 --- a/tests/baselines/reference/tsbuild/transitiveReferences/reports-error-about-module-not-found-with-node-resolution-with-external-module-name.js +++ b/tests/baselines/reference/tsbuild/transitiveReferences/reports-error-about-module-not-found-with-node-resolution-with-external-module-name.js @@ -94,6 +94,10 @@ Output:: /a/lib/lib.d.ts /user/username/projects/transitiveReferences/b.ts +/a/lib/lib.d.ts +/user/username/projects/transitiveReferences/b.d.ts +/user/username/projects/transitiveReferences/refs/a.d.ts +/user/username/projects/transitiveReferences/c.ts Found 1 error. @@ -129,6 +133,15 @@ var a_1 = require("a"); exports.b = new a_1.A(); +//// [/user/username/projects/transitiveReferences/c.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var b_1 = require("./b"); +var a_1 = require("@ref/a"); +b_1.b; +a_1.X; + + //// [/user/username/projects/transitiveReferences/tsconfig.a.tsbuildinfo] {"fileNames":["../../../../a/lib/lib.d.ts","./a.ts"],"fileInfos":[{"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; };","affectsGlobalScope":true},{"version":"-7808316224-export class A {}\n","signature":"-8728835846-export declare class A {\n}\n"}],"root":[2],"options":{"composite":true},"latestChangedDtsFile":"./a.d.ts","version":"FakeTSVersion"} @@ -227,3 +240,15 @@ exports.b = new a_1.A(); "size": 943 } +//// [/user/username/projects/transitiveReferences/tsconfig.c.tsbuildinfo] +{"root":["./c.ts"],"version":"FakeTSVersion"} + +//// [/user/username/projects/transitiveReferences/tsconfig.c.tsbuildinfo.readable.baseline.txt] +{ + "root": [ + "./c.ts" + ], + "version": "FakeTSVersion", + "size": 45 +} + diff --git a/tests/baselines/reference/tsbuildWatch/demo/updates-with-bad-reference.js b/tests/baselines/reference/tsbuildWatch/demo/updates-with-bad-reference.js index 1c82773f2993f..509b90e20bdda 100644 --- a/tests/baselines/reference/tsbuildWatch/demo/updates-with-bad-reference.js +++ b/tests/baselines/reference/tsbuildWatch/demo/updates-with-bad-reference.js @@ -207,13 +207,13 @@ Output::    ~~~ File is included via import here. -[HH:MM:SS AM] Project 'animals/tsconfig.json' can't be built because its dependency 'core' has errors +[HH:MM:SS AM] Project 'animals/tsconfig.json' is out of date because output file 'lib/animals/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/demo/animals/tsconfig.json' because its dependency '/user/username/projects/demo/core' has errors +[HH:MM:SS AM] Building project '/user/username/projects/demo/animals/tsconfig.json'... -[HH:MM:SS AM] Project 'zoo/tsconfig.json' can't be built because its dependency 'animals' was not built +[HH:MM:SS AM] Project 'zoo/tsconfig.json' is out of date because output file 'lib/zoo/tsconfig.tsbuildinfo' does not exist -[HH:MM:SS AM] Skipping build of project '/user/username/projects/demo/zoo/tsconfig.json' because its dependency '/user/username/projects/demo/animals' was not built +[HH:MM:SS AM] Building project '/user/username/projects/demo/zoo/tsconfig.json'... [HH:MM:SS AM] Found 7 errors. Watching for file changes. @@ -407,6 +407,262 @@ export declare function lastElementOf(arr: T[]): T | undefined; "size": 2633 } +//// [/user/username/projects/demo/lib/animals/animal.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); + + +//// [/user/username/projects/demo/lib/animals/animal.d.ts] +export type Size = "small" | "medium" | "large"; +export default interface Animal { + size: Size; +} + + +//// [/user/username/projects/demo/lib/animals/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDog = void 0; +var dog_1 = require("./dog"); +Object.defineProperty(exports, "createDog", { enumerable: true, get: function () { return dog_1.createDog; } }); + + +//// [/user/username/projects/demo/lib/animals/index.d.ts] +import Animal from './animal'; +export default Animal; +import { createDog, Dog } from './dog'; +export { createDog, Dog }; + + +//// [/user/username/projects/demo/lib/animals/dog.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDog = createDog; +var utilities_1 = require("../core/utilities"); +function createDog() { + return ({ + size: "medium", + woof: function () { + console.log("".concat(this.name, " says \"Woof\"!")); + }, + name: (0, utilities_1.makeRandomName)() + }); +} + + +//// [/user/username/projects/demo/lib/animals/dog.d.ts] +import Animal from '.'; +export interface Dog extends Animal { + woof(): void; + name: string; +} +export declare function createDog(): Dog; + + +//// [/user/username/projects/demo/lib/animals/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../../a/lib/lib.d.ts","../../animals/animal.ts","../../animals/index.ts","../core/utilities.d.ts","../../animals/dog.ts"],"fileIdsList":[[3,4],[2,5]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n",{"version":"-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n","signature":"1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n"},"-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n",{"version":"-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n","signature":"6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n"}],"root":[2,3,5],"options":{"composite":true,"declaration":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../animals","strict":true,"target":1},"referencedMap":[[5,1],[3,2]],"latestChangedDtsFile":"./dog.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/demo/lib/animals/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../../a/lib/lib.d.ts", + "../../animals/animal.ts", + "../../animals/index.ts", + "../core/utilities.d.ts", + "../../animals/dog.ts" + ], + "fileIdsList": [ + [ + "../../animals/index.ts", + "../core/utilities.d.ts" + ], + [ + "../../animals/animal.ts", + "../../animals/dog.ts" + ] + ], + "fileInfos": { + "../../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../../animals/animal.ts": { + "version": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n", + "signature": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n" + }, + "../../animals/index.ts": { + "original": { + "version": "-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "version": "-7220553464-import Animal from './animal';\n\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "../core/utilities.d.ts": { + "version": "-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n", + "signature": "-11345568166-export declare function makeRandomName(): string;\nexport declare function lastElementOf(arr: T[]): T | undefined;\n" + }, + "../../animals/dog.ts": { + "original": { + "version": "-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + }, + "version": "-18870194049-import Animal from '.';\nimport { makeRandomName } from '../core/utilities';\n\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\n\nexport function createDog(): Dog {\n return ({\n size: \"medium\",\n woof: function(this: Dog) {\n console.log(`${ this.name } says \"Woof\"!`);\n },\n name: makeRandomName()\n });\n}\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + } + }, + "root": [ + [ + 2, + "../../animals/animal.ts" + ], + [ + 3, + "../../animals/index.ts" + ], + [ + 5, + "../../animals/dog.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "module": 1, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "./", + "rootDir": "../../animals", + "strict": true, + "target": 1 + }, + "referencedMap": { + "../../animals/dog.ts": [ + "../../animals/index.ts", + "../core/utilities.d.ts" + ], + "../../animals/index.ts": [ + "../../animals/animal.ts", + "../../animals/dog.ts" + ] + }, + "latestChangedDtsFile": "./dog.d.ts", + "version": "FakeTSVersion", + "size": 2168 +} + +//// [/user/username/projects/demo/lib/zoo/zoo.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createZoo = createZoo; +var index_1 = require("../animals/index"); +function createZoo() { + return [ + (0, index_1.createDog)() + ]; +} + + +//// [/user/username/projects/demo/lib/zoo/zoo.d.ts] +import { Dog } from '../animals/index'; +export declare function createZoo(): Array; + + +//// [/user/username/projects/demo/lib/zoo/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../../a/lib/lib.d.ts","../animals/animal.d.ts","../animals/dog.d.ts","../animals/index.d.ts","../../zoo/zoo.ts"],"fileIdsList":[[4],[2,3]],"fileInfos":[{"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; };","affectsGlobalScope":true},"-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n","6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n","1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n",{"version":"13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n","signature":"10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../zoo","strict":true,"target":1},"referencedMap":[[3,1],[4,2],[5,1]],"latestChangedDtsFile":"./zoo.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/demo/lib/zoo/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../../a/lib/lib.d.ts", + "../animals/animal.d.ts", + "../animals/dog.d.ts", + "../animals/index.d.ts", + "../../zoo/zoo.ts" + ], + "fileIdsList": [ + [ + "../animals/index.d.ts" + ], + [ + "../animals/animal.d.ts", + "../animals/dog.d.ts" + ] + ], + "fileInfos": { + "../../../../../../a/lib/lib.d.ts": { + "original": { + "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; };", + "affectsGlobalScope": true + }, + "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 + }, + "../animals/animal.d.ts": { + "version": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n", + "signature": "-9289341318-export type Size = \"small\" | \"medium\" | \"large\";\nexport default interface Animal {\n size: Size;\n}\n" + }, + "../animals/dog.d.ts": { + "version": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n", + "signature": "6032048049-import Animal from '.';\nexport interface Dog extends Animal {\n woof(): void;\n name: string;\n}\nexport declare function createDog(): Dog;\n" + }, + "../animals/index.d.ts": { + "version": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n", + "signature": "1096904574-import Animal from './animal';\nexport default Animal;\nimport { createDog, Dog } from './dog';\nexport { createDog, Dog };\n" + }, + "../../zoo/zoo.ts": { + "original": { + "version": "13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n", + "signature": "10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n" + }, + "version": "13034796418-import { Dog, createDog } from '../animals/index';\n\nexport function createZoo(): Array {\n return [\n createDog()\n ];\n}\n", + "signature": "10305066551-import { Dog } from '../animals/index';\nexport declare function createZoo(): Array;\n" + } + }, + "root": [ + [ + 5, + "../../zoo/zoo.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "module": 1, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "./", + "rootDir": "../../zoo", + "strict": true, + "target": 1 + }, + "referencedMap": { + "../animals/dog.d.ts": [ + "../animals/index.d.ts" + ], + "../animals/index.d.ts": [ + "../animals/animal.d.ts", + "../animals/dog.d.ts" + ], + "../../zoo/zoo.ts": [ + "../animals/index.d.ts" + ] + }, + "latestChangedDtsFile": "./zoo.d.ts", + "version": "FakeTSVersion", + "size": 1710 +} + PolledWatches:: /user/username/projects/demo/animals/package.json: *new* @@ -483,6 +739,90 @@ Shape signatures in builder refreshed for:: /user/username/projects/demo/animals/index.ts (computed .d.ts during emit) /user/username/projects/demo/core/utilities.ts (computed .d.ts during emit) +Program root files: [ + "/user/username/projects/demo/animals/animal.ts", + "/user/username/projects/demo/animals/dog.ts", + "/user/username/projects/demo/animals/index.ts" +] +Program options: { + "declaration": true, + "target": 1, + "module": 1, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "composite": true, + "outDir": "/user/username/projects/demo/lib/animals", + "rootDir": "/user/username/projects/demo/animals", + "watch": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/demo/animals/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/demo/animals/animal.ts +/user/username/projects/demo/animals/index.ts +/user/username/projects/demo/lib/core/utilities.d.ts +/user/username/projects/demo/animals/dog.ts + +Semantic diagnostics in builder refreshed for:: +/a/lib/lib.d.ts +/user/username/projects/demo/animals/animal.ts +/user/username/projects/demo/animals/index.ts +/user/username/projects/demo/lib/core/utilities.d.ts +/user/username/projects/demo/animals/dog.ts + +Shape signatures in builder refreshed for:: +/a/lib/lib.d.ts (used version) +/user/username/projects/demo/animals/animal.ts (used version) +/user/username/projects/demo/animals/index.ts (computed .d.ts during emit) +/user/username/projects/demo/lib/core/utilities.d.ts (used version) +/user/username/projects/demo/animals/dog.ts (computed .d.ts during emit) + +Program root files: [ + "/user/username/projects/demo/zoo/zoo.ts" +] +Program options: { + "declaration": true, + "target": 1, + "module": 1, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "composite": true, + "outDir": "/user/username/projects/demo/lib/zoo", + "rootDir": "/user/username/projects/demo/zoo", + "watch": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/demo/zoo/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/demo/lib/animals/animal.d.ts +/user/username/projects/demo/lib/animals/dog.d.ts +/user/username/projects/demo/lib/animals/index.d.ts +/user/username/projects/demo/zoo/zoo.ts + +Semantic diagnostics in builder refreshed for:: +/a/lib/lib.d.ts +/user/username/projects/demo/lib/animals/animal.d.ts +/user/username/projects/demo/lib/animals/dog.d.ts +/user/username/projects/demo/lib/animals/index.d.ts +/user/username/projects/demo/zoo/zoo.ts + +Shape signatures in builder refreshed for:: +/a/lib/lib.d.ts (used version) +/user/username/projects/demo/lib/animals/animal.d.ts (used version) +/user/username/projects/demo/lib/animals/dog.d.ts (used version) +/user/username/projects/demo/lib/animals/index.d.ts (used version) +/user/username/projects/demo/zoo/zoo.ts (computed .d.ts during emit) + exitCode:: ExitStatus.undefined Change:: Prepend a line @@ -569,6 +909,10 @@ Output::    ~~~ File is included via import here. +[HH:MM:SS AM] Project 'animals/tsconfig.json' is up to date with .d.ts files from its dependencies + +[HH:MM:SS AM] Updating output timestamps of project '/user/username/projects/demo/animals/tsconfig.json'... + [HH:MM:SS AM] Found 7 errors. Watching for file changes. @@ -690,6 +1034,7 @@ Output:: "size": 2635 } +//// [/user/username/projects/demo/lib/animals/tsconfig.tsbuildinfo] file changed its modified time Program root files: [ diff --git a/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-not-used.js b/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-not-used.js index d59856a35e7a7..cb252142da09b 100644 --- a/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-not-used.js +++ b/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-not-used.js @@ -651,6 +651,7 @@ var y = 10; "size": 1521 } +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time Program root files: [ @@ -699,7 +700,7 @@ Before running Timeout callback:: count: 1 2: timerToBuildInvalidatedProject Host is moving to new time -After running Timeout callback:: count: 0 +After running Timeout callback:: count: 1 Output:: >> Screen clear [HH:MM:SS AM] File change detected. Starting incremental compilation... @@ -709,13 +710,6 @@ Output:: 5 let x: string = 10;    ~ -logic/index.ts:8:5 - error TS2322: Type 'number' is not assignable to type 'string'. - -8 let y: string = 10; -   ~ - -[HH:MM:SS AM] Found 2 errors. Watching for file changes. - //// [/user/username/projects/sample1/core/index.js] @@ -817,6 +811,27 @@ var x = 10; } +Timeout callback:: count: 1 +3: timerToBuildInvalidatedProject *new* + +Before running Timeout callback:: count: 1 +3: timerToBuildInvalidatedProject + +Host is moving to new time +After running Timeout callback:: count: 0 +Output:: +logic/index.ts:8:5 - error TS2322: Type 'number' is not assignable to type 'string'. + +8 let y: string = 10; +   ~ + +[HH:MM:SS AM] Found 2 errors. Watching for file changes. + + + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] file changed its modified time +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time + Program root files: [ "/user/username/projects/sample1/core/anotherModule.ts", @@ -845,4 +860,176 @@ Semantic diagnostics in builder refreshed for:: Shape signatures in builder refreshed for:: /user/username/projects/sample1/core/index.ts (computed .d.ts) +Program root files: [ + "/user/username/projects/sample1/logic/index.ts" +] +Program options: { + "composite": true, + "declaration": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "skipDefaultLibCheck": true, + "watch": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/sample1/logic/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/sample1/core/index.d.ts +/user/username/projects/sample1/core/anotherModule.d.ts +/user/username/projects/sample1/logic/index.ts + +Semantic diagnostics in builder refreshed for:: + +No shapes updated in the builder:: + +exitCode:: ExitStatus.undefined + +Change:: fix error in logic + +Input:: +//// [/user/username/projects/sample1/logic/index.ts] +import * as c from '../core/index'; +export function getSecondsInDay() { + return c.multiply(10, 15); +} +import * as mod from '../core/anotherModule'; +export const m = mod; + + + +Timeout callback:: count: 1 +4: timerToBuildInvalidatedProject *new* + +Before running Timeout callback:: count: 1 +4: timerToBuildInvalidatedProject + +Host is moving to new time +After running Timeout callback:: count: 0 +Output:: +>> Screen clear +[HH:MM:SS AM] File change detected. Starting incremental compilation... + +core/index.ts:5:5 - error TS2322: Type 'number' is not assignable to type 'string'. + +5 let x: string = 10; +   ~ + +[HH:MM:SS AM] Found 1 error. Watching for file changes. + + + +//// [/user/username/projects/sample1/logic/index.js.map] +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} + +//// [/user/username/projects/sample1/logic/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +exports.getSecondsInDay = getSecondsInDay; +var c = require("../core/index"); +function getSecondsInDay() { + return c.multiply(10, 15); +} +var mod = require("../core/anotherModule"); +exports.m = mod; +//# sourceMappingURL=index.js.map + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","./index.ts"],"fileIdsList":[[2,3]],"fileInfos":[{"version":"-7698705165-/// \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; }","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[4],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true,"sourceMap":true},"referencedMap":[[4,1]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "version": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "version": "-7698705165-/// \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; }", + "signature": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../core/anothermodule.d.ts": { + "version": "-9234818176-export declare const World = \"hello\";\n", + "signature": "-9234818176-export declare const World = \"hello\";\n" + }, + "./index.ts": { + "original": { + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + } + }, + "root": [ + [ + 4, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true, + "sourceMap": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1347 +} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time + + +Program root files: [ + "/user/username/projects/sample1/logic/index.ts" +] +Program options: { + "composite": true, + "declaration": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "skipDefaultLibCheck": true, + "watch": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/sample1/logic/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/sample1/core/index.d.ts +/user/username/projects/sample1/core/anotherModule.d.ts +/user/username/projects/sample1/logic/index.ts + +Semantic diagnostics in builder refreshed for:: +/user/username/projects/sample1/logic/index.ts + +Shape signatures in builder refreshed for:: +/user/username/projects/sample1/logic/index.ts (computed .d.ts) + exitCode:: ExitStatus.undefined diff --git a/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-passed-on-command-line.js b/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-passed-on-command-line.js index d31c52b2ddca8..7ba6dfb3cabf2 100644 --- a/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-passed-on-command-line.js +++ b/tests/baselines/reference/tsbuildWatch/programUpdates/reportErrors/when-preserveWatchOutput-is-passed-on-command-line.js @@ -652,6 +652,7 @@ var y = 10; "size": 1521 } +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time Program root files: [ @@ -701,7 +702,7 @@ Before running Timeout callback:: count: 1 2: timerToBuildInvalidatedProject Host is moving to new time -After running Timeout callback:: count: 0 +After running Timeout callback:: count: 1 Output:: [HH:MM:SS AM] File change detected. Starting incremental compilation... @@ -710,13 +711,6 @@ Output:: 5 let x: string = 10;    ~ -logic/index.ts:8:5 - error TS2322: Type 'number' is not assignable to type 'string'. - -8 let y: string = 10; -   ~ - -[HH:MM:SS AM] Found 2 errors. Watching for file changes. - //// [/user/username/projects/sample1/core/index.js] @@ -818,6 +812,27 @@ var x = 10; } +Timeout callback:: count: 1 +3: timerToBuildInvalidatedProject *new* + +Before running Timeout callback:: count: 1 +3: timerToBuildInvalidatedProject + +Host is moving to new time +After running Timeout callback:: count: 0 +Output:: +logic/index.ts:8:5 - error TS2322: Type 'number' is not assignable to type 'string'. + +8 let y: string = 10; +   ~ + +[HH:MM:SS AM] Found 2 errors. Watching for file changes. + + + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] file changed its modified time +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time + Program root files: [ "/user/username/projects/sample1/core/anotherModule.ts", @@ -847,4 +862,177 @@ Semantic diagnostics in builder refreshed for:: Shape signatures in builder refreshed for:: /user/username/projects/sample1/core/index.ts (computed .d.ts) +Program root files: [ + "/user/username/projects/sample1/logic/index.ts" +] +Program options: { + "composite": true, + "declaration": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "skipDefaultLibCheck": true, + "watch": true, + "preserveWatchOutput": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/sample1/logic/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/sample1/core/index.d.ts +/user/username/projects/sample1/core/anotherModule.d.ts +/user/username/projects/sample1/logic/index.ts + +Semantic diagnostics in builder refreshed for:: + +No shapes updated in the builder:: + +exitCode:: ExitStatus.undefined + +Change:: fix error in logic + +Input:: +//// [/user/username/projects/sample1/logic/index.ts] +import * as c from '../core/index'; +export function getSecondsInDay() { + return c.multiply(10, 15); +} +import * as mod from '../core/anotherModule'; +export const m = mod; + + + +Timeout callback:: count: 1 +4: timerToBuildInvalidatedProject *new* + +Before running Timeout callback:: count: 1 +4: timerToBuildInvalidatedProject + +Host is moving to new time +After running Timeout callback:: count: 0 +Output:: +[HH:MM:SS AM] File change detected. Starting incremental compilation... + +core/index.ts:5:5 - error TS2322: Type 'number' is not assignable to type 'string'. + +5 let x: string = 10; +   ~ + +[HH:MM:SS AM] Found 1 error. Watching for file changes. + + + +//// [/user/username/projects/sample1/logic/index.js.map] +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} + +//// [/user/username/projects/sample1/logic/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +exports.getSecondsInDay = getSecondsInDay; +var c = require("../core/index"); +function getSecondsInDay() { + return c.multiply(10, 15); +} +var mod = require("../core/anotherModule"); +exports.m = mod; +//# sourceMappingURL=index.js.map + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","./index.ts"],"fileIdsList":[[2,3]],"fileInfos":[{"version":"-7698705165-/// \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; }","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[4],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true,"sourceMap":true},"referencedMap":[[4,1]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "version": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "version": "-7698705165-/// \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; }", + "signature": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../core/anothermodule.d.ts": { + "version": "-9234818176-export declare const World = \"hello\";\n", + "signature": "-9234818176-export declare const World = \"hello\";\n" + }, + "./index.ts": { + "original": { + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + } + }, + "root": [ + [ + 4, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true, + "sourceMap": true + }, + "referencedMap": { + "./index.ts": [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1347 +} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] file changed its modified time + + +Program root files: [ + "/user/username/projects/sample1/logic/index.ts" +] +Program options: { + "composite": true, + "declaration": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "skipDefaultLibCheck": true, + "watch": true, + "preserveWatchOutput": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/sample1/logic/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/sample1/core/index.d.ts +/user/username/projects/sample1/core/anotherModule.d.ts +/user/username/projects/sample1/logic/index.ts + +Semantic diagnostics in builder refreshed for:: +/user/username/projects/sample1/logic/index.ts + +Shape signatures in builder refreshed for:: +/user/username/projects/sample1/logic/index.ts (computed .d.ts) + exitCode:: ExitStatus.undefined diff --git a/tests/baselines/reference/tsbuildWatch/programUpdates/watches-config-files-that-are-not-present.js b/tests/baselines/reference/tsbuildWatch/programUpdates/watches-config-files-that-are-not-present.js index 1f3af04234ccb..579b229a02948 100644 --- a/tests/baselines/reference/tsbuildWatch/programUpdates/watches-config-files-that-are-not-present.js +++ b/tests/baselines/reference/tsbuildWatch/programUpdates/watches-config-files-that-are-not-present.js @@ -84,7 +84,16 @@ Output:: error TS5083: Cannot read file '/user/username/projects/sample1/logic/tsconfig.json'. -[HH:MM:SS AM] Found 1 error. Watching for file changes. +tests/tsconfig.json:6:5 - error TS6053: File '/user/username/projects/sample1/logic' not found. + +6 { +   ~ +7 "path": "../logic" +  ~~~~~~~~~~~~~~~~~~~~~~~~ +8 } +  ~~~~~ + +[HH:MM:SS AM] Found 2 errors. Watching for file changes. @@ -193,6 +202,149 @@ export declare function multiply(a: number, b: number): number; "size": 1300 } +//// [/user/username/projects/sample1/logic/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +exports.getSecondsInDay = getSecondsInDay; +var c = require("../core/index"); +function getSecondsInDay() { + return c.multiply(10, 15); +} +var mod = require("../core/anotherModule"); +exports.m = mod; + + +//// [/user/username/projects/sample1/logic/index.d.ts] +export declare function getSecondsInDay(): number; +import * as mod from '../core/anotherModule'; +export declare const m: typeof mod; + + +//// [/user/username/projects/sample1/tests/index.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.m = void 0; +var c = require("../core/index"); +var logic = require("../logic/index"); +c.leftPad("", 10); +logic.getSecondsInDay(); +var mod = require("../core/anotherModule"); +exports.m = mod; + + +//// [/user/username/projects/sample1/tests/index.d.ts] +import * as mod from '../core/anotherModule'; +export declare const m: typeof mod; + + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] +{"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","../logic/index.ts","./index.ts"],"fileIdsList":[[2,3],[2,3,4]],"fileInfos":[{"version":"-7698705165-/// \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; }","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"},{"version":"-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true},"referencedMap":[[4,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} + +//// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "fileNames": [ + "../../../../../a/lib/lib.d.ts", + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.ts", + "./index.ts" + ], + "fileIdsList": [ + [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ], + [ + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.ts" + ] + ], + "fileInfos": { + "../../../../../a/lib/lib.d.ts": { + "original": { + "version": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "version": "-7698705165-/// \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; }", + "signature": "-7698705165-/// \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; }", + "affectsGlobalScope": true + }, + "../core/index.d.ts": { + "version": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n", + "signature": "-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n" + }, + "../core/anothermodule.d.ts": { + "version": "-9234818176-export declare const World = \"hello\";\n", + "signature": "-9234818176-export declare const World = \"hello\";\n" + }, + "../logic/index.ts": { + "original": { + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "version": "-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "./index.ts": { + "original": { + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + }, + "version": "-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n", + "signature": "2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n" + } + }, + "root": [ + [ + 5, + "./index.ts" + ] + ], + "options": { + "composite": true, + "declaration": true, + "skipDefaultLibCheck": true + }, + "referencedMap": { + "../logic/index.ts": [ + "../core/index.d.ts", + "../core/anothermodule.d.ts" + ], + "./index.ts": [ + "../core/index.d.ts", + "../core/anothermodule.d.ts", + "../logic/index.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../../../../../a/lib/lib.d.ts", + "not cached" + ], + [ + "../core/index.d.ts", + "not cached" + ], + [ + "../core/anothermodule.d.ts", + "not cached" + ], + [ + "../logic/index.ts", + "not cached" + ], + [ + "./index.ts", + "not cached" + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "version": "FakeTSVersion", + "size": 1744 +} + PolledWatches:: /user/username/projects/sample1/logic/tsconfig.json: *new* @@ -249,6 +401,35 @@ Shape signatures in builder refreshed for:: /user/username/projects/sample1/core/index.ts (computed .d.ts during emit) /user/username/projects/sample1/core/some_decl.d.ts (used version) +Program root files: [ + "/user/username/projects/sample1/tests/index.ts" +] +Program options: { + "composite": true, + "declaration": true, + "forceConsistentCasingInFileNames": true, + "skipDefaultLibCheck": true, + "watch": true, + "tscBuild": true, + "configFilePath": "/user/username/projects/sample1/tests/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/sample1/core/index.d.ts +/user/username/projects/sample1/core/anotherModule.d.ts +/user/username/projects/sample1/logic/index.ts +/user/username/projects/sample1/tests/index.ts + +No cached semantic diagnostics in the builder:: + +Shape signatures in builder refreshed for:: +/a/lib/lib.d.ts (used version) +/user/username/projects/sample1/core/index.d.ts (used version) +/user/username/projects/sample1/core/anothermodule.d.ts (used version) +/user/username/projects/sample1/logic/index.ts (computed .d.ts during emit) +/user/username/projects/sample1/tests/index.ts (computed .d.ts during emit) + exitCode:: ExitStatus.undefined Change:: Write logic tsconfig and build logic @@ -313,9 +494,6 @@ Output:: -//// [/user/username/projects/sample1/logic/index.js.map] -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} - //// [/user/username/projects/sample1/logic/index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -329,11 +507,9 @@ var mod = require("../core/anotherModule"); exports.m = mod; //# sourceMappingURL=index.js.map -//// [/user/username/projects/sample1/logic/index.d.ts] -export declare function getSecondsInDay(): number; -import * as mod from '../core/anotherModule'; -export declare const m: typeof mod; - +//// [/user/username/projects/sample1/logic/index.d.ts] file written with same contents +//// [/user/username/projects/sample1/logic/index.js.map] +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,0CAEC;AAHD,iCAAmC;AACnC,SAAgB,eAAe;IAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,2CAA6C;AAChC,QAAA,CAAC,GAAG,GAAG,CAAC"} //// [/user/username/projects/sample1/logic/tsconfig.tsbuildinfo] {"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","./index.ts"],"fileIdsList":[[2,3]],"fileInfos":[{"version":"-7698705165-/// \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; }","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n",{"version":"-9623801128-import * as c from '../core/index';\nexport function getSecondsInDay() {\n return c.multiply(10, 15);\n}\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[4],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true,"sourceMap":true},"referencedMap":[[4,1]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} @@ -479,23 +655,7 @@ Output:: -//// [/user/username/projects/sample1/tests/index.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.m = void 0; -var c = require("../core/index"); -var logic = require("../logic/index"); -c.leftPad("", 10); -logic.getSecondsInDay(); -var mod = require("../core/anotherModule"); -exports.m = mod; - - -//// [/user/username/projects/sample1/tests/index.d.ts] -import * as mod from '../core/anotherModule'; -export declare const m: typeof mod; - - +//// [/user/username/projects/sample1/tests/index.js] file written with same contents //// [/user/username/projects/sample1/tests/tsconfig.tsbuildinfo] {"fileNames":["../../../../../a/lib/lib.d.ts","../core/index.d.ts","../core/anothermodule.d.ts","../logic/index.d.ts","./index.ts"],"fileIdsList":[[3],[2,3,4]],"fileInfos":[{"version":"-7698705165-/// \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; }","affectsGlobalScope":true},"-7362568283-export declare const someString: string;\nexport declare function leftPad(s: string, n: number): string;\nexport declare function multiply(a: number, b: number): number;\n","-9234818176-export declare const World = \"hello\";\n","-9659407152-export declare function getSecondsInDay(): number;\nimport * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n",{"version":"-11950676699-import * as c from '../core/index';\nimport * as logic from '../logic/index';\n\nc.leftPad(\"\", 10);\nlogic.getSecondsInDay();\n\nimport * as mod from '../core/anotherModule';\nexport const m = mod;\n","signature":"2702201019-import * as mod from '../core/anotherModule';\nexport declare const m: typeof mod;\n"}],"root":[5],"options":{"composite":true,"declaration":true,"skipDefaultLibCheck":true},"referencedMap":[[4,1],[5,2]],"latestChangedDtsFile":"./index.d.ts","version":"FakeTSVersion"} @@ -605,10 +765,7 @@ Semantic diagnostics in builder refreshed for:: /user/username/projects/sample1/tests/index.ts Shape signatures in builder refreshed for:: -/a/lib/lib.d.ts (used version) -/user/username/projects/sample1/core/index.d.ts (used version) -/user/username/projects/sample1/core/anothermodule.d.ts (used version) /user/username/projects/sample1/logic/index.d.ts (used version) -/user/username/projects/sample1/tests/index.ts (computed .d.ts during emit) +/user/username/projects/sample1/tests/index.ts (computed .d.ts) exitCode:: ExitStatus.undefined