From 66cf56e1e0908fd3b4e3f0cdad769129fc44061b Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 25 Feb 2016 20:48:15 -0800 Subject: [PATCH] emit temp declarations after export equals --- src/compiler/emitter.ts | 6 +++--- tests/baselines/reference/exportEqualsAmd.js | 9 +++++++++ .../baselines/reference/exportEqualsAmd.symbols | 3 +++ tests/baselines/reference/exportEqualsAmd.types | 6 ++++++ .../baselines/reference/exportEqualsCommonJs.js | 7 +++++++ .../reference/exportEqualsCommonJs.symbols | 3 +++ .../reference/exportEqualsCommonJs.types | 6 ++++++ tests/baselines/reference/exportEqualsUmd.js | 16 ++++++++++++++++ .../baselines/reference/exportEqualsUmd.symbols | 3 +++ tests/baselines/reference/exportEqualsUmd.types | 6 ++++++ tests/cases/compiler/exportEqualsAmd.ts | 2 ++ tests/cases/compiler/exportEqualsCommonJs.ts | 2 ++ tests/cases/compiler/exportEqualsUmd.ts | 2 ++ 13 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 tests/baselines/reference/exportEqualsAmd.js create mode 100644 tests/baselines/reference/exportEqualsAmd.symbols create mode 100644 tests/baselines/reference/exportEqualsAmd.types create mode 100644 tests/baselines/reference/exportEqualsCommonJs.js create mode 100644 tests/baselines/reference/exportEqualsCommonJs.symbols create mode 100644 tests/baselines/reference/exportEqualsCommonJs.types create mode 100644 tests/baselines/reference/exportEqualsUmd.js create mode 100644 tests/baselines/reference/exportEqualsUmd.symbols create mode 100644 tests/baselines/reference/exportEqualsUmd.types create mode 100644 tests/cases/compiler/exportEqualsAmd.ts create mode 100644 tests/cases/compiler/exportEqualsCommonJs.ts create mode 100644 tests/cases/compiler/exportEqualsUmd.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f08082d72c8..c826cd77441 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -7402,8 +7402,8 @@ const _super = (function (geti, seti) { emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); @@ -7416,8 +7416,8 @@ const _super = (function (geti, seti) { emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ false); + emitTempDeclarations(/*newLine*/ true); } function emitUMDModule(node: SourceFile) { @@ -7443,8 +7443,8 @@ const _super = (function (geti, seti) { emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); diff --git a/tests/baselines/reference/exportEqualsAmd.js b/tests/baselines/reference/exportEqualsAmd.js new file mode 100644 index 00000000000..a0f029589d6 --- /dev/null +++ b/tests/baselines/reference/exportEqualsAmd.js @@ -0,0 +1,9 @@ +//// [exportEqualsAmd.ts] +export = { ["hi"]: "there" }; + +//// [exportEqualsAmd.js] +define(["require", "exports"], function (require, exports) { + "use strict"; + return (_a = {}, _a["hi"] = "there", _a); + var _a; +}); diff --git a/tests/baselines/reference/exportEqualsAmd.symbols b/tests/baselines/reference/exportEqualsAmd.symbols new file mode 100644 index 00000000000..db087c56786 --- /dev/null +++ b/tests/baselines/reference/exportEqualsAmd.symbols @@ -0,0 +1,3 @@ +=== tests/cases/compiler/exportEqualsAmd.ts === +export = { ["hi"]: "there" }; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportEqualsAmd.types b/tests/baselines/reference/exportEqualsAmd.types new file mode 100644 index 00000000000..f5b1bb49910 --- /dev/null +++ b/tests/baselines/reference/exportEqualsAmd.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/exportEqualsAmd.ts === +export = { ["hi"]: "there" }; +>{ ["hi"]: "there" } : { ["hi"]: string; } +>"hi" : string +>"there" : string + diff --git a/tests/baselines/reference/exportEqualsCommonJs.js b/tests/baselines/reference/exportEqualsCommonJs.js new file mode 100644 index 00000000000..01b7a43b310 --- /dev/null +++ b/tests/baselines/reference/exportEqualsCommonJs.js @@ -0,0 +1,7 @@ +//// [exportEqualsCommonJs.ts] +export = { ["hi"]: "there" }; + +//// [exportEqualsCommonJs.js] +"use strict"; +module.exports = (_a = {}, _a["hi"] = "there", _a); +var _a; diff --git a/tests/baselines/reference/exportEqualsCommonJs.symbols b/tests/baselines/reference/exportEqualsCommonJs.symbols new file mode 100644 index 00000000000..1c92a34bbc2 --- /dev/null +++ b/tests/baselines/reference/exportEqualsCommonJs.symbols @@ -0,0 +1,3 @@ +=== tests/cases/compiler/exportEqualsCommonJs.ts === +export = { ["hi"]: "there" }; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportEqualsCommonJs.types b/tests/baselines/reference/exportEqualsCommonJs.types new file mode 100644 index 00000000000..13b968595be --- /dev/null +++ b/tests/baselines/reference/exportEqualsCommonJs.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/exportEqualsCommonJs.ts === +export = { ["hi"]: "there" }; +>{ ["hi"]: "there" } : { ["hi"]: string; } +>"hi" : string +>"there" : string + diff --git a/tests/baselines/reference/exportEqualsUmd.js b/tests/baselines/reference/exportEqualsUmd.js new file mode 100644 index 00000000000..615cc2cddbe --- /dev/null +++ b/tests/baselines/reference/exportEqualsUmd.js @@ -0,0 +1,16 @@ +//// [exportEqualsUmd.ts] +export = { ["hi"]: "there" }; + +//// [exportEqualsUmd.js] +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; + } + else if (typeof define === 'function' && define.amd) { + define(["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + return (_a = {}, _a["hi"] = "there", _a); + var _a; +}); diff --git a/tests/baselines/reference/exportEqualsUmd.symbols b/tests/baselines/reference/exportEqualsUmd.symbols new file mode 100644 index 00000000000..480b8389030 --- /dev/null +++ b/tests/baselines/reference/exportEqualsUmd.symbols @@ -0,0 +1,3 @@ +=== tests/cases/compiler/exportEqualsUmd.ts === +export = { ["hi"]: "there" }; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportEqualsUmd.types b/tests/baselines/reference/exportEqualsUmd.types new file mode 100644 index 00000000000..ab456f0ae48 --- /dev/null +++ b/tests/baselines/reference/exportEqualsUmd.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/exportEqualsUmd.ts === +export = { ["hi"]: "there" }; +>{ ["hi"]: "there" } : { ["hi"]: string; } +>"hi" : string +>"there" : string + diff --git a/tests/cases/compiler/exportEqualsAmd.ts b/tests/cases/compiler/exportEqualsAmd.ts new file mode 100644 index 00000000000..132d9fe22cf --- /dev/null +++ b/tests/cases/compiler/exportEqualsAmd.ts @@ -0,0 +1,2 @@ +// @module: amd +export = { ["hi"]: "there" }; \ No newline at end of file diff --git a/tests/cases/compiler/exportEqualsCommonJs.ts b/tests/cases/compiler/exportEqualsCommonJs.ts new file mode 100644 index 00000000000..d075504ab03 --- /dev/null +++ b/tests/cases/compiler/exportEqualsCommonJs.ts @@ -0,0 +1,2 @@ +// @module: commonjs +export = { ["hi"]: "there" }; \ No newline at end of file diff --git a/tests/cases/compiler/exportEqualsUmd.ts b/tests/cases/compiler/exportEqualsUmd.ts new file mode 100644 index 00000000000..250aaccd2b8 --- /dev/null +++ b/tests/cases/compiler/exportEqualsUmd.ts @@ -0,0 +1,2 @@ +// @module: umd +export = { ["hi"]: "there" }; \ No newline at end of file