Enable declaration emit for import * as ns from "mod" syntax

This commit is contained in:
Sheetal Nandi 2015-02-10 14:36:54 -08:00
parent 6ac1bcca08
commit 96139ca4d8
16 changed files with 213 additions and 4 deletions

View file

@ -773,6 +773,16 @@ module ts {
write("export ");
}
write("import ");
if (node.importClause) {
if (node.importClause.namedBindings) {
if (node.importClause.namedBindings.kind === SyntaxKind.NamespaceImport) {
write("* as ");
writeTextOfNode(currentSourceFile,(<NamespaceImport>node.importClause.namedBindings).name);
write(" ");
}
}
write("from ");
}
writeTextOfNode(currentSourceFile, node.moduleSpecifier);
write(";");
writer.writeLine();

View file

@ -5,8 +5,20 @@
export var a = 10;
//// [es6ImportNameSpaceImport_1.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0"; // elide this
//// [es6ImportNameSpaceImport_0.js]
exports.a = 10;
//// [es6ImportNameSpaceImport_1.js]
var nameSpaceBinding = require("es6ImportNameSpaceImport_0");
var x = nameSpaceBinding.a;
//// [es6ImportNameSpaceImport_0.d.ts]
export declare var a: number;
//// [es6ImportNameSpaceImport_1.d.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0";

View file

@ -7,3 +7,12 @@ export var a = 10;
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
>nameSpaceBinding : typeof nameSpaceBinding
var x = nameSpaceBinding.a;
>x : number
>nameSpaceBinding.a : number
>nameSpaceBinding : typeof nameSpaceBinding
>a : number
import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0"; // elide this
>nameSpaceBinding2 : typeof nameSpaceBinding

View file

@ -0,0 +1,27 @@
//// [tests/cases/compiler/es6ImportNameSpaceImportAmd.ts] ////
//// [es6ImportNameSpaceImportAmd_0.ts]
export var a = 10;
//// [es6ImportNameSpaceImportAmd_1.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0"; // elide this
//// [es6ImportNameSpaceImportAmd_0.js]
define(["require", "exports"], function (require, exports) {
exports.a = 10;
});
//// [es6ImportNameSpaceImportAmd_1.js]
define(["require", "exports", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) {
var x = nameSpaceBinding.a;
});
//// [es6ImportNameSpaceImportAmd_0.d.ts]
export declare var a: number;
//// [es6ImportNameSpaceImportAmd_1.d.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0";
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0";

View file

@ -0,0 +1,18 @@
=== tests/cases/compiler/es6ImportNameSpaceImportAmd_0.ts ===
export var a = 10;
>a : number
=== tests/cases/compiler/es6ImportNameSpaceImportAmd_1.ts ===
import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0";
>nameSpaceBinding : typeof nameSpaceBinding
var x = nameSpaceBinding.a;
>x : number
>nameSpaceBinding.a : number
>nameSpaceBinding : typeof nameSpaceBinding
>a : number
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0"; // elide this
>nameSpaceBinding2 : typeof nameSpaceBinding

View file

@ -5,8 +5,20 @@
export var a = 10;
//// [es6ImportNameSpaceImportInEs5_1.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this
//// [es6ImportNameSpaceImportInEs5_0.js]
exports.a = 10;
//// [es6ImportNameSpaceImportInEs5_1.js]
var nameSpaceBinding = require("es6ImportNameSpaceImportInEs5_0");
var x = nameSpaceBinding.a;
//// [es6ImportNameSpaceImportInEs5_0.d.ts]
export declare var a: number;
//// [es6ImportNameSpaceImportInEs5_1.d.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0";

View file

@ -7,3 +7,12 @@ export var a = 10;
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
>nameSpaceBinding : typeof nameSpaceBinding
var x = nameSpaceBinding.a;
>x : number
>nameSpaceBinding.a : number
>nameSpaceBinding : typeof nameSpaceBinding
>a : number
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this
>nameSpaceBinding2 : typeof nameSpaceBinding

View file

@ -0,0 +1,25 @@
tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(4,13): error TS2300: Duplicate identifier 'nameSpaceBinding1'.
tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(5,13): error TS2300: Duplicate identifier 'nameSpaceBinding1'.
tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(7,8): error TS2440: Import declaration conflicts with local declaration of 'nameSpaceBinding3'
==== tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_0.ts (0 errors) ====
export var a = 10;
==== tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts (3 errors) ====
import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0";
interface nameSpaceBinding { } // this should be ok
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
~~~~~~~~~~~~~~~~~
!!! error TS2300: Duplicate identifier 'nameSpaceBinding1'.
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
~~~~~~~~~~~~~~~~~
!!! error TS2300: Duplicate identifier 'nameSpaceBinding1'.
import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2440: Import declaration conflicts with local declaration of 'nameSpaceBinding3'
var nameSpaceBinding3 = 10;

View file

@ -0,0 +1,21 @@
//// [tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts] ////
//// [es6ImportNameSpaceImportMergeErrors_0.ts]
export var a = 10;
//// [es6ImportNameSpaceImportMergeErrors_1.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0";
interface nameSpaceBinding { } // this should be ok
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
var nameSpaceBinding3 = 10;
//// [es6ImportNameSpaceImportMergeErrors_0.js]
exports.a = 10;
//// [es6ImportNameSpaceImportMergeErrors_1.js]
var nameSpaceBinding3 = 10;

View file

@ -0,0 +1,14 @@
//// [tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts] ////
//// [es6ImportNameSpaceImportNoNamedExports_0.ts]
var a = 10;
export = a;
//// [es6ImportNameSpaceImportNoNamedExports_1.ts]
import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error
//// [es6ImportNameSpaceImportNoNamedExports_0.js]
var a = 10;
module.exports = a;
//// [es6ImportNameSpaceImportNoNamedExports_1.js]

View file

@ -0,0 +1,12 @@
=== tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_0.ts ===
var a = 10;
>a : number
export = a;
>a : number
=== tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_1.ts ===
import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error
>nameSpaceBinding : typeof nameSpaceBinding

View file

@ -1,8 +1,11 @@
// @target: es6
// @module: commonjs
// @declaration: true
// @filename: es6ImportNameSpaceImport_0.ts
export var a = 10;
// @filename: es6ImportNameSpaceImport_1.ts
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
import * as nameSpaceBinding from "es6ImportNameSpaceImport_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0"; // elide this

View file

@ -0,0 +1,10 @@
// @module: amd
// @declaration: true
// @filename: es6ImportNameSpaceImportAmd_0.ts
export var a = 10;
// @filename: es6ImportNameSpaceImportAmd_1.ts
import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0"; // elide this

View file

@ -1,8 +1,11 @@
// @target: es5
// @module: commonjs
// @declaration: true
// @filename: es6ImportNameSpaceImportInEs5_0.ts
export var a = 10;
// @filename: es6ImportNameSpaceImportInEs5_1.ts
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0";
var x = nameSpaceBinding.a;
import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this

View file

@ -0,0 +1,15 @@
// @target: es6
// @module: commonjs
// @filename: es6ImportNameSpaceImportMergeErrors_0.ts
export var a = 10;
// @filename: es6ImportNameSpaceImportMergeErrors_1.ts
import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0";
interface nameSpaceBinding { } // this should be ok
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error
var nameSpaceBinding3 = 10;

View file

@ -0,0 +1,9 @@
// @target: es6
// @module: commonjs
// @filename: es6ImportNameSpaceImportNoNamedExports_0.ts
var a = 10;
export = a;
// @filename: es6ImportNameSpaceImportNoNamedExports_1.ts
import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error