Add "A module cannot have multiple default exports." message for multiple "default" exports

This commit is contained in:
Martin Vseticka
2015-10-02 21:54:32 +02:00
parent 543cce5e43
commit 69ff6f5090
13 changed files with 154 additions and 7 deletions

View File

@@ -0,0 +1,16 @@
//// [defaultExportWithOverloads01.ts]
export default function f();
export default function f(x: string);
export default function f(...args: any[]) {
}
//// [defaultExportWithOverloads01.js]
function f() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = f;

View File

@@ -0,0 +1,13 @@
=== tests/cases/conformance/es6/modules/defaultExportWithOverloads01.ts ===
export default function f();
>f : Symbol(f, Decl(defaultExportWithOverloads01.ts, 0, 0), Decl(defaultExportWithOverloads01.ts, 1, 28), Decl(defaultExportWithOverloads01.ts, 2, 37))
export default function f(x: string);
>f : Symbol(f, Decl(defaultExportWithOverloads01.ts, 0, 0), Decl(defaultExportWithOverloads01.ts, 1, 28), Decl(defaultExportWithOverloads01.ts, 2, 37))
>x : Symbol(x, Decl(defaultExportWithOverloads01.ts, 2, 26))
export default function f(...args: any[]) {
>f : Symbol(f, Decl(defaultExportWithOverloads01.ts, 0, 0), Decl(defaultExportWithOverloads01.ts, 1, 28), Decl(defaultExportWithOverloads01.ts, 2, 37))
>args : Symbol(args, Decl(defaultExportWithOverloads01.ts, 3, 26))
}

View File

@@ -0,0 +1,13 @@
=== tests/cases/conformance/es6/modules/defaultExportWithOverloads01.ts ===
export default function f();
>f : { (): any; (x: string): any; }
export default function f(x: string);
>f : { (): any; (x: string): any; }
>x : string
export default function f(...args: any[]) {
>f : { (): any; (x: string): any; }
>args : any[]
}

View File

@@ -1,6 +1,6 @@
tests/cases/conformance/es6/modules/m1.ts(2,22): error TS2300: Duplicate identifier 'foo'.
tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2300: Duplicate identifier 'bar'.
tests/cases/conformance/es6/modules/m1.ts(11,1): error TS2300: Duplicate identifier 'default'.
tests/cases/conformance/es6/modules/m1.ts(2,22): error TS2528: A module cannot have multiple default exports.
tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2528: A module cannot have multiple default exports.
tests/cases/conformance/es6/modules/m1.ts(11,1): error TS2528: A module cannot have multiple default exports.
tests/cases/conformance/es6/modules/m2.ts(3,1): error TS2348: Value of type 'typeof foo' is not callable. Did you mean to include 'new'?
@@ -8,20 +8,20 @@ tests/cases/conformance/es6/modules/m2.ts(3,1): error TS2348: Value of type 'typ
export default class foo {
~~~
!!! error TS2300: Duplicate identifier 'foo'.
!!! error TS2528: A module cannot have multiple default exports.
}
export default function bar() {
~~~
!!! error TS2300: Duplicate identifier 'bar'.
!!! error TS2528: A module cannot have multiple default exports.
}
var x = 10;
export default x;
~~~~~~~~~~~~~~~~~
!!! error TS2300: Duplicate identifier 'default'.
!!! error TS2528: A module cannot have multiple default exports.
==== tests/cases/conformance/es6/modules/m2.ts (1 errors) ====
import Entity from "./m1"

View File

@@ -0,0 +1,15 @@
tests/cases/conformance/es6/modules/multipleDefaultExports03.ts(2,22): error TS2528: A module cannot have multiple default exports.
tests/cases/conformance/es6/modules/multipleDefaultExports03.ts(5,22): error TS2528: A module cannot have multiple default exports.
==== tests/cases/conformance/es6/modules/multipleDefaultExports03.ts (2 errors) ====
export default class C {
~
!!! error TS2528: A module cannot have multiple default exports.
}
export default class C {
~
!!! error TS2528: A module cannot have multiple default exports.
}

View File

@@ -0,0 +1,23 @@
//// [multipleDefaultExports03.ts]
export default class C {
}
export default class C {
}
//// [multipleDefaultExports03.js]
var C = (function () {
function C() {
}
return C;
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = C;
var C = (function () {
function C() {
}
return C;
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = C;

View File

@@ -0,0 +1,15 @@
tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(2,25): error TS2393: Duplicate function implementation.
tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(5,25): error TS2393: Duplicate function implementation.
==== tests/cases/conformance/es6/modules/multipleDefaultExports04.ts (2 errors) ====
export default function f() {
~
!!! error TS2393: Duplicate function implementation.
}
export default function f() {
~
!!! error TS2393: Duplicate function implementation.
}

View File

@@ -0,0 +1,17 @@
//// [multipleDefaultExports04.ts]
export default function f() {
}
export default function f() {
}
//// [multipleDefaultExports04.js]
function f() {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = f;
function f() {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = f;

View File

@@ -0,0 +1,7 @@
// @module: commonjs
// @target: ES5
export default function f();
export default function f(x: string);
export default function f(...args: any[]) {
}

View File

@@ -0,0 +1,8 @@
// @module: commonjs
// @target: ES5
export default class C {
}
export default class C {
}

View File

@@ -0,0 +1,8 @@
// @module: commonjs
// @target: ES5
export default function f() {
}
export default function f() {
}