Merge pull request #2557 from Microsoft/exportEqualsDtsFix

Ensure export= is emitted correctelly in declaration files
This commit is contained in:
Mohamed Hegazy 2015-03-31 20:39:15 -07:00
commit 4577959246
11 changed files with 113 additions and 28 deletions

View file

@ -1109,7 +1109,7 @@ module ts {
// Check if symbol is any of the alias
return forEachValue(symbols, symbolFromSymbolTable => {
if (symbolFromSymbolTable.flags & SymbolFlags.Alias) {
if (symbolFromSymbolTable.flags & SymbolFlags.Alias && symbolFromSymbolTable.name !== "export=") {
if (!useOnlyExternalAliasing || // We can use any type of alias to get the name
// Is this external alias, then use it to name
ts.forEach(symbolFromSymbolTable.declarations, isExternalModuleImportEqualsDeclaration)) {
@ -1950,6 +1950,10 @@ module ts {
case SyntaxKind.SourceFile:
return true;
// Export assignements do not create name bindings outside the module
case SyntaxKind.ExportAssignment:
return false;
default:
Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind);
}

View file

@ -42,23 +42,23 @@ module m2 {
}
var m2: {
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }
(): m2.connectExport;
>m2 : unknown
>connectExport : export=.connectExport
>connectExport : m2.connectExport
test1: m2.connectModule;
>test1 : export=.connectModule
>test1 : m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
test2(): m2.connectModule;
>test2 : () => export=.connectModule
>test2 : () => m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
};
export = m2;
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }

View file

@ -7,7 +7,7 @@ declare module "express" {
function express(): express.ExpressServer;
>express : typeof express
>express : unknown
>ExpressServer : export=.ExpressServer
>ExpressServer : express.ExpressServer
module express {
>express : typeof express

View file

@ -27,24 +27,24 @@ module m2 {
}
var m2: {
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }
(): m2.connectExport;
>m2 : unknown
>connectExport : export=.connectExport
>connectExport : m2.connectExport
test1: m2.connectModule;
>test1 : export=.connectModule
>test1 : m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
test2(): m2.connectModule;
>test2 : () => export=.connectModule
>test2 : () => m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
};
export = m2;
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }

View file

@ -28,24 +28,24 @@ module m2 {
var x = 10, m2: {
>x : number
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }
(): m2.connectExport;
>m2 : unknown
>connectExport : export=.connectExport
>connectExport : m2.connectExport
test1: m2.connectModule;
>test1 : export=.connectModule
>test1 : m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
test2(): m2.connectModule;
>test2 : () => export=.connectModule
>test2 : () => m2.connectModule
>m2 : unknown
>connectModule : export=.connectModule
>connectModule : m2.connectModule
};
export = m2;
>m2 : { (): export=.connectExport; test1: export=.connectModule; test2(): export=.connectModule; }
>m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; }

View file

@ -0,0 +1,37 @@
//// [es5ExportEqualsDts.ts]
class A {
foo() {
var aVal: A.B;
return aVal;
}
}
module A {
export interface B { }
}
export = A
//// [es5ExportEqualsDts.js]
var A = (function () {
function A() {
}
A.prototype.foo = function () {
var aVal;
return aVal;
};
return A;
})();
module.exports = A;
//// [es5ExportEqualsDts.d.ts]
declare class A {
foo(): A.B;
}
declare module A {
interface B {
}
}
export = A;

View file

@ -0,0 +1,28 @@
=== tests/cases/compiler/es5ExportEqualsDts.ts ===
class A {
>A : A
foo() {
>foo : () => A.B
var aVal: A.B;
>aVal : A.B
>A : unknown
>B : A.B
return aVal;
>aVal : A.B
}
}
module A {
>A : typeof A
export interface B { }
>B : B
}
export = A
>A : A

View file

@ -22,9 +22,9 @@ class Foo {
>Foo : Foo
x: Foo.Bar;
>x : export=.Bar
>x : Foo.Bar
>Foo : unknown
>Bar : export=.Bar
>Bar : Foo.Bar
}
module Foo {
>Foo : typeof Foo

View file

@ -12,7 +12,7 @@ interface server {
(): server.Server;
>server : unknown
>Server : export=.Server
>Server : server.Server
startTime: Date;
>startTime : Date

View file

@ -12,9 +12,9 @@ interface Foo<T> {
>T : T
}
var Foo: new () => Foo.A<Foo<string>>;
>Foo : new () => export=.A<Foo<string>>
>Foo : new () => Foo.A<Foo<string>>
>Foo : unknown
>A : export=.A<T>
>A : Foo.A<T>
>Foo : Foo<T>
export = Foo;

View file

@ -0,0 +1,16 @@
// @target: es5
// @module: commonjs
// @declaration: true
class A {
foo() {
var aVal: A.B;
return aVal;
}
}
module A {
export interface B { }
}
export = A