diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index 0a9e58c6de3b8..96e1748cfe42e 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -25,6 +25,7 @@ import { createEmptyExports, createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName, + createModeAwareCacheKey, createSymbolTable, createUnparsedSourceFile, Debug, @@ -63,6 +64,7 @@ import { getLineAndCharacterOfPosition, getNameOfDeclaration, getNormalizedAbsolutePath, + getOriginalNode, getOriginalNodeId, getOutputPathsFor, getParseTreeNode, @@ -155,6 +157,7 @@ import { mapDefined, MethodDeclaration, MethodSignature, + ModeAwareCacheKey, Modifier, ModifierFlags, ModifierLike, @@ -254,11 +257,11 @@ export function transformDeclarations(context: TransformationContext) { let needsScopeFixMarker = false; let resultHasScopeMarker = false; let enclosingDeclaration: Node; - let necessaryTypeReferences: Set<[specifier: string, mode: ResolutionMode]> | undefined; + let necessaryTypeReferences: Map | undefined; let lateMarkedStatements: LateVisibilityPaintedStatement[] | undefined; let lateStatementReplacementMap: Map>; let suppressNewDiagnosticContexts: boolean; - let exportedModulesFromDeclarationEmit: Symbol[] | undefined; + let exportedModulesFromDeclarationEmit: Set | undefined; const { factory } = context; const host = context.getEmitHost(); @@ -280,8 +283,8 @@ export function transformDeclarations(context: TransformationContext) { let errorFallbackNode: Declaration | undefined; let currentSourceFile: SourceFile; - let refs: Map; - let libs: Map; + let refs: Set; + let libs: Set; let emittedImports: readonly AnyImportSyntax[] | undefined; // must be declared in container so it can be `undefined` while transformer's first pass const resolver = context.getEmitResolver(); const options = context.getCompilerOptions(); @@ -289,15 +292,20 @@ export function transformDeclarations(context: TransformationContext) { return transformRoot; function recordTypeReferenceDirectivesIfNecessary(typeReferenceDirectives: readonly [specifier: string, mode: ResolutionMode][] | undefined): void { - if (!typeReferenceDirectives) { + if (!typeReferenceDirectives || typeReferenceDirectives.length === 0) { return; } - necessaryTypeReferences = necessaryTypeReferences || new Set(); - for (const ref of typeReferenceDirectives) { - necessaryTypeReferences.add(ref); + necessaryTypeReferences ??= new Map(); + for (const directive of typeReferenceDirectives) { + const referenceKey = createModeAwareCacheKey(...directive); + necessaryTypeReferences.set(referenceKey, directive); } } + function recordExportedModuleFromDeclarationEmit(symbol: Symbol) { + exportedModulesFromDeclarationEmit ??= new Set(); + exportedModulesFromDeclarationEmit.add(symbol); + } function trackReferencedAmbientModule(node: ModuleDeclaration, symbol: Symbol) { // If it is visible via `// `, then we should just use that const directives = resolver.getTypeReferenceDirectivesForSymbol(symbol, SymbolFlags.All); @@ -305,8 +313,8 @@ export function transformDeclarations(context: TransformationContext) { return recordTypeReferenceDirectivesIfNecessary(directives); } // Otherwise we should emit a path-based reference - const container = getSourceFileOfNode(node); - refs.set(getOriginalNodeId(container), container); + const container = getOriginalNode(getSourceFileOfNode(node), isSourceFile); + refs.add(container); } function trackReferencedAmbientModuleFromImport(node: ImportDeclaration | ExportDeclaration | ImportEqualsDeclaration | ImportTypeNode) { @@ -354,7 +362,7 @@ export function transformDeclarations(context: TransformationContext) { function trackExternalModuleSymbolOfImportTypeNode(symbol: Symbol) { if (!isBundledEmit) { - (exportedModulesFromDeclarationEmit || (exportedModulesFromDeclarationEmit = [])).push(symbol); + recordExportedModuleFromDeclarationEmit(symbol); } } @@ -452,8 +460,8 @@ export function transformDeclarations(context: TransformationContext) { if (node.kind === SyntaxKind.Bundle) { isBundledEmit = true; - refs = new Map(); - libs = new Map(); + refs = new Set(); + libs = new Set(); let hasNoDefaultLib = false; const bundle = factory.createBundle( map(node.sourceFiles, sourceFile => { @@ -527,8 +535,11 @@ export function transformDeclarations(context: TransformationContext) { lateMarkedStatements = undefined; lateStatementReplacementMap = new Map(); necessaryTypeReferences = undefined; - refs = collectReferences(currentSourceFile, new Map()); - libs = collectLibs(currentSourceFile, new Map()); + recordTypeReferenceDirectivesIfNecessary( + node.typeReferenceDirectives.map(f => [f.fileName, f.resolutionMode ?? currentSourceFile.impliedNodeFormat]), + ); + refs = collectReferences(currentSourceFile, new Set()); + libs = collectLibs(currentSourceFile, new Set()); const references: FileReference[] = []; const outputFilePath = getDirectoryPath(normalizeSlashes(getOutputPathsFor(node, host, /*forceDtsPaths*/ true).declarationFilePath!)); const referenceVisitor = mapReferencesIntoArray(references, outputFilePath); @@ -548,7 +559,7 @@ export function transformDeclarations(context: TransformationContext) { } } const updated = factory.updateSourceFile(node, combinedStatements, /*isDeclarationFile*/ true, references, getFileReferencesForUsedTypeReferences(), node.hasNoDefaultLib, getLibReferences()); - updated.exportedModulesFromDeclarationEmit = exportedModulesFromDeclarationEmit; + updated.exportedModulesFromDeclarationEmit = exportedModulesFromDeclarationEmit && [...exportedModulesFromDeclarationEmit.keys()]; return updated; function getLibReferences() { @@ -556,7 +567,7 @@ export function transformDeclarations(context: TransformationContext) { } function getFileReferencesForUsedTypeReferences() { - return necessaryTypeReferences ? mapDefined(arrayFrom(necessaryTypeReferences.keys()), getFileReferenceForSpecifierModeTuple) : []; + return necessaryTypeReferences ? mapDefined(arrayFrom(necessaryTypeReferences.values()), getFileReferenceForSpecifierModeTuple) : []; } function getFileReferenceForSpecifierModeTuple([typeName, mode]: [specifier: string, mode: ResolutionMode]): FileReference | undefined { @@ -579,7 +590,7 @@ export function transformDeclarations(context: TransformationContext) { function mapReferencesIntoArray(references: FileReference[], outputFilePath: string): (file: SourceFile) => void { return file => { - if (exportedModulesFromDeclarationEmit?.includes(file.symbol)) { + if (exportedModulesFromDeclarationEmit?.has(file.symbol)) { // Already have an import declaration resolving to this file return; } @@ -633,22 +644,22 @@ export function transformDeclarations(context: TransformationContext) { } } - function collectReferences(sourceFile: SourceFile | UnparsedSource, ret: Map) { + function collectReferences(sourceFile: SourceFile | UnparsedSource, ret: Set) { if (noResolve || (!isUnparsedSource(sourceFile) && isSourceFileJS(sourceFile))) return ret; forEach(sourceFile.referencedFiles, f => { const elem = host.getSourceFileFromReference(sourceFile, f); if (elem) { - ret.set(getOriginalNodeId(elem), elem); + ret.add(getOriginalNode(elem, isSourceFile)); } }); return ret; } - function collectLibs(sourceFile: SourceFile | UnparsedSource, ret: Map) { + function collectLibs(sourceFile: SourceFile | UnparsedSource, ret: Set) { forEach(sourceFile.libReferenceDirectives, ref => { const lib = host.getLibFileFromReference(ref); if (lib) { - ret.set(toFileNameLowerCase(ref.fileName), true); + ret.add(toFileNameLowerCase(ref.fileName)); } }); return ret; @@ -911,7 +922,7 @@ export function transformDeclarations(context: TransformationContext) { else { const symbol = resolver.getSymbolOfExternalModuleSpecifier(input); if (symbol) { - (exportedModulesFromDeclarationEmit || (exportedModulesFromDeclarationEmit = [])).push(symbol); + recordExportedModuleFromDeclarationEmit(symbol); } } } diff --git a/tests/baselines/reference/declarationFilesWithTypeReferences4.js b/tests/baselines/reference/declarationFilesWithTypeReferences4.js index 1356c459c0955..fa697346f900c 100644 --- a/tests/baselines/reference/declarationFilesWithTypeReferences4.js +++ b/tests/baselines/reference/declarationFilesWithTypeReferences4.js @@ -19,4 +19,5 @@ function foo() { //// [app.d.ts] +/// declare function foo(): Error; diff --git a/tests/baselines/reference/resolutionModeTripleSlash2.js b/tests/baselines/reference/resolutionModeTripleSlash2.js index e30b6cf9158ac..147eed9103419 100644 --- a/tests/baselines/reference/resolutionModeTripleSlash2.js +++ b/tests/baselines/reference/resolutionModeTripleSlash2.js @@ -35,4 +35,5 @@ function foo() { //// [app.d.ts] +/// declare function foo(): any; diff --git a/tests/baselines/reference/tscWatch/resolutionCache/reusing-type-ref-resolution.js b/tests/baselines/reference/tscWatch/resolutionCache/reusing-type-ref-resolution.js index 8f15bbb35bf24..67b37c3d5ad87 100644 --- a/tests/baselines/reference/tscWatch/resolutionCache/reusing-type-ref-resolution.js +++ b/tests/baselines/reference/tscWatch/resolutionCache/reusing-type-ref-resolution.js @@ -176,11 +176,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [/users/username/projects/project/outDir/fileWithTypeRefs.d.ts] +/// +/// export {}; //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo] -{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"-3531856636-export {};\n"}],"root":[3,5],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2],[4]],"referencedMap":[[3,1],[5,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,[3,[{"file":"../filewithimports.ts","start":66,"length":6,"messageText":"Cannot find module 'pkg1' or its corresponding type declarations.","category":1,"code":2307}]],[5,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,4],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"15728627671-/// \n/// \nexport {};\n"}],"root":[3,5],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2],[4]],"referencedMap":[[3,1],[5,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,[3,[{"file":"../filewithimports.ts","start":66,"length":6,"messageText":"Cannot find module 'pkg1' or its corresponding type declarations.","category":1,"code":2307}]],[5,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,4],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo.readable.baseline.txt] { @@ -234,10 +236,10 @@ export {}; "../filewithtyperefs.ts": { "original": { "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" }, "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" } }, "root": [ @@ -297,7 +299,7 @@ export {}; "latestChangedDtsFile": "./fileWithTypeRefs.d.ts" }, "version": "FakeTSVersion", - "size": 1620 + "size": 1688 } @@ -463,7 +465,7 @@ fileWithTypeRefs.ts //// [/users/username/projects/project/outDir/fileWithImports.js] file written with same contents //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo] -{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../node_modules/pkg1/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}","-8124720484-export interface Import1 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"-3531856636-export {};\n"}],"root":[4,6],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2,3],[5]],"referencedMap":[[4,1],[6,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,4,[6,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,3,5],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../node_modules/pkg1/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}","-8124720484-export interface Import1 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"15728627671-/// \n/// \nexport {};\n"}],"root":[4,6],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2,3],[5]],"referencedMap":[[4,1],[6,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,4,[6,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,3,5],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo.readable.baseline.txt] { @@ -523,10 +525,10 @@ fileWithTypeRefs.ts "../filewithtyperefs.ts": { "original": { "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" }, "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" } }, "root": [ @@ -576,7 +578,7 @@ fileWithTypeRefs.ts "latestChangedDtsFile": "./fileWithTypeRefs.d.ts" }, "version": "FakeTSVersion", - "size": 1534 + "size": 1602 } @@ -738,7 +740,7 @@ fileWithTypeRefs.ts //// [/users/username/projects/project/outDir/fileWithTypeRefs.js] file written with same contents //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo] -{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../node_modules/pkg1/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../node_modules/pkg3/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}","-8124720484-export interface Import1 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},"-8124648610-export interface Import3 {}",{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"-3531856636-export {};\n"}],"root":[4,7],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2,3],[5,6]],"referencedMap":[[4,1],[7,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,4,[7,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,3,5,6],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../../../../../a/lib/lib.d.ts","../node_modules/pkg0/index.d.ts","../node_modules/pkg1/index.d.ts","../filewithimports.ts","../node_modules/pkg2/index.d.ts","../node_modules/pkg3/index.d.ts","../filewithtyperefs.ts"],"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},"-8124756421-export interface Import0 {}","-8124720484-export interface Import1 {}",{"version":"-14287751515-import type { Import0 } from \"pkg0\";\nimport type { Import1 } from \"pkg1\";\n","signature":"-3531856636-export {};\n"},{"version":"-11273315461-interface Import2 {}","affectsGlobalScope":true},"-8124648610-export interface Import3 {}",{"version":"-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n","signature":"15728627671-/// \n/// \nexport {};\n"}],"root":[4,7],"options":{"composite":true,"outDir":"./"},"fileIdsList":[[2,3],[5,6]],"referencedMap":[[4,1],[7,2]],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,4,[7,[{"file":"../filewithtyperefs.ts","start":102,"length":7,"messageText":"Cannot find name 'Import3'. Did you mean 'Import2'?","category":1,"code":2552}]],2,3,5,6],"latestChangedDtsFile":"./fileWithTypeRefs.d.ts"},"version":"FakeTSVersion"} //// [/users/username/projects/project/outDir/tsconfig.tsbuildinfo.readable.baseline.txt] { @@ -804,10 +806,10 @@ fileWithTypeRefs.ts "../filewithtyperefs.ts": { "original": { "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" }, "version": "-12735305811-/// \n/// \ninterface LocalInterface extends Import2, Import3 {}\nexport {}\n", - "signature": "-3531856636-export {};\n" + "signature": "15728627671-/// \n/// \nexport {};\n" } }, "root": [ @@ -859,7 +861,7 @@ fileWithTypeRefs.ts "latestChangedDtsFile": "./fileWithTypeRefs.d.ts" }, "version": "FakeTSVersion", - "size": 1614 + "size": 1682 } diff --git a/tests/baselines/reference/typeReferenceDirectives10.js b/tests/baselines/reference/typeReferenceDirectives10.js index a157fb36a8a5e..b6dccb6d12b05 100644 --- a/tests/baselines/reference/typeReferenceDirectives10.js +++ b/tests/baselines/reference/typeReferenceDirectives10.js @@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); //// [app.d.ts] +/// import { $ } from "./ref"; export interface A { x: $; diff --git a/tests/baselines/reference/typeReferenceDirectives3.js b/tests/baselines/reference/typeReferenceDirectives3.js index 28d57f93fe512..ad5e5841598ae 100644 --- a/tests/baselines/reference/typeReferenceDirectives3.js +++ b/tests/baselines/reference/typeReferenceDirectives3.js @@ -22,6 +22,7 @@ interface A { //// [app.d.ts] /// +/// interface A { x: () => $; } diff --git a/tests/baselines/reference/typeReferenceDirectives4.js b/tests/baselines/reference/typeReferenceDirectives4.js index 6f26c2034ade9..c5da4bf2be2d3 100644 --- a/tests/baselines/reference/typeReferenceDirectives4.js +++ b/tests/baselines/reference/typeReferenceDirectives4.js @@ -25,5 +25,6 @@ var y = function () { return x; }; //// [app.d.ts] /// +/// declare let x: $; declare let y: () => $; diff --git a/tests/baselines/reference/typeReferenceDirectives7.js b/tests/baselines/reference/typeReferenceDirectives7.js index 44e5ee27e8d5a..57edafbcfef70 100644 --- a/tests/baselines/reference/typeReferenceDirectives7.js +++ b/tests/baselines/reference/typeReferenceDirectives7.js @@ -25,6 +25,7 @@ exports.y = y; //// [app.d.ts] +/// export declare let $: number; export declare let x: typeof $; export declare let y: () => number;