diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 7e01e56f0693d..6f7ffc2c3a972 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2768,10 +2768,8 @@ namespace ts { if (options.composite) { const rootPaths = rootNames.map(toPath); for (const file of files) { - // Ignore declaration files - if (file.isDeclarationFile) continue; - // Ignore json file thats from project reference - if (isJsonSourceFile(file) && getResolvedProjectReferenceToRedirect(file.fileName)) continue; + // Ignore file that is not emitted + if (!sourceFileMayBeEmitted(file, options, isSourceFileFromExternalLibrary, getResolvedProjectReferenceToRedirect)) continue; if (rootPaths.indexOf(file.path) === -1) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.File_0_is_not_in_project_file_list_Projects_must_list_all_files_or_use_an_include_pattern, file.fileName)); } diff --git a/tests/baselines/reference/compositeWithNodeModulesSourceFile.js b/tests/baselines/reference/compositeWithNodeModulesSourceFile.js new file mode 100644 index 0000000000000..9a2caf39c61a3 --- /dev/null +++ b/tests/baselines/reference/compositeWithNodeModulesSourceFile.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/compositeWithNodeModulesSourceFile.ts] //// + +//// [index.ts] +export class c { } + +//// [test.ts] +import myModule = require("myModule"); +new myModule.c(); + + + +//// [test.js] +"use strict"; +exports.__esModule = true; +var myModule = require("myModule"); +new myModule.c(); + + +//// [test.d.ts] +export {}; diff --git a/tests/baselines/reference/compositeWithNodeModulesSourceFile.symbols b/tests/baselines/reference/compositeWithNodeModulesSourceFile.symbols new file mode 100644 index 0000000000000..9daaf1ad5ffd7 --- /dev/null +++ b/tests/baselines/reference/compositeWithNodeModulesSourceFile.symbols @@ -0,0 +1,14 @@ +=== /foo/test.ts === +import myModule = require("myModule"); +>myModule : Symbol(myModule, Decl(test.ts, 0, 0)) + +new myModule.c(); +>myModule.c : Symbol(myModule.c, Decl(index.ts, 0, 0)) +>myModule : Symbol(myModule, Decl(test.ts, 0, 0)) +>c : Symbol(myModule.c, Decl(index.ts, 0, 0)) + + +=== /foo/node_modules/myModule/index.ts === +export class c { } +>c : Symbol(c, Decl(index.ts, 0, 0)) + diff --git a/tests/baselines/reference/compositeWithNodeModulesSourceFile.types b/tests/baselines/reference/compositeWithNodeModulesSourceFile.types new file mode 100644 index 0000000000000..d34838ae88a09 --- /dev/null +++ b/tests/baselines/reference/compositeWithNodeModulesSourceFile.types @@ -0,0 +1,15 @@ +=== /foo/test.ts === +import myModule = require("myModule"); +>myModule : typeof myModule + +new myModule.c(); +>new myModule.c() : myModule.c +>myModule.c : typeof myModule.c +>myModule : typeof myModule +>c : typeof myModule.c + + +=== /foo/node_modules/myModule/index.ts === +export class c { } +>c : c + diff --git a/tests/cases/compiler/compositeWithNodeModulesSourceFile.ts b/tests/cases/compiler/compositeWithNodeModulesSourceFile.ts new file mode 100644 index 0000000000000..b2d0020156751 --- /dev/null +++ b/tests/cases/compiler/compositeWithNodeModulesSourceFile.ts @@ -0,0 +1,13 @@ +// @filename: /foo/tsconfig.json +{ + "compilerOptions": { "composite": true }, + "exclude": [ "node_modules" ] +} + +// @filename: /foo/node_modules/myModule/index.ts +export class c { } + +// @filename: /foo/test.ts +import myModule = require("myModule"); +new myModule.c(); +