Es6 module emit for export VarDeclaration, export LexicalDeclaration

Conflicts:
	src/compiler/emitter.ts
	tests/baselines/reference/es6ExportAll.js
	tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js
	tests/baselines/reference/es6ImportNamedImport.js
This commit is contained in:
Sheetal Nandi 2015-02-17 14:12:28 -08:00 committed by Mohamed Hegazy
parent 29b221430f
commit 05932fdddf
18 changed files with 393 additions and 16 deletions

View File

@ -4202,6 +4202,11 @@ module ts {
if (!(node.flags & NodeFlags.Export)) {
emitStartOfVariableDeclarationList(node.declarationList);
}
else if (languageVersion >= ScriptTarget.ES6 && node.parent.kind === SyntaxKind.SourceFile) {
// Exported ES6 module member
write("export ");
emitStartOfVariableDeclarationList(node.declarationList);
}
emitCommaList(node.declarationList.declarations);
write(";");
if (languageVersion < ScriptTarget.ES6 && node.parent === currentSourceFile) {

View File

@ -49,7 +49,7 @@ m.x.toString();
//// [constDeclarations_access_1.js]
x = 0;
export const x = 0;
//// [constDeclarations_access_2.js]
// Errors
m.x = 1;

View File

@ -9,7 +9,7 @@ import defaultBinding from "es6ImportDefaultBinding_0";
//// [es6ImportDefaultBinding_0.js]
a = 10;
export var a = 10;
//// [es6ImportDefaultBinding_1.js]

View File

@ -16,9 +16,9 @@ import defaultBinding, { m, } from "es6ImportDefaultBindingFollowedWithNamedImp
//// [es6ImportDefaultBindingFollowedWithNamedImport_0.js]
a = 10;
x = a;
m = a;
export var a = 10;
export var x = a;
export var m = a;
//// [es6ImportDefaultBindingFollowedWithNamedImport_1.js]

View File

@ -9,7 +9,7 @@ import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollo
var x: number = nameSpaceBinding.a;
//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.js]
a = 10;
export var a = 10;
//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.js]
import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0";
var x = nameSpaceBinding.a;

View File

@ -9,7 +9,7 @@ import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
//// [es6ImportNameSpaceImport_0.js]
a = 10;
export var a = 10;
//// [es6ImportNameSpaceImport_1.js]

View File

@ -20,11 +20,11 @@ import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0";
//// [es6ImportNamedImport_0.js]
a = 10;
x = a;
m = a;
a1 = 10;
x1 = 10;
export var a = 10;
export var x = a;
export var m = a;
export var a1 = 10;
export var x1 = 10;
//// [es6ImportNamedImport_1.js]

View File

@ -13,9 +13,9 @@ import , { a } from "es6ImportNamedImportParsingError_0";
import { a }, from "es6ImportNamedImportParsingError_0";
//// [es6ImportNamedImportParsingError_0.js]
a = 10;
x = a;
m = a;
export var a = 10;
export var x = a;
export var m = a;
//// [es6ImportNamedImportParsingError_1.js]
from;
"es6ImportNamedImportParsingError_0";

View File

@ -9,7 +9,7 @@ import "es6ImportWithoutFromClause_0";
//// [es6ImportWithoutFromClause_0.js]
a = 10;
export var a = 10;
//// [es6ImportWithoutFromClause_1.js]
import "es6ImportWithoutFromClause_0";

View File

@ -0,0 +1,37 @@
//// [es6ModuleConst.ts]
export const a = "hello";
export const x: string = a, y = x;
const b = y;
const c: string = b, d = c;
export module m1 {
export const k = a;
export const l: string = b, m = k;
const n = m1.k;
const o: string = n, p = k;
}
module m2 {
export const k = a;
export const l: string = b, m = k;
const n = m1.k;
const o: string = n, p = k;
}
//// [es6ModuleConst.js]
export const a = "hello";
export const x = a, y = x;
const b = y;
const c = b, d = c;
var m1;
(function (m1) {
m1.k = a;
m1.l = b, m1.m = m1.k;
const n = m1.k;
const o = n, p = m1.k;
})(m1 = m1 || (m1 = {}));
var m2;
(function (m2) {
m2.k = a;
m2.l = b, m2.m = m2.k;
const n = m1.k;
const o = n, p = m2.k;
})(m2 || (m2 = {}));

View File

@ -0,0 +1,70 @@
=== tests/cases/compiler/es6ModuleConst.ts ===
export const a = "hello";
>a : string
export const x: string = a, y = x;
>x : string
>a : string
>y : string
>x : string
const b = y;
>b : string
>y : string
const c: string = b, d = c;
>c : string
>b : string
>d : string
>c : string
export module m1 {
>m1 : typeof m1
export const k = a;
>k : string
>a : string
export const l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
const n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
const o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}
module m2 {
>m2 : typeof m2
export const k = a;
>k : string
>a : string
export const l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
const n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
const o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}

View File

@ -0,0 +1,37 @@
//// [es6ModuleLet.ts]
export let a = "hello";
export let x: string = a, y = x;
let b = y;
let c: string = b, d = c;
export module m1 {
export let k = a;
export let l: string = b, m = k;
let n = m1.k;
let o: string = n, p = k;
}
module m2 {
export let k = a;
export let l: string = b, m = k;
let n = m1.k;
let o: string = n, p = k;
}
//// [es6ModuleLet.js]
export let a = "hello";
export let x = a, y = x;
let b = y;
let c = b, d = c;
var m1;
(function (m1) {
m1.k = a;
m1.l = b, m1.m = m1.k;
let n = m1.k;
let o = n, p = m1.k;
})(m1 = m1 || (m1 = {}));
var m2;
(function (m2) {
m2.k = a;
m2.l = b, m2.m = m2.k;
let n = m1.k;
let o = n, p = m2.k;
})(m2 || (m2 = {}));

View File

@ -0,0 +1,70 @@
=== tests/cases/compiler/es6ModuleLet.ts ===
export let a = "hello";
>a : string
export let x: string = a, y = x;
>x : string
>a : string
>y : string
>x : string
let b = y;
>b : string
>y : string
let c: string = b, d = c;
>c : string
>b : string
>d : string
>c : string
export module m1 {
>m1 : typeof m1
export let k = a;
>k : string
>a : string
export let l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
let n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
let o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}
module m2 {
>m2 : typeof m2
export let k = a;
>k : string
>a : string
export let l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
let n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
let o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}

View File

@ -0,0 +1,37 @@
//// [es6ModuleVariableStatement.ts]
export var a = "hello";
export var x: string = a, y = x;
var b = y;
var c: string = b, d = c;
export module m1 {
export var k = a;
export var l: string = b, m = k;
var n = m1.k;
var o: string = n, p = k;
}
module m2 {
export var k = a;
export var l: string = b, m = k;
var n = m1.k;
var o: string = n, p = k;
}
//// [es6ModuleVariableStatement.js]
export var a = "hello";
export var x = a, y = x;
var b = y;
var c = b, d = c;
var m1;
(function (m1) {
m1.k = a;
m1.l = b, m1.m = m1.k;
var n = m1.k;
var o = n, p = m1.k;
})(m1 = m1 || (m1 = {}));
var m2;
(function (m2) {
m2.k = a;
m2.l = b, m2.m = m2.k;
var n = m1.k;
var o = n, p = m2.k;
})(m2 || (m2 = {}));

View File

@ -0,0 +1,70 @@
=== tests/cases/compiler/es6ModuleVariableStatement.ts ===
export var a = "hello";
>a : string
export var x: string = a, y = x;
>x : string
>a : string
>y : string
>x : string
var b = y;
>b : string
>y : string
var c: string = b, d = c;
>c : string
>b : string
>d : string
>c : string
export module m1 {
>m1 : typeof m1
export var k = a;
>k : string
>a : string
export var l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
var n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
var o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}
module m2 {
>m2 : typeof m2
export var k = a;
>k : string
>a : string
export var l: string = b, m = k;
>l : string
>b : string
>m : string
>k : string
var n = m1.k;
>n : string
>m1.k : string
>m1 : typeof m1
>k : string
var o: string = n, p = k;
>o : string
>n : string
>p : string
>k : string
}

View File

@ -0,0 +1,17 @@
// @target: ES6
export const a = "hello";
export const x: string = a, y = x;
const b = y;
const c: string = b, d = c;
export module m1 {
export const k = a;
export const l: string = b, m = k;
const n = m1.k;
const o: string = n, p = k;
}
module m2 {
export const k = a;
export const l: string = b, m = k;
const n = m1.k;
const o: string = n, p = k;
}

View File

@ -0,0 +1,17 @@
// @target: ES6
export let a = "hello";
export let x: string = a, y = x;
let b = y;
let c: string = b, d = c;
export module m1 {
export let k = a;
export let l: string = b, m = k;
let n = m1.k;
let o: string = n, p = k;
}
module m2 {
export let k = a;
export let l: string = b, m = k;
let n = m1.k;
let o: string = n, p = k;
}

View File

@ -0,0 +1,17 @@
// @target: ES6
export var a = "hello";
export var x: string = a, y = x;
var b = y;
var c: string = b, d = c;
export module m1 {
export var k = a;
export var l: string = b, m = k;
var n = m1.k;
var o: string = n, p = k;
}
module m2 {
export var k = a;
export var l: string = b, m = k;
var n = m1.k;
var o: string = n, p = k;
}