From e61f87460a5d6498bc45c6ec8f48f125c2b3e1dd Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 9 Nov 2022 15:39:03 -0800 Subject: [PATCH 1/2] Add test for when file is deleted --- src/testRunner/unittests/tsc/incremental.ts | 22 +++ .../when-file-is-deleted-discrepancies.js | 104 ++++++++++++++ .../tsc/incremental/when-file-is-deleted.js | 133 ++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js create mode 100644 tests/baselines/reference/tsc/incremental/when-file-is-deleted.js diff --git a/src/testRunner/unittests/tsc/incremental.ts b/src/testRunner/unittests/tsc/incremental.ts index 9bd13a37fb64c..5bfe1a27c53e1 100644 --- a/src/testRunner/unittests/tsc/incremental.ts +++ b/src/testRunner/unittests/tsc/incremental.ts @@ -819,4 +819,26 @@ console.log(a);`, baselinePrograms: true, }); }); + + verifyTscWithEdits({ + scenario: "incremental", + subScenario: "when file is deleted", + commandLineArgs: ["-p", `/src/project`], + fs: () => loadProjectFromFiles({ + "/src/project/tsconfig.json": JSON.stringify({ + compilerOptions: { + composite: true, + outDir: "outDir", + }, + }), + "/src/project/file1.ts": `export class C { }`, + "/src/project/file2.ts": `export class D { }`, + }), + edits: [ + { + subScenario: "delete file with imports", + modifyFs: fs => fs.unlinkSync("/src/project/file2.ts"), + }, + ] + }); }); diff --git a/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js b/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js new file mode 100644 index 0000000000000..f1708bf2cfd0a --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js @@ -0,0 +1,104 @@ +0:: delete file with imports +*** Needs explanation +TsBuild info text without affectedFilesPendingEmit:: /src/project/outdir/tsconfig.tsbuildinfo.readable.baseline.txt:: +CleanBuild: +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../file1.ts": { + "version": "-9819564552-export class C { }" + } + }, + "options": { + "composite": true, + "outDir": "./" + }, + "referencedMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../file1.ts" + ], + "latestChangedDtsFile": "FakeFileName" + }, + "version": "FakeTSVersion" +} +IncrementalBuild: +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../file1.ts": { + "version": "-9819564552-export class C { }" + }, + "../file2.ts": { + "version": "-7804761415-export class D { }" + } + }, + "options": { + "composite": true, + "outDir": "./" + }, + "referencedMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../file1.ts", + "../file2.ts" + ], + "latestChangedDtsFile": "FakeFileName" + }, + "version": "FakeTSVersion" +} +Incremental and clean size of maps do not match:: FileInfos:: File:: /src/project/outdir/tsconfig.tsbuildinfo.readable.baseline.txt +Incremental: { + "../../../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 + }, + "../file1.ts": { + "original": { + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "../file2.ts": { + "original": { + "version": "-7804761415-export class D { }", + "signature": "-10523684105-export declare class D {\r\n}\r\n" + }, + "version": "-7804761415-export class D { }", + "signature": "-10523684105-export declare class D {\r\n}\r\n" + } +} +Clean: { + "../../../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 + }, + "../file1.ts": { + "original": { + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + } +} \ No newline at end of file diff --git a/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js b/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js new file mode 100644 index 0000000000000..60de7743b44ad --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js @@ -0,0 +1,133 @@ +Input:: +//// [/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } +interface ReadonlyArray {} +declare const console: { log(msg: any): void; }; + +//// [/src/project/file1.ts] +export class C { } + +//// [/src/project/file2.ts] +export class D { } + +//// [/src/project/tsconfig.json] +{"compilerOptions":{"composite":true,"outDir":"outDir"}} + + + +Output:: +/lib/tsc -p /src/project +exitCode:: ExitStatus.Success + + +//// [/src/project/outDir/file1.d.ts] +export declare class C { +} + + +//// [/src/project/outDir/file1.js] +"use strict"; +exports.__esModule = true; +exports.C = void 0; +var C = /** @class */ (function () { + function C() { + } + return C; +}()); +exports.C = C; + + +//// [/src/project/outDir/file2.d.ts] +export declare class D { +} + + +//// [/src/project/outDir/file2.js] +"use strict"; +exports.__esModule = true; +exports.D = void 0; +var D = /** @class */ (function () { + function D() { + } + return D; +}()); +exports.D = D; + + +//// [/src/project/outDir/tsconfig.tsbuildinfo] +{"program":{"fileNames":["../../../lib/lib.d.ts","../file1.ts","../file2.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":"-9819564552-export class C { }","signature":"-10192454122-export declare class C {\r\n}\r\n"},{"version":"-7804761415-export class D { }","signature":"-10523684105-export declare class D {\r\n}\r\n"}],"options":{"composite":true,"outDir":"./"},"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./file2.d.ts"},"version":"FakeTSVersion"} + +//// [/src/project/outDir/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "program": { + "fileNames": [ + "../../../lib/lib.d.ts", + "../file1.ts", + "../file2.ts" + ], + "fileInfos": { + "../../../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 + }, + "../file1.ts": { + "original": { + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "../file2.ts": { + "original": { + "version": "-7804761415-export class D { }", + "signature": "-10523684105-export declare class D {\r\n}\r\n" + }, + "version": "-7804761415-export class D { }", + "signature": "-10523684105-export declare class D {\r\n}\r\n" + } + }, + "options": { + "composite": true, + "outDir": "./" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../file1.ts", + "../file2.ts" + ], + "latestChangedDtsFile": "./file2.d.ts" + }, + "version": "FakeTSVersion", + "size": 972 +} + + + +Change:: delete file with imports +Input:: +//// [/src/project/file2.ts] unlink + + +Output:: +/lib/tsc -p /src/project +exitCode:: ExitStatus.Success + + From 469cdf6cdd3a3dff29abc92f4956b3dd892edc95 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 9 Nov 2022 15:52:54 -0800 Subject: [PATCH 2/2] Emit buildinfo if file deleted isnt global --- src/compiler/builder.ts | 8 +- .../when-file-is-deleted-discrepancies.js | 104 ------------------ .../tsc/incremental/when-file-is-deleted.js | 45 ++++++++ 3 files changed, 52 insertions(+), 105 deletions(-) delete mode 100644 tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js diff --git a/src/compiler/builder.ts b/src/compiler/builder.ts index a0ab1339bca19..1deeaf45ba275 100644 --- a/src/compiler/builder.ts +++ b/src/compiler/builder.ts @@ -313,7 +313,13 @@ function createBuilderProgramState(newProgram: Program, getCanonicalFileName: Ge }); // If the global file is removed, add all files as changed - if (useOldState && forEachEntry(oldState!.fileInfos, (info, sourceFilePath) => (outFilePath || info.affectsGlobalScope) && !state.fileInfos.has(sourceFilePath))) { + if (useOldState && forEachEntry(oldState!.fileInfos, (info, sourceFilePath) => { + if (state.fileInfos.has(sourceFilePath)) return false; + if (outFilePath || info.affectsGlobalScope) return true; + // if file is deleted we need to write buildInfo again + state.buildInfoEmitPending = true; + return false; + })) { BuilderState.getAllFilesExcludingDefaultLibraryFile(state, newProgram, /*firstSourceFile*/ undefined) .forEach(file => addFileToChangeSet(state, file.resolvedPath)); } diff --git a/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js b/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js deleted file mode 100644 index f1708bf2cfd0a..0000000000000 --- a/tests/baselines/reference/tsc/incremental/when-file-is-deleted-discrepancies.js +++ /dev/null @@ -1,104 +0,0 @@ -0:: delete file with imports -*** Needs explanation -TsBuild info text without affectedFilesPendingEmit:: /src/project/outdir/tsconfig.tsbuildinfo.readable.baseline.txt:: -CleanBuild: -{ - "program": { - "fileInfos": { - "../../../lib/lib.d.ts": { - "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", - "affectsGlobalScope": true - }, - "../file1.ts": { - "version": "-9819564552-export class C { }" - } - }, - "options": { - "composite": true, - "outDir": "./" - }, - "referencedMap": {}, - "semanticDiagnosticsPerFile": [ - "../../../lib/lib.d.ts", - "../file1.ts" - ], - "latestChangedDtsFile": "FakeFileName" - }, - "version": "FakeTSVersion" -} -IncrementalBuild: -{ - "program": { - "fileInfos": { - "../../../lib/lib.d.ts": { - "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", - "affectsGlobalScope": true - }, - "../file1.ts": { - "version": "-9819564552-export class C { }" - }, - "../file2.ts": { - "version": "-7804761415-export class D { }" - } - }, - "options": { - "composite": true, - "outDir": "./" - }, - "referencedMap": {}, - "semanticDiagnosticsPerFile": [ - "../../../lib/lib.d.ts", - "../file1.ts", - "../file2.ts" - ], - "latestChangedDtsFile": "FakeFileName" - }, - "version": "FakeTSVersion" -} -Incremental and clean size of maps do not match:: FileInfos:: File:: /src/project/outdir/tsconfig.tsbuildinfo.readable.baseline.txt -Incremental: { - "../../../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 - }, - "../file1.ts": { - "original": { - "version": "-9819564552-export class C { }", - "signature": "-10192454122-export declare class C {\r\n}\r\n" - }, - "version": "-9819564552-export class C { }", - "signature": "-10192454122-export declare class C {\r\n}\r\n" - }, - "../file2.ts": { - "original": { - "version": "-7804761415-export class D { }", - "signature": "-10523684105-export declare class D {\r\n}\r\n" - }, - "version": "-7804761415-export class D { }", - "signature": "-10523684105-export declare class D {\r\n}\r\n" - } -} -Clean: { - "../../../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 - }, - "../file1.ts": { - "original": { - "version": "-9819564552-export class C { }", - "signature": "-10192454122-export declare class C {\r\n}\r\n" - }, - "version": "-9819564552-export class C { }", - "signature": "-10192454122-export declare class C {\r\n}\r\n" - } -} \ No newline at end of file diff --git a/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js b/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js index 60de7743b44ad..9ee08e92a5412 100644 --- a/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js +++ b/tests/baselines/reference/tsc/incremental/when-file-is-deleted.js @@ -131,3 +131,48 @@ Output:: exitCode:: ExitStatus.Success +//// [/src/project/outDir/tsconfig.tsbuildinfo] +{"program":{"fileNames":["../../../lib/lib.d.ts","../file1.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":"-9819564552-export class C { }","signature":"-10192454122-export declare class C {\r\n}\r\n"}],"options":{"composite":true,"outDir":"./"},"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2],"latestChangedDtsFile":"./file2.d.ts"},"version":"FakeTSVersion"} + +//// [/src/project/outDir/tsconfig.tsbuildinfo.readable.baseline.txt] +{ + "program": { + "fileNames": [ + "../../../lib/lib.d.ts", + "../file1.ts" + ], + "fileInfos": { + "../../../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 + }, + "../file1.ts": { + "original": { + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + }, + "version": "-9819564552-export class C { }", + "signature": "-10192454122-export declare class C {\r\n}\r\n" + } + }, + "options": { + "composite": true, + "outDir": "./" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../file1.ts" + ], + "latestChangedDtsFile": "./file2.d.ts" + }, + "version": "FakeTSVersion", + "size": 850 +} +