diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts
index 9534b22f47a..76c3175dcd5 100644
--- a/src/compiler/declarationEmitter.ts
+++ b/src/compiler/declarationEmitter.ts
@@ -69,22 +69,16 @@ namespace ts {
if (!compilerOptions.noResolve) {
let addedGlobalFileReference = false;
forEach(root.referencedFiles, fileReference => {
- if (isJavaScript(fileReference.fileName)) {
- reportedDeclarationError = true;
- diagnostics.push(createFileDiagnostic(root, fileReference.pos, fileReference.end - fileReference.pos, Diagnostics.js_file_cannot_be_referenced_in_ts_file_when_emitting_declarations));
- }
- else {
- let referencedFile = tryResolveScriptReference(host, root, fileReference);
+ let referencedFile = tryResolveScriptReference(host, root, fileReference);
- // All the references that are not going to be part of same file
- if (referencedFile && ((referencedFile.flags & NodeFlags.DeclarationFile) || // This is a declare file reference
- shouldEmitToOwnFile(referencedFile, compilerOptions) || // This is referenced file is emitting its own js file
- !addedGlobalFileReference)) { // Or the global out file corresponding to this reference was not added
+ // All the references that are not going to be part of same file
+ if (referencedFile && ((referencedFile.flags & NodeFlags.DeclarationFile) || // This is a declare file reference
+ shouldEmitToOwnFile(referencedFile, compilerOptions) || // This is referenced file is emitting its own js file
+ !addedGlobalFileReference)) { // Or the global out file corresponding to this reference was not added
- writeReferencePath(referencedFile);
- if (!isExternalModuleOrDeclarationFile(referencedFile)) {
- addedGlobalFileReference = true;
- }
+ writeReferencePath(referencedFile);
+ if (!isExternalModuleOrDeclarationFile(referencedFile)) {
+ addedGlobalFileReference = true;
}
}
});
@@ -111,24 +105,18 @@ namespace ts {
// Emit references corresponding to this file
let emittedReferencedFiles: SourceFile[] = [];
forEach(host.getSourceFiles(), sourceFile => {
- if (!isExternalModuleOrDeclarationFile(sourceFile) && !isJavaScript(sourceFile.fileName)) {
+ if (!isExternalModuleOrDeclarationFile(sourceFile)) {
// Check what references need to be added
if (!compilerOptions.noResolve) {
forEach(sourceFile.referencedFiles, fileReference => {
- if (isJavaScript(fileReference.fileName)) {
- reportedDeclarationError = true;
- diagnostics.push(createFileDiagnostic(sourceFile, fileReference.pos, fileReference.end - fileReference.pos, Diagnostics.js_file_cannot_be_referenced_in_ts_file_when_emitting_declarations));
- }
- else {
- let referencedFile = tryResolveScriptReference(host, sourceFile, fileReference);
+ let referencedFile = tryResolveScriptReference(host, sourceFile, fileReference);
- // If the reference file is a declaration file or an external module, emit that reference
- if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) &&
- !contains(emittedReferencedFiles, referencedFile))) { // If the file reference was not already emitted
+ // If the reference file is a declaration file or an external module, emit that reference
+ if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) &&
+ !contains(emittedReferencedFiles, referencedFile))) { // If the file reference was not already emitted
- writeReferencePath(referencedFile);
- emittedReferencedFiles.push(referencedFile);
- }
+ writeReferencePath(referencedFile);
+ emittedReferencedFiles.push(referencedFile);
}
});
}
diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json
index 00e13ba634c..d1beacfeaa9 100644
--- a/src/compiler/diagnosticMessages.json
+++ b/src/compiler/diagnosticMessages.json
@@ -2465,10 +2465,6 @@
"category": "Error",
"code": 8017
},
- ".js file cannot be referenced in .ts file when emitting declarations.": {
- "category": "Error",
- "code": 8018
- },
"Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses.": {
"category": "Error",
diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts
index ea2fd36889f..ff60a5927bd 100644
--- a/src/compiler/emitter.ts
+++ b/src/compiler/emitter.ts
@@ -342,7 +342,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
emitFile(getEmitFileNames(targetSourceFile, host), targetSourceFile);
}
else if (!isDeclarationFile(targetSourceFile) &&
- !isJavaScript(targetSourceFile.fileName) &&
(compilerOptions.outFile || compilerOptions.out)) {
emitFile(getBundledEmitFileNames(compilerOptions));
}
@@ -462,7 +461,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
}
else {
forEach(host.getSourceFiles(), sourceFile => {
- if (!isJavaScript(sourceFile.fileName) && !isExternalModuleOrDeclarationFile(sourceFile)) {
+ if (!isExternalModuleOrDeclarationFile(sourceFile)) {
emitSourceFile(sourceFile);
}
});
diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts
index f8a1af6f5cf..f4dd2c02c8d 100644
--- a/src/compiler/utilities.ts
+++ b/src/compiler/utilities.ts
@@ -1769,7 +1769,7 @@ namespace ts {
}
export function getEmitFileNames(sourceFile: SourceFile, host: EmitHost) {
- if (!isDeclarationFile(sourceFile) && !isJavaScript(sourceFile.fileName)) {
+ if (!isDeclarationFile(sourceFile)) {
let options = host.getCompilerOptions();
let jsFilePath: string;
if (shouldEmitToOwnFile(sourceFile, options)) {
@@ -1835,12 +1835,12 @@ namespace ts {
}
export function shouldEmitToOwnFile(sourceFile: SourceFile, compilerOptions: CompilerOptions): boolean {
- if (!isDeclarationFile(sourceFile) && !isJavaScript(sourceFile.fileName)) {
+ if (!isDeclarationFile(sourceFile)) {
if ((isExternalModule(sourceFile) || !(compilerOptions.outFile || compilerOptions.out))) {
// 1. in-browser single file compilation scenario
// 2. non supported extension file
return compilerOptions.isolatedModules ||
- forEach(supportedTypeScriptExtensions, extension => fileExtensionIs(sourceFile.fileName, extension));
+ forEach(getSupportedExtensions(compilerOptions), extension => fileExtensionIs(sourceFile.fileName, extension));
}
return false;
}
diff --git a/tests/baselines/reference/jsFileCompilationAmbientVarDeclarationSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationAmbientVarDeclarationSyntax.errors.txt
index a210385d996..b0732afea72 100644
--- a/tests/baselines/reference/jsFileCompilationAmbientVarDeclarationSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationAmbientVarDeclarationSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,1): error TS8009: 'declare' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
declare var v;
~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationDecoratorSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationDecoratorSyntax.errors.txt
index 6017ddc7a11..b7fec2eefc6 100644
--- a/tests/baselines/reference/jsFileCompilationDecoratorSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationDecoratorSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,1): error TS8017: 'decorators' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
@internal class C { }
~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationEmitBlockedCorrectly.errors.txt b/tests/baselines/reference/jsFileCompilationEmitBlockedCorrectly.errors.txt
index eb9e11e574b..5861e73f49b 100644
--- a/tests/baselines/reference/jsFileCompilationEmitBlockedCorrectly.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationEmitBlockedCorrectly.errors.txt
@@ -1,7 +1,9 @@
error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
+error TS5056: Cannot write file 'tests/cases/compiler/a.js' since one or more input files would emit into it.
!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
+!!! error TS5056: Cannot write file 'tests/cases/compiler/a.js' since one or more input files would emit into it.
==== tests/cases/compiler/a.ts (0 errors) ====
class c {
}
diff --git a/tests/baselines/reference/jsFileCompilationEmitDeclarations.js b/tests/baselines/reference/jsFileCompilationEmitDeclarations.js
index 4c9f6802fd9..c6711e4e85f 100644
--- a/tests/baselines/reference/jsFileCompilationEmitDeclarations.js
+++ b/tests/baselines/reference/jsFileCompilationEmitDeclarations.js
@@ -15,8 +15,11 @@ var c = (function () {
}
return c;
})();
+function foo() {
+}
//// [out.d.ts]
declare class c {
}
+declare function foo(): void;
diff --git a/tests/baselines/reference/jsFileCompilationEmitTrippleSlashReference.js b/tests/baselines/reference/jsFileCompilationEmitTrippleSlashReference.js
index 33077f3038f..04f36213b1b 100644
--- a/tests/baselines/reference/jsFileCompilationEmitTrippleSlashReference.js
+++ b/tests/baselines/reference/jsFileCompilationEmitTrippleSlashReference.js
@@ -19,8 +19,15 @@ var c = (function () {
}
return c;
})();
+function bar() {
+}
+///
+function foo() {
+}
//// [out.d.ts]
declare class c {
}
+declare function bar(): void;
+declare function foo(): void;
diff --git a/tests/baselines/reference/jsFileCompilationEnumSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationEnumSyntax.errors.txt
index 6b9d97e55bb..e9fd9cc31b7 100644
--- a/tests/baselines/reference/jsFileCompilationEnumSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationEnumSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,6): error TS8015: 'enum declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
enum E { }
~
diff --git a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.errors.txt b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.errors.txt
index 1d6ddb3ed30..9be6b3f1ccd 100644
--- a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.errors.txt
@@ -1,14 +1,13 @@
-tests/cases/compiler/b.ts(1,1): error TS8018: .js file cannot be referenced in .ts file when emitting declarations.
+error TS5055: Cannot write file 'tests/cases/compiler/c.js' which is one of the input files.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/c.js' which is one of the input files.
==== tests/cases/compiler/a.ts (0 errors) ====
class c {
}
-==== tests/cases/compiler/b.ts (1 errors) ====
+==== tests/cases/compiler/b.ts (0 errors) ====
///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS8018: .js file cannot be referenced in .ts file when emitting declarations.
// error on above reference path when emitting declarations
function foo() {
}
diff --git a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.js b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.js
index 6bd76de881b..07d6fb812c0 100644
--- a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.js
+++ b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithNoOut.js
@@ -30,3 +30,8 @@ function foo() {
//// [a.d.ts]
declare class c {
}
+//// [c.d.ts]
+declare function bar(): void;
+//// [b.d.ts]
+///
+declare function foo(): void;
diff --git a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.errors.txt b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.errors.txt
deleted file mode 100644
index a658130e10a..00000000000
--- a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.errors.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-tests/cases/compiler/b.ts(1,1): error TS8018: .js file cannot be referenced in .ts file when emitting declarations.
-
-
-==== tests/cases/compiler/a.ts (0 errors) ====
- class c {
- }
-
-==== tests/cases/compiler/b.ts (1 errors) ====
- ///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS8018: .js file cannot be referenced in .ts file when emitting declarations.
- // error on above reference when emitting declarations
- function foo() {
- }
-
-==== tests/cases/compiler/c.js (0 errors) ====
- function bar() {
- }
\ No newline at end of file
diff --git a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.js b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.js
index 99dd961db4c..0d1939d7208 100644
--- a/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.js
+++ b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.js
@@ -20,7 +20,16 @@ var c = (function () {
}
return c;
})();
+function bar() {
+}
///
// error on above reference when emitting declarations
function foo() {
}
+
+
+//// [out.d.ts]
+declare class c {
+}
+declare function bar(): void;
+declare function foo(): void;
diff --git a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.symbols b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.symbols
similarity index 77%
rename from tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.symbols
rename to tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.symbols
index 06b80b144a4..544fe53f425 100644
--- a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.symbols
+++ b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.symbols
@@ -5,7 +5,7 @@ class c {
=== tests/cases/compiler/b.ts ===
///
-// no error on above reference path since not emitting declarations
+// error on above reference when emitting declarations
function foo() {
>foo : Symbol(foo, Decl(b.ts, 0, 0))
}
diff --git a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.types b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.types
similarity index 72%
rename from tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.types
rename to tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.types
index ea9b48061c3..8aafb9f61d0 100644
--- a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.types
+++ b/tests/baselines/reference/jsFileCompilationErrorOnDeclarationsWithJsFileReferenceWithOut.types
@@ -5,7 +5,7 @@ class c {
=== tests/cases/compiler/b.ts ===
///
-// no error on above reference path since not emitting declarations
+// error on above reference when emitting declarations
function foo() {
>foo : () => void
}
diff --git a/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt
index a349e2bca13..27371222dce 100644
--- a/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,1): error TS8003: 'export=' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
export = b;
~~~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationHeritageClauseSyntaxOfClass.errors.txt b/tests/baselines/reference/jsFileCompilationHeritageClauseSyntaxOfClass.errors.txt
index df014047b35..c7d080404a2 100644
--- a/tests/baselines/reference/jsFileCompilationHeritageClauseSyntaxOfClass.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationHeritageClauseSyntaxOfClass.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,9): error TS8005: 'implements clauses' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
class C implements D { }
~~~~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationImportEqualsSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationImportEqualsSyntax.errors.txt
index e53bf2ac860..36ab7aab188 100644
--- a/tests/baselines/reference/jsFileCompilationImportEqualsSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationImportEqualsSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,1): error TS8002: 'import ... =' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
import a = b;
~~~~~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationInterfaceSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationInterfaceSyntax.errors.txt
index c46c3c05b3f..3089aeecb49 100644
--- a/tests/baselines/reference/jsFileCompilationInterfaceSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationInterfaceSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,11): error TS8006: 'interface declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
interface I { }
~
diff --git a/tests/baselines/reference/jsFileCompilationModuleSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationModuleSyntax.errors.txt
index 8748064cc96..d85819b8588 100644
--- a/tests/baselines/reference/jsFileCompilationModuleSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationModuleSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,8): error TS8007: 'module declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
module M { }
~
diff --git a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.errors.txt b/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.errors.txt
new file mode 100644
index 00000000000..06bfd61c7ab
--- /dev/null
+++ b/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithNoOut.errors.txt
@@ -0,0 +1,17 @@
+error TS5055: Cannot write file 'tests/cases/compiler/c.js' which is one of the input files.
+
+
+!!! error TS5055: Cannot write file 'tests/cases/compiler/c.js' which is one of the input files.
+==== tests/cases/compiler/a.ts (0 errors) ====
+ class c {
+ }
+
+==== tests/cases/compiler/b.ts (0 errors) ====
+ ///
+ // no error on above reference path since not emitting declarations
+ function foo() {
+ }
+
+==== tests/cases/compiler/c.js (0 errors) ====
+ function bar() {
+ }
\ No newline at end of file
diff --git a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithOut.js b/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithOut.js
index 55412253441..fae4936b6c9 100644
--- a/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithOut.js
+++ b/tests/baselines/reference/jsFileCompilationNoErrorWithoutDeclarationsWithJsFileReferenceWithOut.js
@@ -20,6 +20,8 @@ var c = (function () {
}
return c;
})();
+function bar() {
+}
///
//no error on above reference since not emitting declarations
function foo() {
diff --git a/tests/baselines/reference/jsFileCompilationOptionalParameter.errors.txt b/tests/baselines/reference/jsFileCompilationOptionalParameter.errors.txt
index 68b131d39f9..6d9e3c5919d 100644
--- a/tests/baselines/reference/jsFileCompilationOptionalParameter.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationOptionalParameter.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,13): error TS8009: '?' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
function F(p?) { }
~
diff --git a/tests/baselines/reference/jsFileCompilationPropertySyntaxOfClass.errors.txt b/tests/baselines/reference/jsFileCompilationPropertySyntaxOfClass.errors.txt
index 0ecf6f3c666..5a35e68bcec 100644
--- a/tests/baselines/reference/jsFileCompilationPropertySyntaxOfClass.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationPropertySyntaxOfClass.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,11): error TS8014: 'property declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
class C { v }
~
diff --git a/tests/baselines/reference/jsFileCompilationPublicMethodSyntaxOfClass.errors.txt b/tests/baselines/reference/jsFileCompilationPublicMethodSyntaxOfClass.errors.txt
index 907775c7be6..a6d47e5fbe3 100644
--- a/tests/baselines/reference/jsFileCompilationPublicMethodSyntaxOfClass.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationPublicMethodSyntaxOfClass.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(2,5): error TS8009: 'public' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
class C {
public foo() {
diff --git a/tests/baselines/reference/jsFileCompilationPublicParameterModifier.errors.txt b/tests/baselines/reference/jsFileCompilationPublicParameterModifier.errors.txt
index e5072278f4c..fa3e0e34a77 100644
--- a/tests/baselines/reference/jsFileCompilationPublicParameterModifier.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationPublicParameterModifier.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,23): error TS8012: 'parameter modifiers' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
class C { constructor(public x) { }}
~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationRestParameter.js b/tests/baselines/reference/jsFileCompilationRestParameter.js
index d28299c543a..bcba97af024 100644
--- a/tests/baselines/reference/jsFileCompilationRestParameter.js
+++ b/tests/baselines/reference/jsFileCompilationRestParameter.js
@@ -2,3 +2,4 @@
function foo(...a) { }
//// [b.js]
+function foo(...a) { }
diff --git a/tests/baselines/reference/jsFileCompilationReturnTypeSyntaxOfFunction.errors.txt b/tests/baselines/reference/jsFileCompilationReturnTypeSyntaxOfFunction.errors.txt
index 50746dcfc82..8b83a9d1f90 100644
--- a/tests/baselines/reference/jsFileCompilationReturnTypeSyntaxOfFunction.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationReturnTypeSyntaxOfFunction.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,15): error TS8010: 'types' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
function F(): number { }
~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationSyntaxError.errors.txt b/tests/baselines/reference/jsFileCompilationSyntaxError.errors.txt
index 1ca6e251788..b06375e8a6a 100644
--- a/tests/baselines/reference/jsFileCompilationSyntaxError.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationSyntaxError.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(3,6): error TS1223: 'type' tag already specified.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
/**
* @type {number}
diff --git a/tests/baselines/reference/jsFileCompilationTypeAliasSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationTypeAliasSyntax.errors.txt
index 6af5751ea85..a0724e452b7 100644
--- a/tests/baselines/reference/jsFileCompilationTypeAliasSyntax.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeAliasSyntax.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,1): error TS8008: 'type aliases' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
type a = b;
~~~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationTypeArgumentSyntaxOfCall.errors.txt b/tests/baselines/reference/jsFileCompilationTypeArgumentSyntaxOfCall.errors.txt
index cade211aa63..acefc2ff569 100644
--- a/tests/baselines/reference/jsFileCompilationTypeArgumentSyntaxOfCall.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeArgumentSyntaxOfCall.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,5): error TS8011: 'type arguments' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
Foo();
~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationTypeAssertions.errors.txt b/tests/baselines/reference/jsFileCompilationTypeAssertions.errors.txt
index 6d4ef23dcc6..669e83688cc 100644
--- a/tests/baselines/reference/jsFileCompilationTypeAssertions.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeAssertions.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,27): error TS17002: Expected corresponding JSX closing tag for 'string'.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
var v = undefined;
diff --git a/tests/baselines/reference/jsFileCompilationTypeOfParameter.errors.txt b/tests/baselines/reference/jsFileCompilationTypeOfParameter.errors.txt
index ae3fd23c6ef..69fa6251942 100644
--- a/tests/baselines/reference/jsFileCompilationTypeOfParameter.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeOfParameter.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,15): error TS8010: 'types' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
function F(a: number) { }
~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfClass.errors.txt b/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfClass.errors.txt
index 708ff378137..f279896c4ed 100644
--- a/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfClass.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfClass.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,9): error TS8004: 'type parameter declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
class C { }
~
diff --git a/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfFunction.errors.txt b/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfFunction.errors.txt
index 391e8f476da..9b056bcae50 100644
--- a/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfFunction.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeParameterSyntaxOfFunction.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,12): error TS8004: 'type parameter declarations' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
function F() { }
~
diff --git a/tests/baselines/reference/jsFileCompilationTypeSyntaxOfVar.errors.txt b/tests/baselines/reference/jsFileCompilationTypeSyntaxOfVar.errors.txt
index a4486a5d49d..080cb580bf2 100644
--- a/tests/baselines/reference/jsFileCompilationTypeSyntaxOfVar.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationTypeSyntaxOfVar.errors.txt
@@ -1,6 +1,8 @@
+error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
tests/cases/compiler/a.js(1,8): error TS8010: 'types' can only be used in a .ts file.
+!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
==== tests/cases/compiler/a.js (1 errors) ====
var v: () => number;
~~~~~~~~~~~~
diff --git a/tests/baselines/reference/jsFileCompilationWithJsEmitPathSameAsInput.errors.txt b/tests/baselines/reference/jsFileCompilationWithJsEmitPathSameAsInput.errors.txt
index 09e07a67bf3..134c95dee15 100644
--- a/tests/baselines/reference/jsFileCompilationWithJsEmitPathSameAsInput.errors.txt
+++ b/tests/baselines/reference/jsFileCompilationWithJsEmitPathSameAsInput.errors.txt
@@ -1,7 +1,9 @@
error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
+error TS5056: Cannot write file 'tests/cases/compiler/a.js' since one or more input files would emit into it.
!!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' which is one of the input files.
+!!! error TS5056: Cannot write file 'tests/cases/compiler/a.js' since one or more input files would emit into it.
==== tests/cases/compiler/a.ts (0 errors) ====
class c {
}
diff --git a/tests/baselines/reference/jsFileCompilationWithOut.js b/tests/baselines/reference/jsFileCompilationWithOut.js
index 7bab7b973ab..32d0261061f 100644
--- a/tests/baselines/reference/jsFileCompilationWithOut.js
+++ b/tests/baselines/reference/jsFileCompilationWithOut.js
@@ -15,3 +15,5 @@ var c = (function () {
}
return c;
})();
+function foo() {
+}
diff --git a/tests/baselines/reference/jsFileCompilationWithoutOut.errors.txt b/tests/baselines/reference/jsFileCompilationWithoutOut.errors.txt
new file mode 100644
index 00000000000..3531296e019
--- /dev/null
+++ b/tests/baselines/reference/jsFileCompilationWithoutOut.errors.txt
@@ -0,0 +1,12 @@
+error TS5055: Cannot write file 'tests/cases/compiler/b.js' which is one of the input files.
+
+
+!!! error TS5055: Cannot write file 'tests/cases/compiler/b.js' which is one of the input files.
+==== tests/cases/compiler/a.ts (0 errors) ====
+ class c {
+ }
+
+==== tests/cases/compiler/b.js (0 errors) ====
+ function foo() {
+ }
+
\ No newline at end of file
diff --git a/tests/baselines/reference/jsFileCompilationWithoutOut.symbols b/tests/baselines/reference/jsFileCompilationWithoutOut.symbols
deleted file mode 100644
index 5260b8d6cf3..00000000000
--- a/tests/baselines/reference/jsFileCompilationWithoutOut.symbols
+++ /dev/null
@@ -1,10 +0,0 @@
-=== tests/cases/compiler/a.ts ===
-class c {
->c : Symbol(c, Decl(a.ts, 0, 0))
-}
-
-=== tests/cases/compiler/b.js ===
-function foo() {
->foo : Symbol(foo, Decl(b.js, 0, 0))
-}
-
diff --git a/tests/baselines/reference/jsFileCompilationWithoutOut.types b/tests/baselines/reference/jsFileCompilationWithoutOut.types
deleted file mode 100644
index dce83eeb8eb..00000000000
--- a/tests/baselines/reference/jsFileCompilationWithoutOut.types
+++ /dev/null
@@ -1,10 +0,0 @@
-=== tests/cases/compiler/a.ts ===
-class c {
->c : c
-}
-
-=== tests/cases/compiler/b.js ===
-function foo() {
->foo : () => void
-}
-
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.d.ts b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.d.ts
index 4c0b8989316..bbae04a30bf 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.d.ts
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.d.ts
@@ -1 +1,2 @@
declare var test: number;
+declare var test2: number;
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.js b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.js
index e757934f20c..f2115703462 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.js
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/amd/test.js
@@ -1 +1,2 @@
var test = 10;
+var test2 = 10; // Should get compiled
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.d.ts b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.d.ts
index 4c0b8989316..bbae04a30bf 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.d.ts
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.d.ts
@@ -1 +1,2 @@
declare var test: number;
+declare var test2: number;
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.js b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.js
index e757934f20c..f2115703462 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.js
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesNotSpecifiedWithJsExtensions/node/test.js
@@ -1 +1,2 @@
var test = 10;
+var test2 = 10; // Should get compiled
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.d.ts b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.d.ts
index 4c0b8989316..bbae04a30bf 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.d.ts
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.d.ts
@@ -1 +1,2 @@
declare var test: number;
+declare var test2: number;
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.js b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.js
index e757934f20c..f2115703462 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.js
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/amd/test.js
@@ -1 +1,2 @@
var test = 10;
+var test2 = 10; // Should get compiled
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.d.ts b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.d.ts
index 4c0b8989316..bbae04a30bf 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.d.ts
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.d.ts
@@ -1 +1,2 @@
declare var test: number;
+declare var test2: number;
diff --git a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.js b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.js
index e757934f20c..f2115703462 100644
--- a/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.js
+++ b/tests/baselines/reference/project/jsFileCompilationDifferentNamesSpecifiedWithJsExtensions/node/test.js
@@ -1 +1,2 @@
var test = 10;
+var test2 = 10; // Should get compiled