Skip typechecking file when generating declaraiton to get d.ts signature for incremental build (#58592)

This commit is contained in:
Sheetal Nandi
2024-05-21 14:09:44 -07:00
committed by GitHub
parent 06841520db
commit cd40d26f01
7 changed files with 131 additions and 104 deletions
+2 -2
View File
@@ -2428,10 +2428,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
return visitEachChild(node, markAsSynthetic, /*context*/ undefined);
}
function getEmitResolver(sourceFile: SourceFile, cancellationToken: CancellationToken) {
function getEmitResolver(sourceFile: SourceFile, cancellationToken: CancellationToken, skipDiagnostics?: boolean) {
// Ensure we have all the type information in place for this file so that all the
// emitter questions of this resolver will return the right information.
getDiagnostics(sourceFile, cancellationToken);
if (!skipDiagnostics) getDiagnostics(sourceFile, cancellationToken);
return emitResolver;
}
+10 -1
View File
@@ -717,6 +717,11 @@ export function getFirstProjectOutput(configFile: ParsedCommandLine, ignoreCase:
return Debug.fail(`project ${configFile.options.configFilePath} expected to have at least one output`);
}
/** @internal */
export function emitResolverSkipsTypeChecking(emitOnly: boolean | EmitOnly | undefined, forceDtsEmit: boolean | undefined) {
return !!forceDtsEmit && !!emitOnly;
}
/** @internal */
// targetSourceFile is when users only want one file in entire project to be emitted. This is used in compileOnSave feature
export function emitFiles(resolver: EmitResolver, host: EmitHost, targetSourceFile: SourceFile | undefined, { scriptTransformers, declarationTransformers }: EmitTransformers, emitOnly?: boolean | EmitOnly, onlyBuildInfo?: boolean, forceDtsEmit?: boolean): EmitResult {
@@ -848,7 +853,11 @@ export function emitFiles(resolver: EmitResolver, host: EmitHost, targetSourceFi
const filesForEmit = forceDtsEmit ? sourceFiles : filter(sourceFiles, isSourceFileNotJson);
// Setup and perform the transformation to retrieve declarations from the input files
const inputListOrBundle = compilerOptions.outFile ? [factory.createBundle(filesForEmit)] : filesForEmit;
if ((emitOnly && !getEmitDeclarations(compilerOptions)) || compilerOptions.noCheck) {
if (
(emitOnly && !getEmitDeclarations(compilerOptions)) ||
compilerOptions.noCheck ||
emitResolverSkipsTypeChecking(emitOnly, forceDtsEmit)
) {
// Checker wont collect the linked aliases since thats only done when declaration is enabled and checking is performed.
// Do that here when emitting only dts files
filesForEmit.forEach(collectLinkedAliases);
+19 -9
View File
@@ -68,6 +68,7 @@ import {
EmitHost,
emitModuleKindIsNonNodeESM,
EmitOnly,
emitResolverSkipsTypeChecking,
EmitResult,
emptyArray,
ensureTrailingDirectorySeparator,
@@ -2870,18 +2871,27 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
// This is because in the -out scenario all files need to be emitted, and therefore all
// files need to be type checked. And the way to specify that all files need to be type
// checked is to not pass the file to getEmitResolver.
const emitResolver = getTypeChecker().getEmitResolver(options.outFile ? undefined : sourceFile, cancellationToken);
const typeChecker = getTypeChecker();
const emitResolver = typeChecker.getEmitResolver(
options.outFile ? undefined : sourceFile,
cancellationToken,
emitResolverSkipsTypeChecking(emitOnly, forceDtsEmit),
);
performance.mark("beforeEmit");
const emitResult = emitFiles(
emitResolver,
getEmitHost(writeFileCallback),
sourceFile,
getTransformers(options, customTransformers, emitOnly),
emitOnly,
/*onlyBuildInfo*/ false,
forceDtsEmit,
const emitResult = typeChecker.runWithCancellationToken(
cancellationToken,
() =>
emitFiles(
emitResolver,
getEmitHost(writeFileCallback),
sourceFile,
getTransformers(options, customTransformers, emitOnly),
emitOnly,
/*onlyBuildInfo*/ false,
forceDtsEmit,
),
);
performance.mark("afterEmit");
+3 -1
View File
@@ -5264,7 +5264,7 @@ export interface TypeChecker {
// Should not be called directly. Should only be accessed through the Program instance.
/** @internal */ getDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[];
/** @internal */ getGlobalDiagnostics(): Diagnostic[];
/** @internal */ getEmitResolver(sourceFile?: SourceFile, cancellationToken?: CancellationToken): EmitResolver;
/** @internal */ getEmitResolver(sourceFile?: SourceFile, cancellationToken?: CancellationToken, forceDts?: boolean): EmitResolver;
/** @internal */ getNodeCount(): number;
/** @internal */ getIdentifierCount(): number;
@@ -5354,6 +5354,8 @@ export interface TypeChecker {
* and the operation is cancelled, then it should be discarded, otherwise it is safe to keep.
*/
runWithCancellationToken<T>(token: CancellationToken, cb: (checker: TypeChecker) => T): T;
/**@internal */
runWithCancellationToken<T>(token: CancellationToken | undefined, cb: (checker: TypeChecker) => T): T; // eslint-disable-line @typescript-eslint/unified-signatures
/** @internal */ getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol: Symbol): readonly TypeParameter[] | undefined;
/** @internal */ isDeclarationVisible(node: Declaration | AnyImportSyntax): boolean;
@@ -17,7 +17,7 @@ import {
libFile,
} from "../helpers/virtualFileSystemWithWatch.js";
describe("unittests:: tsc:: builder cancellationToken", () => {
describe("unittests:: tsc:: builder cancellationToken::", () => {
verifyCancellation(/*useBuildInfo*/ true, "when emitting buildInfo");
verifyCancellation(/*useBuildInfo*/ false, "when using state");
function verifyCancellation(useBuildInfo: boolean, scenario: string) {
@@ -41,9 +41,9 @@ describe("unittests:: tsc:: builder cancellationToken", () => {
const cFile: File = {
path: `/user/username/projects/myproject/c.ts`,
content: Utils.dedent`
export class C {
export var C = class CReal {
d = 1;
}`,
};`,
};
const dFile: File = {
path: `/user/username/projects/myproject/d.ts`,
@@ -13,9 +13,9 @@ export class B {
}
//// [/user/username/projects/myproject/c.ts]
export class C {
export var C = class CReal {
d = 1;
}
};
//// [/user/username/projects/myproject/d.ts]
export class D { }
@@ -46,19 +46,20 @@ interface Array<T> { length: number; [n: number]: T; }
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.C = void 0;
var C = /** @class */ (function () {
function C() {
exports.C = /** @class */ (function () {
function CReal() {
this.d = 1;
}
return C;
return CReal;
}());
exports.C = C;
//// [/user/username/projects/myproject/c.d.ts]
export declare class C {
d: number;
}
export declare var C: {
new (): {
d: number;
};
};
//// [/user/username/projects/myproject/b.js]
@@ -76,9 +77,10 @@ exports.B = B;
//// [/user/username/projects/myproject/b.d.ts]
import { C } from './c';
export declare class B {
c: C;
c: {
d: number;
};
}
@@ -112,7 +114,7 @@ export declare class D {
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-5130721255-export class C {\n d = 1;\n}","signature":"-6977846840-export declare class C {\n d: number;\n}\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"6071811233-export var C = class CReal {\n d = 1;\n};","signature":"-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -146,22 +148,22 @@ export declare class D {
},
"./c.ts": {
"original": {
"version": "-5130721255-export class C {\n d = 1;\n}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "6071811233-export var C = class CReal {\n d = 1;\n};",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": 1
},
"version": "-5130721255-export class C {\n d = 1;\n}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "6071811233-export var C = class CReal {\n d = 1;\n};",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -219,7 +221,7 @@ export declare class D {
]
},
"version": "FakeTSVersion",
"size": 1326
"size": 1368
}
@@ -262,9 +264,9 @@ Change:: Add change that affects d.ts
Input::
//// [/user/username/projects/myproject/c.ts]
export class C {
export var C = class CReal {
d = 1;
}export function foo() {}
};export function foo() {}
Output::
@@ -273,7 +275,7 @@ Operation ws cancelled:: true
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"840271342-export class C {\n d = 1;\n}export function foo() {}","signature":"-6977846840-export declare class C {\n d: number;\n}\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,5],"changeFileSet":[2]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}","signature":"-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,5],"changeFileSet":[2]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -307,22 +309,22 @@ Operation ws cancelled:: true
},
"./c.ts": {
"original": {
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": 1
},
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -382,7 +384,7 @@ Operation ws cancelled:: true
]
},
"version": "FakeTSVersion",
"size": 1366
"size": 1411
}
@@ -421,20 +423,21 @@ Input::
Object.defineProperty(exports, "__esModule", { value: true });
exports.C = void 0;
exports.foo = foo;
var C = /** @class */ (function () {
function C() {
exports.C = /** @class */ (function () {
function CReal() {
this.d = 1;
}
return C;
return CReal;
}());
exports.C = C;
function foo() { }
//// [/user/username/projects/myproject/c.d.ts]
export declare class C {
d: number;
}
export declare var C: {
new (): {
d: number;
};
};
export declare function foo(): void;
@@ -442,7 +445,7 @@ export declare function foo(): void;
//// [/user/username/projects/myproject/b.d.ts] file written with same contents
//// [/user/username/projects/myproject/a.d.ts] file written with same contents
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"840271342-export class C {\n d = 1;\n}export function foo() {}","signature":"-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}","signature":"-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -476,22 +479,22 @@ export declare function foo(): void;
},
"./c.ts": {
"original": {
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n",
"impliedFormat": 1
},
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -549,7 +552,7 @@ export declare function foo(): void;
]
},
"version": "FakeTSVersion",
"size": 1386
"size": 1430
}
@@ -13,9 +13,9 @@ export class B {
}
//// [/user/username/projects/myproject/c.ts]
export class C {
export var C = class CReal {
d = 1;
}
};
//// [/user/username/projects/myproject/d.ts]
export class D { }
@@ -46,19 +46,20 @@ interface Array<T> { length: number; [n: number]: T; }
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.C = void 0;
var C = /** @class */ (function () {
function C() {
exports.C = /** @class */ (function () {
function CReal() {
this.d = 1;
}
return C;
return CReal;
}());
exports.C = C;
//// [/user/username/projects/myproject/c.d.ts]
export declare class C {
d: number;
}
export declare var C: {
new (): {
d: number;
};
};
//// [/user/username/projects/myproject/b.js]
@@ -76,9 +77,10 @@ exports.B = B;
//// [/user/username/projects/myproject/b.d.ts]
import { C } from './c';
export declare class B {
c: C;
c: {
d: number;
};
}
@@ -112,7 +114,7 @@ export declare class D {
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-5130721255-export class C {\n d = 1;\n}","signature":"-6977846840-export declare class C {\n d: number;\n}\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"6071811233-export var C = class CReal {\n d = 1;\n};","signature":"-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -146,22 +148,22 @@ export declare class D {
},
"./c.ts": {
"original": {
"version": "-5130721255-export class C {\n d = 1;\n}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "6071811233-export var C = class CReal {\n d = 1;\n};",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": 1
},
"version": "-5130721255-export class C {\n d = 1;\n}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "6071811233-export var C = class CReal {\n d = 1;\n};",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -219,7 +221,7 @@ export declare class D {
]
},
"version": "FakeTSVersion",
"size": 1326
"size": 1368
}
@@ -262,9 +264,9 @@ Change:: Add change that affects d.ts
Input::
//// [/user/username/projects/myproject/c.ts]
export class C {
export var C = class CReal {
d = 1;
}export function foo() {}
};export function foo() {}
Output::
@@ -273,7 +275,7 @@ Operation ws cancelled:: true
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"840271342-export class C {\n d = 1;\n}export function foo() {}","signature":"-6977846840-export declare class C {\n d: number;\n}\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,5],"changeFileSet":[2]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}","signature":"-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,5],"changeFileSet":[2]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -307,22 +309,22 @@ Operation ws cancelled:: true
},
"./c.ts": {
"original": {
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": 1
},
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-6977846840-export declare class C {\n d: number;\n}\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-2874569268-export declare var C: {\n new (): {\n d: number;\n };\n};\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -382,7 +384,7 @@ Operation ws cancelled:: true
]
},
"version": "FakeTSVersion",
"size": 1366
"size": 1411
}
@@ -421,20 +423,21 @@ Input::
Object.defineProperty(exports, "__esModule", { value: true });
exports.C = void 0;
exports.foo = foo;
var C = /** @class */ (function () {
function C() {
exports.C = /** @class */ (function () {
function CReal() {
this.d = 1;
}
return C;
return CReal;
}());
exports.C = C;
function foo() { }
//// [/user/username/projects/myproject/c.d.ts]
export declare class C {
d: number;
}
export declare var C: {
new (): {
d: number;
};
};
export declare function foo(): void;
@@ -442,7 +445,7 @@ export declare function foo(): void;
//// [/user/username/projects/myproject/b.d.ts] file written with same contents
//// [/user/username/projects/myproject/a.d.ts] file written with same contents
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"840271342-export class C {\n d = 1;\n}export function foo() {}","signature":"-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./c.ts","./b.ts","./a.ts","./d.ts"],"fileInfos":[{"version":"-7698705165-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}","signature":"-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n","impliedFormat":1},{"version":"-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}","signature":"-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n","impliedFormat":1},{"version":"4878398349-import {B} from './b';\ndeclare var console: any;\nlet b = new B();\nconsole.log(b.c.d);","signature":"-3531856636-export {};\n","impliedFormat":1},{"version":"-7804761415-export class D { }","signature":"-8611429667-export declare class D {\n}\n","impliedFormat":1}],"root":[[2,5]],"options":{"declaration":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2]],"semanticDiagnosticsPerFile":[1,4,3,2,5]},"version":"FakeTSVersion"}
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
{
@@ -476,22 +479,22 @@ export declare function foo(): void;
},
"./c.ts": {
"original": {
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n",
"impliedFormat": 1
},
"version": "840271342-export class C {\n d = 1;\n}export function foo() {}",
"signature": "-7819740442-export declare class C {\n d: number;\n}\nexport declare function foo(): void;\n",
"version": "-8116587914-export var C = class CReal {\n d = 1;\n};export function foo() {}",
"signature": "-544179862-export declare var C: {\n new (): {\n d: number;\n };\n};\nexport declare function foo(): void;\n",
"impliedFormat": "commonjs"
},
"./b.ts": {
"original": {
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": 1
},
"version": "-6441446591-import {C} from './c';\nexport class B {\n c = new C();\n}",
"signature": "-165097315-import { C } from './c';\nexport declare class B {\n c: C;\n}\n",
"signature": "-12916012021-export declare class B {\n c: {\n d: number;\n };\n}\n",
"impliedFormat": "commonjs"
},
"./a.ts": {
@@ -549,7 +552,7 @@ export declare function foo(): void;
]
},
"version": "FakeTSVersion",
"size": 1386
"size": 1430
}