From 11b270f6ca3f0f518d0e3b93a56f2c8b9dfacb86 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 12 Oct 2015 16:27:11 -0700 Subject: [PATCH] Add testcase - generating declaration file results in more errors in ts file --- src/harness/fourslash.ts | 10 ++++++++++ tests/cases/fourslash/fourslash.ts | 4 ++++ ...pilationDuplicateFunctionImplementation.ts | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 3a628bb62c1..ef118e30fb5 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -535,6 +535,16 @@ namespace FourSlash { } } + public verifyGetEmitOutputContentsForCurrentFile(expected: { fileName: string; content: string; }[]): void { + let emit = this.languageService.getEmitOutput(this.activeFile.fileName); + this.taoInvalidReason = "verifyGetEmitOutputContentsForCurrentFile impossible"; + assert.equal(emit.outputFiles.length, expected.length, "Number of emit output files"); + for (let i = 0; i < emit.outputFiles.length; i++) { + assert.equal(emit.outputFiles[i].name, expected[i].fileName, "FileName"); + assert.equal(emit.outputFiles[i].text, expected[i].content, "Content"); + } + } + public verifyMemberListContains(symbol: string, text?: string, documentation?: string, kind?: string) { this.scenarioActions.push(""); this.scenarioActions.push(``); diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 54e86786d14..98bdccc9ab7 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -314,6 +314,10 @@ module FourSlashInterface { FourSlash.currentTestState.verifyGetEmitOutputForCurrentFile(expected); } + public verifyGetEmitOutputContentsForCurrentFile(expected: { fileName: string; content: string; }[]): void { + FourSlash.currentTestState.verifyGetEmitOutputContentsForCurrentFile(expected); + } + public currentParameterHelpArgumentNameIs(name: string) { FourSlash.currentTestState.verifyCurrentParameterHelpName(name); } diff --git a/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts b/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts new file mode 100644 index 00000000000..f9cc1f9b635 --- /dev/null +++ b/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts @@ -0,0 +1,20 @@ +/// + +// @declaration: true +// @out: out.js +// @jsExtensions: js +// @Filename: b.js +// @emitThisFile: true +////function foo() { return 10; }/*1*/ + +// @Filename: a.ts +// @emitThisFile: true +////function foo() { return 30; }/*2*/ + +goTo.marker("2"); +verify.getSemanticDiagnostics("[]"); +verify.verifyGetEmitOutputContentsForCurrentFile([ + { fileName: "out.js", content: "function foo() { return 10; }\r\nfunction foo() { return 30; }\r\n" }, + { fileName: "out.d.ts", content: "" }]); +goTo.marker("2"); +verify.getSemanticDiagnostics('[\n {\n "message": "Duplicate function implementation.",\n "start": 9,\n "length": 3,\n "category": "error",\n "code": 2393\n }\n]'); \ No newline at end of file