diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 034bd27b1472a..108a4fa088985 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -635,10 +635,6 @@ "category": "Error", "code": 1203 }, - "Cannot compile modules into 'es2015' when targeting 'ES5' or lower.": { - "category": "Error", - "code": 1204 - }, "Decorators are not valid here.": { "category": "Error", "code": 1206 diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f225b4cacf81a..55b8656f5e8bd 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -5559,7 +5559,11 @@ const _super = (function (geti, seti) { } function emitClassLikeDeclarationBelowES6(node: ClassLikeDeclaration) { + const isES6ExportedClass = isES6ExportedDeclaration(node); if (node.kind === SyntaxKind.ClassDeclaration) { + if (isES6ExportedClass && !(node.flags & NodeFlags.Default)) { + write("export "); + } // source file level classes in system modules are hoisted so 'var's for them are already defined if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); @@ -5629,9 +5633,15 @@ const _super = (function (geti, seti) { } emitEnd(node); - if (node.kind === SyntaxKind.ClassDeclaration) { + if (node.kind === SyntaxKind.ClassDeclaration && !isES6ExportedClass) { emitExportMemberAssignment(node); } + else if (isES6ExportedClass && (node.flags & NodeFlags.Default)) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } } function emitClassMemberPrefix(node: ClassLikeDeclaration, member: Node) { diff --git a/src/compiler/program.ts b/src/compiler/program.ts index bab554927e726..fff92d0205985 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2099,11 +2099,6 @@ namespace ts { programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); } - // Cannot specify module gen target of es6 when below es6 - if (options.module === ModuleKind.ES6 && languageVersion < ScriptTarget.ES6) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_compile_modules_into_es2015_when_targeting_ES5_or_lower)); - } - // Cannot specify module gen that isn't amd or system with --out if (outFile) { if (options.module && !(options.module === ModuleKind.AMD || options.module === ModuleKind.System)) { diff --git a/tests/baselines/reference/es5andes6module.errors.txt b/tests/baselines/reference/es5andes6module.errors.txt deleted file mode 100644 index 6908bfc8ae6c2..0000000000000 --- a/tests/baselines/reference/es5andes6module.errors.txt +++ /dev/null @@ -1,19 +0,0 @@ -error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. - - -!!! error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. -==== tests/cases/compiler/es5andes6module.ts (0 errors) ==== - - export default class A - { - constructor () - { - - } - - public B() - { - return 42; - } - } - \ No newline at end of file diff --git a/tests/baselines/reference/es5andes6module.js b/tests/baselines/reference/es5andes6module.js index a6ca59befbf32..ae8c0ad87e223 100644 --- a/tests/baselines/reference/es5andes6module.js +++ b/tests/baselines/reference/es5andes6module.js @@ -23,4 +23,4 @@ var A = (function () { }; return A; }()); -exports.default = A; +export default A; diff --git a/tests/baselines/reference/es5andes6module.symbols b/tests/baselines/reference/es5andes6module.symbols new file mode 100644 index 0000000000000..3aef923de0a82 --- /dev/null +++ b/tests/baselines/reference/es5andes6module.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es5andes6module.ts === + +export default class A +>A : Symbol(A, Decl(es5andes6module.ts, 0, 0)) +{ + constructor () + { + + } + + public B() +>B : Symbol(A.B, Decl(es5andes6module.ts, 6, 5)) + { + return 42; + } +} + diff --git a/tests/baselines/reference/es5andes6module.types b/tests/baselines/reference/es5andes6module.types new file mode 100644 index 0000000000000..14423d87cea09 --- /dev/null +++ b/tests/baselines/reference/es5andes6module.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/es5andes6module.ts === + +export default class A +>A : A +{ + constructor () + { + + } + + public B() +>B : () => number + { + return 42; +>42 : number + } +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target.js b/tests/baselines/reference/es6modulekindWithES5Target.js new file mode 100644 index 0000000000000..cdd1bb018d455 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.js @@ -0,0 +1,56 @@ +//// [es6modulekindWithES5Target.ts] + +export class C { + static s = 0; + p = 1; + method() { } +} +export { C as C2 }; + +declare function foo(...args: any[]): any; +@foo +export class D { + static s = 0; + p = 1; + method() { } +} +export { D as D2 }; + +class E { } +export {E}; + + +//// [es6modulekindWithES5Target.js] +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +export var C = (function () { + function C() { + this.p = 1; + } + C.prototype.method = function () { }; + C.s = 0; + return C; +}()); +export { C as C2 }; +export var D = (function () { + function D() { + this.p = 1; + } + D.prototype.method = function () { }; + D.s = 0; + D = __decorate([ + foo + ], D); + return D; +}()); +export { D as D2 }; +var E = (function () { + function E() { + } + return E; +}()); +export { E }; diff --git a/tests/baselines/reference/es6modulekindWithES5Target.symbols b/tests/baselines/reference/es6modulekindWithES5Target.symbols new file mode 100644 index 0000000000000..2d2a3f6732cce --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.symbols @@ -0,0 +1,47 @@ +=== tests/cases/compiler/es6modulekindWithES5Target.ts === + +export class C { +>C : Symbol(C, Decl(es6modulekindWithES5Target.ts, 0, 0)) + + static s = 0; +>s : Symbol(C.s, Decl(es6modulekindWithES5Target.ts, 1, 16)) + + p = 1; +>p : Symbol(C.p, Decl(es6modulekindWithES5Target.ts, 2, 17)) + + method() { } +>method : Symbol(C.method, Decl(es6modulekindWithES5Target.ts, 3, 10)) +} +export { C as C2 }; +>C : Symbol(C2, Decl(es6modulekindWithES5Target.ts, 6, 8)) +>C2 : Symbol(C2, Decl(es6modulekindWithES5Target.ts, 6, 8)) + +declare function foo(...args: any[]): any; +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 6, 19)) +>args : Symbol(args, Decl(es6modulekindWithES5Target.ts, 8, 21)) + +@foo +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 6, 19)) + +export class D { +>D : Symbol(D, Decl(es6modulekindWithES5Target.ts, 8, 42)) + + static s = 0; +>s : Symbol(D.s, Decl(es6modulekindWithES5Target.ts, 10, 16)) + + p = 1; +>p : Symbol(D.p, Decl(es6modulekindWithES5Target.ts, 11, 17)) + + method() { } +>method : Symbol(D.method, Decl(es6modulekindWithES5Target.ts, 12, 10)) +} +export { D as D2 }; +>D : Symbol(D2, Decl(es6modulekindWithES5Target.ts, 15, 8)) +>D2 : Symbol(D2, Decl(es6modulekindWithES5Target.ts, 15, 8)) + +class E { } +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 15, 19)) + +export {E}; +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 18, 8)) + diff --git a/tests/baselines/reference/es6modulekindWithES5Target.types b/tests/baselines/reference/es6modulekindWithES5Target.types new file mode 100644 index 0000000000000..f7232f2049481 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.types @@ -0,0 +1,51 @@ +=== tests/cases/compiler/es6modulekindWithES5Target.ts === + +export class C { +>C : C + + static s = 0; +>s : number +>0 : number + + p = 1; +>p : number +>1 : number + + method() { } +>method : () => void +} +export { C as C2 }; +>C : typeof C +>C2 : typeof C + +declare function foo(...args: any[]): any; +>foo : (...args: any[]) => any +>args : any[] + +@foo +>foo : (...args: any[]) => any + +export class D { +>D : D + + static s = 0; +>s : number +>0 : number + + p = 1; +>p : number +>1 : number + + method() { } +>method : () => void +} +export { D as D2 }; +>D : typeof D +>D2 : typeof D + +class E { } +>E : E + +export {E}; +>E : typeof E + diff --git a/tests/baselines/reference/es6modulekindWithES5Target10.errors.txt b/tests/baselines/reference/es6modulekindWithES5Target10.errors.txt new file mode 100644 index 0000000000000..efa4cd87e43a9 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target10.errors.txt @@ -0,0 +1,19 @@ +tests/cases/compiler/es6modulekindWithES5Target10.ts(2,1): error TS1202: Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead. +tests/cases/compiler/es6modulekindWithES5Target10.ts(2,20): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target10.ts(7,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. + + +==== tests/cases/compiler/es6modulekindWithES5Target10.ts (3 errors) ==== + + import i = require("mod"); // Error; + ~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1202: Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead. + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + + namespace N { + } + export = N; // Error + ~~~~~~~~~~~ +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 modules. Consider using 'export default' or another module format instead. \ No newline at end of file diff --git a/tests/baselines/reference/es6modulekindWithES5Target10.js b/tests/baselines/reference/es6modulekindWithES5Target10.js new file mode 100644 index 0000000000000..b8a66241780ef --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target10.js @@ -0,0 +1,10 @@ +//// [es6modulekindWithES5Target10.ts] + +import i = require("mod"); // Error; + + +namespace N { +} +export = N; // Error + +//// [es6modulekindWithES5Target10.js] diff --git a/tests/baselines/reference/es6modulekindWithES5Target11.js b/tests/baselines/reference/es6modulekindWithES5Target11.js new file mode 100644 index 0000000000000..67196ba20547d --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target11.js @@ -0,0 +1,31 @@ +//// [es6modulekindWithES5Target11.ts] + +declare function foo(...args: any[]): any; +@foo +export default class C { + static x() { return C.y; } + static y = 1 + p = 1; + method() { } +} + +//// [es6modulekindWithES5Target11.js] +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var C = (function () { + function C() { + this.p = 1; + } + C.x = function () { return C.y; }; + C.prototype.method = function () { }; + C.y = 1; + C = __decorate([ + foo + ], C); + return C; +}()); +export default C; diff --git a/tests/baselines/reference/es6modulekindWithES5Target11.symbols b/tests/baselines/reference/es6modulekindWithES5Target11.symbols new file mode 100644 index 0000000000000..144d306c5fb9e --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target11.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/es6modulekindWithES5Target11.ts === + +declare function foo(...args: any[]): any; +>foo : Symbol(foo, Decl(es6modulekindWithES5Target11.ts, 0, 0)) +>args : Symbol(args, Decl(es6modulekindWithES5Target11.ts, 1, 21)) + +@foo +>foo : Symbol(foo, Decl(es6modulekindWithES5Target11.ts, 0, 0)) + +export default class C { +>C : Symbol(C, Decl(es6modulekindWithES5Target11.ts, 1, 42)) + + static x() { return C.y; } +>x : Symbol(C.x, Decl(es6modulekindWithES5Target11.ts, 3, 24)) +>C.y : Symbol(C.y, Decl(es6modulekindWithES5Target11.ts, 4, 30)) +>C : Symbol(C, Decl(es6modulekindWithES5Target11.ts, 1, 42)) +>y : Symbol(C.y, Decl(es6modulekindWithES5Target11.ts, 4, 30)) + + static y = 1 +>y : Symbol(C.y, Decl(es6modulekindWithES5Target11.ts, 4, 30)) + + p = 1; +>p : Symbol(C.p, Decl(es6modulekindWithES5Target11.ts, 5, 16)) + + method() { } +>method : Symbol(C.method, Decl(es6modulekindWithES5Target11.ts, 6, 10)) +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target11.types b/tests/baselines/reference/es6modulekindWithES5Target11.types new file mode 100644 index 0000000000000..51fbe3710171c --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target11.types @@ -0,0 +1,29 @@ +=== tests/cases/compiler/es6modulekindWithES5Target11.ts === + +declare function foo(...args: any[]): any; +>foo : (...args: any[]) => any +>args : any[] + +@foo +>foo : (...args: any[]) => any + +export default class C { +>C : C + + static x() { return C.y; } +>x : () => number +>C.y : number +>C : typeof C +>y : number + + static y = 1 +>y : number +>1 : number + + p = 1; +>p : number +>1 : number + + method() { } +>method : () => void +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target2.js b/tests/baselines/reference/es6modulekindWithES5Target2.js new file mode 100644 index 0000000000000..4cfe8bc6d4b06 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target2.js @@ -0,0 +1,19 @@ +//// [es6modulekindWithES5Target2.ts] + +export default class C { + static s = 0; + p = 1; + method() { } +} + + +//// [es6modulekindWithES5Target2.js] +var C = (function () { + function C() { + this.p = 1; + } + C.prototype.method = function () { }; + C.s = 0; + return C; +}()); +export default C; diff --git a/tests/baselines/reference/es6modulekindWithES5Target2.symbols b/tests/baselines/reference/es6modulekindWithES5Target2.symbols new file mode 100644 index 0000000000000..762121612eb95 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target2.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/es6modulekindWithES5Target2.ts === + +export default class C { +>C : Symbol(C, Decl(es6modulekindWithES5Target2.ts, 0, 0)) + + static s = 0; +>s : Symbol(C.s, Decl(es6modulekindWithES5Target2.ts, 1, 24)) + + p = 1; +>p : Symbol(C.p, Decl(es6modulekindWithES5Target2.ts, 2, 17)) + + method() { } +>method : Symbol(C.method, Decl(es6modulekindWithES5Target2.ts, 3, 10)) +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target2.types b/tests/baselines/reference/es6modulekindWithES5Target2.types new file mode 100644 index 0000000000000..04b5e5b990516 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target2.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6modulekindWithES5Target2.ts === + +export default class C { +>C : C + + static s = 0; +>s : number +>0 : number + + p = 1; +>p : number +>1 : number + + method() { } +>method : () => void +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target3.js b/tests/baselines/reference/es6modulekindWithES5Target3.js new file mode 100644 index 0000000000000..bfe55d2a573de --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target3.js @@ -0,0 +1,30 @@ +//// [es6modulekindWithES5Target3.ts] + + +declare function foo(...args: any[]): any; +@foo +export default class D { + static s = 0; + p = 1; + method() { } +} + +//// [es6modulekindWithES5Target3.js] +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var D = (function () { + function D() { + this.p = 1; + } + D.prototype.method = function () { }; + D.s = 0; + D = __decorate([ + foo + ], D); + return D; +}()); +export default D; diff --git a/tests/baselines/reference/es6modulekindWithES5Target3.symbols b/tests/baselines/reference/es6modulekindWithES5Target3.symbols new file mode 100644 index 0000000000000..3fd26b9033fa9 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target3.symbols @@ -0,0 +1,22 @@ +=== tests/cases/compiler/es6modulekindWithES5Target3.ts === + + +declare function foo(...args: any[]): any; +>foo : Symbol(foo, Decl(es6modulekindWithES5Target3.ts, 0, 0)) +>args : Symbol(args, Decl(es6modulekindWithES5Target3.ts, 2, 21)) + +@foo +>foo : Symbol(foo, Decl(es6modulekindWithES5Target3.ts, 0, 0)) + +export default class D { +>D : Symbol(D, Decl(es6modulekindWithES5Target3.ts, 2, 42)) + + static s = 0; +>s : Symbol(D.s, Decl(es6modulekindWithES5Target3.ts, 4, 24)) + + p = 1; +>p : Symbol(D.p, Decl(es6modulekindWithES5Target3.ts, 5, 17)) + + method() { } +>method : Symbol(D.method, Decl(es6modulekindWithES5Target3.ts, 6, 10)) +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target3.types b/tests/baselines/reference/es6modulekindWithES5Target3.types new file mode 100644 index 0000000000000..5bc8c69c01a40 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target3.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/es6modulekindWithES5Target3.ts === + + +declare function foo(...args: any[]): any; +>foo : (...args: any[]) => any +>args : any[] + +@foo +>foo : (...args: any[]) => any + +export default class D { +>D : D + + static s = 0; +>s : number +>0 : number + + p = 1; +>p : number +>1 : number + + method() { } +>method : () => void +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target4.js b/tests/baselines/reference/es6modulekindWithES5Target4.js new file mode 100644 index 0000000000000..b34e68b811116 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target4.js @@ -0,0 +1,12 @@ +//// [es6modulekindWithES5Target4.ts] + +class E { } +export default E; + +//// [es6modulekindWithES5Target4.js] +var E = (function () { + function E() { + } + return E; +}()); +export default E; diff --git a/tests/baselines/reference/es6modulekindWithES5Target4.symbols b/tests/baselines/reference/es6modulekindWithES5Target4.symbols new file mode 100644 index 0000000000000..fdf5bdc619748 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target4.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/es6modulekindWithES5Target4.ts === + +class E { } +>E : Symbol(E, Decl(es6modulekindWithES5Target4.ts, 0, 0)) + +export default E; +>E : Symbol(E, Decl(es6modulekindWithES5Target4.ts, 0, 0)) + diff --git a/tests/baselines/reference/es6modulekindWithES5Target4.types b/tests/baselines/reference/es6modulekindWithES5Target4.types new file mode 100644 index 0000000000000..cd0852cab1a19 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target4.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/es6modulekindWithES5Target4.ts === + +class E { } +>E : E + +export default E; +>E : E + diff --git a/tests/baselines/reference/es6modulekindWithES5Target5.js b/tests/baselines/reference/es6modulekindWithES5Target5.js new file mode 100644 index 0000000000000..735604861839d --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target5.js @@ -0,0 +1,19 @@ +//// [es6modulekindWithES5Target5.ts] + +export enum E1 { + value1 +} + +export const enum E2 { + value1 +} + +//// [es6modulekindWithES5Target5.js] +export var E1; +(function (E1) { + E1[E1["value1"] = 0] = "value1"; +})(E1 || (E1 = {})); +export var E2; +(function (E2) { + E2[E2["value1"] = 0] = "value1"; +})(E2 || (E2 = {})); diff --git a/tests/baselines/reference/es6modulekindWithES5Target5.symbols b/tests/baselines/reference/es6modulekindWithES5Target5.symbols new file mode 100644 index 0000000000000..5a305ad0f7fba --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target5.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/es6modulekindWithES5Target5.ts === + +export enum E1 { +>E1 : Symbol(E1, Decl(es6modulekindWithES5Target5.ts, 0, 0)) + + value1 +>value1 : Symbol(E1.value1, Decl(es6modulekindWithES5Target5.ts, 1, 16)) +} + +export const enum E2 { +>E2 : Symbol(E2, Decl(es6modulekindWithES5Target5.ts, 3, 1)) + + value1 +>value1 : Symbol(E2.value1, Decl(es6modulekindWithES5Target5.ts, 5, 22)) +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target5.types b/tests/baselines/reference/es6modulekindWithES5Target5.types new file mode 100644 index 0000000000000..284c72cc0ea6d --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target5.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/es6modulekindWithES5Target5.ts === + +export enum E1 { +>E1 : E1 + + value1 +>value1 : E1 +} + +export const enum E2 { +>E2 : E2 + + value1 +>value1 : E2 +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target6.js b/tests/baselines/reference/es6modulekindWithES5Target6.js new file mode 100644 index 0000000000000..d305c60e54ec6 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target6.js @@ -0,0 +1,25 @@ +//// [es6modulekindWithES5Target6.ts] + +export function f1(d = 0) { +} + +export function f2(...arg) { +} + +export default function f3(d = 0) { +} + + +//// [es6modulekindWithES5Target6.js] +export function f1(d) { + if (d === void 0) { d = 0; } +} +export function f2() { + var arg = []; + for (var _i = 0; _i < arguments.length; _i++) { + arg[_i - 0] = arguments[_i]; + } +} +export default function f3(d) { + if (d === void 0) { d = 0; } +} diff --git a/tests/baselines/reference/es6modulekindWithES5Target6.symbols b/tests/baselines/reference/es6modulekindWithES5Target6.symbols new file mode 100644 index 0000000000000..6e779355f3dc5 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target6.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6modulekindWithES5Target6.ts === + +export function f1(d = 0) { +>f1 : Symbol(f1, Decl(es6modulekindWithES5Target6.ts, 0, 0)) +>d : Symbol(d, Decl(es6modulekindWithES5Target6.ts, 1, 19)) +} + +export function f2(...arg) { +>f2 : Symbol(f2, Decl(es6modulekindWithES5Target6.ts, 2, 1)) +>arg : Symbol(arg, Decl(es6modulekindWithES5Target6.ts, 4, 19)) +} + +export default function f3(d = 0) { +>f3 : Symbol(f3, Decl(es6modulekindWithES5Target6.ts, 5, 1)) +>d : Symbol(d, Decl(es6modulekindWithES5Target6.ts, 7, 27)) +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target6.types b/tests/baselines/reference/es6modulekindWithES5Target6.types new file mode 100644 index 0000000000000..932493ef06339 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target6.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/es6modulekindWithES5Target6.ts === + +export function f1(d = 0) { +>f1 : (d?: number) => void +>d : number +>0 : number +} + +export function f2(...arg) { +>f2 : (...arg: any[]) => void +>arg : any[] +} + +export default function f3(d = 0) { +>f3 : (d?: number) => void +>d : number +>0 : number +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target7.js b/tests/baselines/reference/es6modulekindWithES5Target7.js new file mode 100644 index 0000000000000..e3e0b4f454976 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target7.js @@ -0,0 +1,16 @@ +//// [es6modulekindWithES5Target7.ts] + +export namespace N { + var x = 0; +} + +export namespace N2 { + export interface I { } +} + + +//// [es6modulekindWithES5Target7.js] +export var N; +(function (N) { + var x = 0; +})(N || (N = {})); diff --git a/tests/baselines/reference/es6modulekindWithES5Target7.symbols b/tests/baselines/reference/es6modulekindWithES5Target7.symbols new file mode 100644 index 0000000000000..4bf587dd5d3d8 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target7.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/es6modulekindWithES5Target7.ts === + +export namespace N { +>N : Symbol(N, Decl(es6modulekindWithES5Target7.ts, 0, 0)) + + var x = 0; +>x : Symbol(x, Decl(es6modulekindWithES5Target7.ts, 2, 7)) +} + +export namespace N2 { +>N2 : Symbol(N2, Decl(es6modulekindWithES5Target7.ts, 3, 1)) + + export interface I { } +>I : Symbol(I, Decl(es6modulekindWithES5Target7.ts, 5, 21)) +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target7.types b/tests/baselines/reference/es6modulekindWithES5Target7.types new file mode 100644 index 0000000000000..f1404c7883aa2 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target7.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6modulekindWithES5Target7.ts === + +export namespace N { +>N : typeof N + + var x = 0; +>x : number +>0 : number +} + +export namespace N2 { +>N2 : any + + export interface I { } +>I : I +} + diff --git a/tests/baselines/reference/es6modulekindWithES5Target8.js b/tests/baselines/reference/es6modulekindWithES5Target8.js new file mode 100644 index 0000000000000..baab6fdab3749 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target8.js @@ -0,0 +1,8 @@ +//// [es6modulekindWithES5Target8.ts] + +export const c = 0; +export let l = 1; + +//// [es6modulekindWithES5Target8.js] +export var c = 0; +export var l = 1; diff --git a/tests/baselines/reference/es6modulekindWithES5Target8.symbols b/tests/baselines/reference/es6modulekindWithES5Target8.symbols new file mode 100644 index 0000000000000..e85c76a16fe9b --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target8.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/es6modulekindWithES5Target8.ts === + +export const c = 0; +>c : Symbol(c, Decl(es6modulekindWithES5Target8.ts, 1, 12)) + +export let l = 1; +>l : Symbol(l, Decl(es6modulekindWithES5Target8.ts, 2, 10)) + diff --git a/tests/baselines/reference/es6modulekindWithES5Target8.types b/tests/baselines/reference/es6modulekindWithES5Target8.types new file mode 100644 index 0000000000000..4017b02a471f8 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target8.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/es6modulekindWithES5Target8.ts === + +export const c = 0; +>c : number +>0 : number + +export let l = 1; +>l : number +>1 : number + diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt new file mode 100644 index 0000000000000..2e9a35a8783e0 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt @@ -0,0 +1,37 @@ +tests/cases/compiler/es6modulekindWithES5Target9.ts(2,15): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target9.ts(4,17): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target9.ts(6,20): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target9.ts(14,15): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target9.ts(16,17): error TS2307: Cannot find module 'mod'. + + +==== tests/cases/compiler/es6modulekindWithES5Target9.ts (5 errors) ==== + + import d from "mod"; + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + import {a} from "mod"; + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + import * as M from "mod"; + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + export {a}; + + export {M}; + + export {d}; + + export * from "mod"; + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + export {b} from "mod" + ~~~~~ +!!! error TS2307: Cannot find module 'mod'. + + export default d; + \ No newline at end of file diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.js b/tests/baselines/reference/es6modulekindWithES5Target9.js new file mode 100644 index 0000000000000..97991b40b0cb5 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.js @@ -0,0 +1,31 @@ +//// [es6modulekindWithES5Target9.ts] + +import d from "mod"; + +import {a} from "mod"; + +import * as M from "mod"; + +export {a}; + +export {M}; + +export {d}; + +export * from "mod"; + +export {b} from "mod" + +export default d; + + +//// [es6modulekindWithES5Target9.js] +import d from "mod"; +import { a } from "mod"; +import * as M from "mod"; +export { a }; +export { M }; +export { d }; +export * from "mod"; +export { b } from "mod"; +export default d; diff --git a/tests/baselines/reference/shorthand-property-es5-es6.errors.txt b/tests/baselines/reference/shorthand-property-es5-es6.errors.txt index f491dfbaabebd..e54f73a4e6104 100644 --- a/tests/baselines/reference/shorthand-property-es5-es6.errors.txt +++ b/tests/baselines/reference/shorthand-property-es5-es6.errors.txt @@ -1,8 +1,6 @@ -error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. tests/cases/compiler/test.ts(2,19): error TS2307: Cannot find module './foo'. -!!! error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. ==== tests/cases/compiler/test.ts (1 errors) ==== import {foo} from './foo'; diff --git a/tests/cases/compiler/es6modulekindWithES5Target.ts b/tests/cases/compiler/es6modulekindWithES5Target.ts new file mode 100644 index 0000000000000..c5ecfdab686fe --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target.ts @@ -0,0 +1,22 @@ +// @target: es5 +// @module: es2015 +// @experimentalDecorators: true + +export class C { + static s = 0; + p = 1; + method() { } +} +export { C as C2 }; + +declare function foo(...args: any[]): any; +@foo +export class D { + static s = 0; + p = 1; + method() { } +} +export { D as D2 }; + +class E { } +export {E}; diff --git a/tests/cases/compiler/es6modulekindWithES5Target10.ts b/tests/cases/compiler/es6modulekindWithES5Target10.ts new file mode 100644 index 0000000000000..21105ecbbfc67 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target10.ts @@ -0,0 +1,9 @@ +// @target: es5 +// @module: es2015 + +import i = require("mod"); // Error; + + +namespace N { +} +export = N; // Error \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target11.ts b/tests/cases/compiler/es6modulekindWithES5Target11.ts new file mode 100644 index 0000000000000..af4329200e69b --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target11.ts @@ -0,0 +1,12 @@ +// @target: es5 +// @module: es2015 +// @experimentalDecorators: true + +declare function foo(...args: any[]): any; +@foo +export default class C { + static x() { return C.y; } + static y = 1 + p = 1; + method() { } +} \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target2.ts b/tests/cases/compiler/es6modulekindWithES5Target2.ts new file mode 100644 index 0000000000000..01f32fd0da0d2 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target2.ts @@ -0,0 +1,8 @@ +// @target: es5 +// @module: es2015 + +export default class C { + static s = 0; + p = 1; + method() { } +} diff --git a/tests/cases/compiler/es6modulekindWithES5Target3.ts b/tests/cases/compiler/es6modulekindWithES5Target3.ts new file mode 100644 index 0000000000000..af407271685bb --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target3.ts @@ -0,0 +1,12 @@ +// @target: es5 +// @module: es2015 +// @experimentalDecorators: true + + +declare function foo(...args: any[]): any; +@foo +export default class D { + static s = 0; + p = 1; + method() { } +} \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target4.ts b/tests/cases/compiler/es6modulekindWithES5Target4.ts new file mode 100644 index 0000000000000..709dd791fb4ee --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target4.ts @@ -0,0 +1,5 @@ +// @target: es5 +// @module: es2015 + +class E { } +export default E; \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target5.ts b/tests/cases/compiler/es6modulekindWithES5Target5.ts new file mode 100644 index 0000000000000..0fb21bba4896a --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target5.ts @@ -0,0 +1,11 @@ +// @target: es5 +// @module: es2015 +// @preserveConstEnums: true + +export enum E1 { + value1 +} + +export const enum E2 { + value1 +} \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target6.ts b/tests/cases/compiler/es6modulekindWithES5Target6.ts new file mode 100644 index 0000000000000..713cfe7a9f937 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target6.ts @@ -0,0 +1,11 @@ +// @target: es5 +// @module: es2015 + +export function f1(d = 0) { +} + +export function f2(...arg) { +} + +export default function f3(d = 0) { +} diff --git a/tests/cases/compiler/es6modulekindWithES5Target7.ts b/tests/cases/compiler/es6modulekindWithES5Target7.ts new file mode 100644 index 0000000000000..f2441c018c229 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target7.ts @@ -0,0 +1,10 @@ +// @target: es5 +// @module: es2015 + +export namespace N { + var x = 0; +} + +export namespace N2 { + export interface I { } +} diff --git a/tests/cases/compiler/es6modulekindWithES5Target8.ts b/tests/cases/compiler/es6modulekindWithES5Target8.ts new file mode 100644 index 0000000000000..f3290ed056399 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target8.ts @@ -0,0 +1,5 @@ +// @target: es5 +// @module: es2015 + +export const c = 0; +export let l = 1; \ No newline at end of file diff --git a/tests/cases/compiler/es6modulekindWithES5Target9.ts b/tests/cases/compiler/es6modulekindWithES5Target9.ts new file mode 100644 index 0000000000000..6e6fff124dd16 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target9.ts @@ -0,0 +1,20 @@ +// @target: es5 +// @module: es2015 + +import d from "mod"; + +import {a} from "mod"; + +import * as M from "mod"; + +export {a}; + +export {M}; + +export {d}; + +export * from "mod"; + +export {b} from "mod" + +export default d;