From 18a875807c02fc1e537fbe7a6dd6bded6f8ebd03 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 5 Jun 2016 15:37:20 -0700 Subject: [PATCH 1/7] Remove restriction on --target es5 and --module es6 --- src/compiler/diagnosticMessages.json | 4 ---- src/compiler/program.ts | 5 ----- .../reference/es5andes6module.errors.txt | 19 ------------------- .../reference/es5andes6module.symbols | 17 +++++++++++++++++ .../baselines/reference/es5andes6module.types | 18 ++++++++++++++++++ .../shorthand-property-es5-es6.errors.txt | 2 -- 6 files changed, 35 insertions(+), 30 deletions(-) delete mode 100644 tests/baselines/reference/es5andes6module.errors.txt create mode 100644 tests/baselines/reference/es5andes6module.symbols create mode 100644 tests/baselines/reference/es5andes6module.types 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/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.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/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'; From 8360bc7961a3e3a5052e7d608c2a1cbfddac226c Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 8 Jun 2016 16:43:56 -0700 Subject: [PATCH 2/7] Add handleing for classes --- src/compiler/emitter.ts | 12 ++++- .../reference/es6modulekindWithES5Target.js | 51 +++++++++++++++++++ .../es6modulekindWithES5Target.symbols | 41 +++++++++++++++ .../es6modulekindWithES5Target.types | 45 ++++++++++++++++ .../reference/es6modulekindWithES5Target2.js | 19 +++++++ .../es6modulekindWithES5Target2.symbols | 15 ++++++ .../es6modulekindWithES5Target2.types | 17 +++++++ .../reference/es6modulekindWithES5Target3.js | 30 +++++++++++ .../es6modulekindWithES5Target3.symbols | 22 ++++++++ .../es6modulekindWithES5Target3.types | 24 +++++++++ .../reference/es6modulekindWithES5Target4.js | 12 +++++ .../es6modulekindWithES5Target4.symbols | 8 +++ .../es6modulekindWithES5Target4.types | 8 +++ .../compiler/es6modulekindWithES5Target.ts | 20 ++++++++ .../compiler/es6modulekindWithES5Target2.ts | 8 +++ .../compiler/es6modulekindWithES5Target3.ts | 12 +++++ .../compiler/es6modulekindWithES5Target4.ts | 5 ++ 17 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/es6modulekindWithES5Target.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target2.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target2.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target2.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target3.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target3.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target3.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target4.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target4.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target4.types create mode 100644 tests/cases/compiler/es6modulekindWithES5Target.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target2.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target3.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target4.ts 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/tests/baselines/reference/es6modulekindWithES5Target.js b/tests/baselines/reference/es6modulekindWithES5Target.js new file mode 100644 index 0000000000000..bab55ec7a2c53 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.js @@ -0,0 +1,51 @@ +//// [es6modulekindWithES5Target.ts] + +export class C { + static s = 0; + p = 1; + method() { } +} + +declare function foo(...args: any[]): any; +@foo +export class D { + static s = 0; + p = 1; + method() { } +} + +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 var D = (function () { + function D() { + this.p = 1; + } + D.prototype.method = function () { }; + D.s = 0; + D = __decorate([ + foo + ], D); + return D; +}()); +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..4fe53ced68d57 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.symbols @@ -0,0 +1,41 @@ +=== 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)) +} + +declare function foo(...args: any[]): any; +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 5, 1)) +>args : Symbol(args, Decl(es6modulekindWithES5Target.ts, 7, 21)) + +@foo +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 5, 1)) + +export class D { +>D : Symbol(D, Decl(es6modulekindWithES5Target.ts, 7, 42)) + + static s = 0; +>s : Symbol(D.s, Decl(es6modulekindWithES5Target.ts, 9, 16)) + + p = 1; +>p : Symbol(D.p, Decl(es6modulekindWithES5Target.ts, 10, 17)) + + method() { } +>method : Symbol(D.method, Decl(es6modulekindWithES5Target.ts, 11, 10)) +} + +class E { } +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 13, 1)) + +export {E}; +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 16, 8)) + diff --git a/tests/baselines/reference/es6modulekindWithES5Target.types b/tests/baselines/reference/es6modulekindWithES5Target.types new file mode 100644 index 0000000000000..14e0533faaa78 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target.types @@ -0,0 +1,45 @@ +=== 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 +} + +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 +} + +class E { } +>E : E + +export {E}; +>E : typeof E + 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/cases/compiler/es6modulekindWithES5Target.ts b/tests/cases/compiler/es6modulekindWithES5Target.ts new file mode 100644 index 0000000000000..7211793222938 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target.ts @@ -0,0 +1,20 @@ +// @target: es5 +// @module: es2015 +// @experimentalDecorators: true + +export class C { + static s = 0; + p = 1; + method() { } +} + +declare function foo(...args: any[]): any; +@foo +export class D { + static s = 0; + p = 1; + method() { } +} + +class E { } +export {E}; \ 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 From 33137f68c57e95cfa4bc1354232281544a857aec Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 8 Jun 2016 16:46:55 -0700 Subject: [PATCH 3/7] Add more tests for target=es5 module=es6 --- .../reference/es6modulekindWithES5Target5.js | 19 ++++++++++++++ .../es6modulekindWithES5Target5.symbols | 15 +++++++++++ .../es6modulekindWithES5Target5.types | 15 +++++++++++ .../reference/es6modulekindWithES5Target6.js | 25 +++++++++++++++++++ .../es6modulekindWithES5Target6.symbols | 17 +++++++++++++ .../es6modulekindWithES5Target6.types | 19 ++++++++++++++ .../reference/es6modulekindWithES5Target7.js | 16 ++++++++++++ .../es6modulekindWithES5Target7.symbols | 16 ++++++++++++ .../es6modulekindWithES5Target7.types | 17 +++++++++++++ .../reference/es6modulekindWithES5Target8.js | 8 ++++++ .../es6modulekindWithES5Target8.symbols | 8 ++++++ .../es6modulekindWithES5Target8.types | 10 ++++++++ .../compiler/es6modulekindWithES5Target5.ts | 11 ++++++++ .../compiler/es6modulekindWithES5Target6.ts | 11 ++++++++ .../compiler/es6modulekindWithES5Target7.ts | 10 ++++++++ .../compiler/es6modulekindWithES5Target8.ts | 5 ++++ 16 files changed, 222 insertions(+) create mode 100644 tests/baselines/reference/es6modulekindWithES5Target5.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target5.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target5.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target6.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target6.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target6.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target7.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target7.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target7.types create mode 100644 tests/baselines/reference/es6modulekindWithES5Target8.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target8.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target8.types create mode 100644 tests/cases/compiler/es6modulekindWithES5Target5.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target6.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target7.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target8.ts 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/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 From f42d8b88d560e3945ca7c576d660c5f9de539bce Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 8 Jun 2016 17:29:45 -0700 Subject: [PATCH 4/7] Accept baseline --- tests/baselines/reference/es5andes6module.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; From 475c1c24fc4e380de0b585da0a2608989976aa91 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 8 Jun 2016 17:48:37 -0700 Subject: [PATCH 5/7] Add more tests --- .../es6modulekindWithES5Target10.errors.txt | 19 +++++++++++ .../reference/es6modulekindWithES5Target10.js | 10 ++++++ .../es6modulekindWithES5Target9.errors.txt | 33 +++++++++++++++++++ .../reference/es6modulekindWithES5Target9.js | 24 ++++++++++++++ .../es6modulekindWithES5Target9.symbols | 12 +++++++ .../es6modulekindWithES5Target9.types | 18 ++++++++++ .../compiler/es6modulekindWithES5Target10.ts | 9 +++++ .../compiler/es6modulekindWithES5Target9.ts | 16 +++++++++ 8 files changed, 141 insertions(+) create mode 100644 tests/baselines/reference/es6modulekindWithES5Target10.errors.txt create mode 100644 tests/baselines/reference/es6modulekindWithES5Target10.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.errors.txt create mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.types create mode 100644 tests/cases/compiler/es6modulekindWithES5Target10.ts create mode 100644 tests/cases/compiler/es6modulekindWithES5Target9.ts 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/es6modulekindWithES5Target9.errors.txt b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt new file mode 100644 index 0000000000000..696b28a30e88b --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt @@ -0,0 +1,33 @@ +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(10,15): error TS2307: Cannot find module 'mod'. +tests/cases/compiler/es6modulekindWithES5Target9.ts(12,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 * 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..a9569c42dd9e1 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.js @@ -0,0 +1,24 @@ +//// [es6modulekindWithES5Target9.ts] + +import d from "mod"; + +import {a} from "mod"; + +import * as M from "mod"; + +export {a}; + +export * from "mod"; + +export {b} from "mod" + +export default d; + + +//// [es6modulekindWithES5Target9.js] +import d from "mod"; +import { a } from "mod"; +export { a }; +export * from "mod"; +export { b } from "mod"; +export default d; diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.symbols b/tests/baselines/reference/es6modulekindWithES5Target9.symbols new file mode 100644 index 0000000000000..c973b542d4594 --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/es6modulekindWithES5Target9.ts === + +export var {a, b } = { a: 0, b: 1 }; +>a : Symbol(a, Decl(es6modulekindWithES5Target9.ts, 1, 12)) +>b : Symbol(b, Decl(es6modulekindWithES5Target9.ts, 1, 14)) +>a : Symbol(a, Decl(es6modulekindWithES5Target9.ts, 1, 22)) +>b : Symbol(b, Decl(es6modulekindWithES5Target9.ts, 1, 28)) + +export var [d, e] = [1, 2]; +>d : Symbol(d, Decl(es6modulekindWithES5Target9.ts, 2, 12)) +>e : Symbol(e, Decl(es6modulekindWithES5Target9.ts, 2, 14)) + diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.types b/tests/baselines/reference/es6modulekindWithES5Target9.types new file mode 100644 index 0000000000000..bd4eb2ea102cd --- /dev/null +++ b/tests/baselines/reference/es6modulekindWithES5Target9.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/es6modulekindWithES5Target9.ts === + +export var {a, b } = { a: 0, b: 1 }; +>a : number +>b : number +>{ a: 0, b: 1 } : { a: number; b: number; } +>a : number +>0 : number +>b : number +>1 : number + +export var [d, e] = [1, 2]; +>d : number +>e : number +>[1, 2] : [number, number] +>1 : number +>2 : number + 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/es6modulekindWithES5Target9.ts b/tests/cases/compiler/es6modulekindWithES5Target9.ts new file mode 100644 index 0000000000000..e0f7b612c0892 --- /dev/null +++ b/tests/cases/compiler/es6modulekindWithES5Target9.ts @@ -0,0 +1,16 @@ +// @target: es5 +// @module: es2015 + +import d from "mod"; + +import {a} from "mod"; + +import * as M from "mod"; + +export {a}; + +export * from "mod"; + +export {b} from "mod" + +export default d; From 3492542ebbfdf345690b9145bc8c56922f1a3ec0 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 9 Jun 2016 10:58:03 -0700 Subject: [PATCH 6/7] Remove stale files --- .../es6modulekindWithES5Target9.symbols | 12 ------------ .../es6modulekindWithES5Target9.types | 18 ------------------ 2 files changed, 30 deletions(-) delete mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.symbols delete mode 100644 tests/baselines/reference/es6modulekindWithES5Target9.types diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.symbols b/tests/baselines/reference/es6modulekindWithES5Target9.symbols deleted file mode 100644 index c973b542d4594..0000000000000 --- a/tests/baselines/reference/es6modulekindWithES5Target9.symbols +++ /dev/null @@ -1,12 +0,0 @@ -=== tests/cases/compiler/es6modulekindWithES5Target9.ts === - -export var {a, b } = { a: 0, b: 1 }; ->a : Symbol(a, Decl(es6modulekindWithES5Target9.ts, 1, 12)) ->b : Symbol(b, Decl(es6modulekindWithES5Target9.ts, 1, 14)) ->a : Symbol(a, Decl(es6modulekindWithES5Target9.ts, 1, 22)) ->b : Symbol(b, Decl(es6modulekindWithES5Target9.ts, 1, 28)) - -export var [d, e] = [1, 2]; ->d : Symbol(d, Decl(es6modulekindWithES5Target9.ts, 2, 12)) ->e : Symbol(e, Decl(es6modulekindWithES5Target9.ts, 2, 14)) - diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.types b/tests/baselines/reference/es6modulekindWithES5Target9.types deleted file mode 100644 index bd4eb2ea102cd..0000000000000 --- a/tests/baselines/reference/es6modulekindWithES5Target9.types +++ /dev/null @@ -1,18 +0,0 @@ -=== tests/cases/compiler/es6modulekindWithES5Target9.ts === - -export var {a, b } = { a: 0, b: 1 }; ->a : number ->b : number ->{ a: 0, b: 1 } : { a: number; b: number; } ->a : number ->0 : number ->b : number ->1 : number - -export var [d, e] = [1, 2]; ->d : number ->e : number ->[1, 2] : [number, number] ->1 : number ->2 : number - From f0a430aef8c582549be6e4956488bc79ccae532c Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 9 Jun 2016 15:52:17 -0700 Subject: [PATCH 7/7] Code review comments --- .../reference/es6modulekindWithES5Target.js | 7 ++++- .../es6modulekindWithES5Target.symbols | 24 ++++++++------ .../es6modulekindWithES5Target.types | 6 ++++ .../reference/es6modulekindWithES5Target11.js | 31 +++++++++++++++++++ .../es6modulekindWithES5Target11.symbols | 27 ++++++++++++++++ .../es6modulekindWithES5Target11.types | 29 +++++++++++++++++ .../es6modulekindWithES5Target9.errors.txt | 8 +++-- .../reference/es6modulekindWithES5Target9.js | 7 +++++ .../compiler/es6modulekindWithES5Target.ts | 4 ++- .../compiler/es6modulekindWithES5Target11.ts | 12 +++++++ .../compiler/es6modulekindWithES5Target9.ts | 4 +++ 11 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 tests/baselines/reference/es6modulekindWithES5Target11.js create mode 100644 tests/baselines/reference/es6modulekindWithES5Target11.symbols create mode 100644 tests/baselines/reference/es6modulekindWithES5Target11.types create mode 100644 tests/cases/compiler/es6modulekindWithES5Target11.ts diff --git a/tests/baselines/reference/es6modulekindWithES5Target.js b/tests/baselines/reference/es6modulekindWithES5Target.js index bab55ec7a2c53..cdd1bb018d455 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target.js +++ b/tests/baselines/reference/es6modulekindWithES5Target.js @@ -5,6 +5,7 @@ export class C { p = 1; method() { } } +export { C as C2 }; declare function foo(...args: any[]): any; @foo @@ -13,9 +14,11 @@ export class D { p = 1; method() { } } +export { D as D2 }; class E { } -export {E}; +export {E}; + //// [es6modulekindWithES5Target.js] var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { @@ -32,6 +35,7 @@ export var C = (function () { C.s = 0; return C; }()); +export { C as C2 }; export var D = (function () { function D() { this.p = 1; @@ -43,6 +47,7 @@ export var D = (function () { ], D); return D; }()); +export { D as D2 }; var E = (function () { function E() { } diff --git a/tests/baselines/reference/es6modulekindWithES5Target.symbols b/tests/baselines/reference/es6modulekindWithES5Target.symbols index 4fe53ced68d57..2d2a3f6732cce 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target.symbols +++ b/tests/baselines/reference/es6modulekindWithES5Target.symbols @@ -12,30 +12,36 @@ export class C { 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, 5, 1)) ->args : Symbol(args, Decl(es6modulekindWithES5Target.ts, 7, 21)) +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 6, 19)) +>args : Symbol(args, Decl(es6modulekindWithES5Target.ts, 8, 21)) @foo ->foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 5, 1)) +>foo : Symbol(foo, Decl(es6modulekindWithES5Target.ts, 6, 19)) export class D { ->D : Symbol(D, Decl(es6modulekindWithES5Target.ts, 7, 42)) +>D : Symbol(D, Decl(es6modulekindWithES5Target.ts, 8, 42)) static s = 0; ->s : Symbol(D.s, Decl(es6modulekindWithES5Target.ts, 9, 16)) +>s : Symbol(D.s, Decl(es6modulekindWithES5Target.ts, 10, 16)) p = 1; ->p : Symbol(D.p, Decl(es6modulekindWithES5Target.ts, 10, 17)) +>p : Symbol(D.p, Decl(es6modulekindWithES5Target.ts, 11, 17)) method() { } ->method : Symbol(D.method, Decl(es6modulekindWithES5Target.ts, 11, 10)) +>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, 13, 1)) +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 15, 19)) export {E}; ->E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 16, 8)) +>E : Symbol(E, Decl(es6modulekindWithES5Target.ts, 18, 8)) diff --git a/tests/baselines/reference/es6modulekindWithES5Target.types b/tests/baselines/reference/es6modulekindWithES5Target.types index 14e0533faaa78..f7232f2049481 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target.types +++ b/tests/baselines/reference/es6modulekindWithES5Target.types @@ -14,6 +14,9 @@ export class C { method() { } >method : () => void } +export { C as C2 }; +>C : typeof C +>C2 : typeof C declare function foo(...args: any[]): any; >foo : (...args: any[]) => any @@ -36,6 +39,9 @@ export class D { method() { } >method : () => void } +export { D as D2 }; +>D : typeof D +>D2 : typeof D class E { } >E : E 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/es6modulekindWithES5Target9.errors.txt b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt index 696b28a30e88b..2e9a35a8783e0 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt +++ b/tests/baselines/reference/es6modulekindWithES5Target9.errors.txt @@ -1,8 +1,8 @@ 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(10,15): error TS2307: Cannot find module 'mod'. -tests/cases/compiler/es6modulekindWithES5Target9.ts(12,17): 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) ==== @@ -21,6 +21,10 @@ tests/cases/compiler/es6modulekindWithES5Target9.ts(12,17): error TS2307: Cannot export {a}; + export {M}; + + export {d}; + export * from "mod"; ~~~~~ !!! error TS2307: Cannot find module 'mod'. diff --git a/tests/baselines/reference/es6modulekindWithES5Target9.js b/tests/baselines/reference/es6modulekindWithES5Target9.js index a9569c42dd9e1..97991b40b0cb5 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target9.js +++ b/tests/baselines/reference/es6modulekindWithES5Target9.js @@ -8,6 +8,10 @@ import * as M from "mod"; export {a}; +export {M}; + +export {d}; + export * from "mod"; export {b} from "mod" @@ -18,7 +22,10 @@ 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/cases/compiler/es6modulekindWithES5Target.ts b/tests/cases/compiler/es6modulekindWithES5Target.ts index 7211793222938..c5ecfdab686fe 100644 --- a/tests/cases/compiler/es6modulekindWithES5Target.ts +++ b/tests/cases/compiler/es6modulekindWithES5Target.ts @@ -7,6 +7,7 @@ export class C { p = 1; method() { } } +export { C as C2 }; declare function foo(...args: any[]): any; @foo @@ -15,6 +16,7 @@ export class D { p = 1; method() { } } +export { D as D2 }; class E { } -export {E}; \ No newline at end of file +export {E}; 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/es6modulekindWithES5Target9.ts b/tests/cases/compiler/es6modulekindWithES5Target9.ts index e0f7b612c0892..6e6fff124dd16 100644 --- a/tests/cases/compiler/es6modulekindWithES5Target9.ts +++ b/tests/cases/compiler/es6modulekindWithES5Target9.ts @@ -9,6 +9,10 @@ import * as M from "mod"; export {a}; +export {M}; + +export {d}; + export * from "mod"; export {b} from "mod"