-
Notifications
You must be signed in to change notification settings - Fork 12.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Allow
export =
and export default
to alias any EntityNameExpressi…
…on, not just identifiers.
- Loading branch information
Andy Hanson
committed
Jul 29, 2016
1 parent
97bbbd7
commit f9fd496
Showing
12 changed files
with
613 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,76 @@ | ||
//// [exportDefaultProperty.ts] | ||
export default "".length | ||
//// [tests/cases/compiler/exportDefaultProperty.ts] //// | ||
|
||
//// [declarations.d.ts] | ||
// This test is just like exportEqualsProperty, but with `export default`. | ||
|
||
declare namespace foo.bar { | ||
export type X = number; | ||
export const X: number; | ||
} | ||
|
||
declare module "foobar" { | ||
export default foo.bar; | ||
} | ||
|
||
declare module "foobarx" { | ||
export default foo.bar.X; | ||
} | ||
|
||
//// [exportDefaultProperty.js] | ||
//// [a.ts] | ||
namespace A { | ||
export class B { constructor(b: number) {} } | ||
export namespace B { export const b: number = 0; } | ||
} | ||
export default A.B; | ||
|
||
//// [b.ts] | ||
export default "foo".length; | ||
|
||
//// [index.ts] | ||
/// <reference path="declarations.d.ts" /> | ||
import fooBar from "foobar"; | ||
import X = fooBar.X; | ||
import X2 from "foobarx"; | ||
const x: X = X; | ||
const x2: X2 = X2; | ||
|
||
import B from "./a"; | ||
const b: B = new B(B.b); | ||
|
||
import fooLength from "./b"; | ||
fooLength + 1; | ||
|
||
|
||
//// [a.js] | ||
"use strict"; | ||
var A; | ||
(function (A) { | ||
var B = (function () { | ||
function B(b) { | ||
} | ||
return B; | ||
}()); | ||
A.B = B; | ||
var B; | ||
(function (B) { | ||
B.b = 0; | ||
})(B = A.B || (A.B = {})); | ||
})(A || (A = {})); | ||
exports.__esModule = true; | ||
exports["default"] = "".length; | ||
exports["default"] = A.B; | ||
//// [b.js] | ||
"use strict"; | ||
exports.__esModule = true; | ||
exports["default"] = "foo".length; | ||
//// [index.js] | ||
"use strict"; | ||
/// <reference path="declarations.d.ts" /> | ||
var foobar_1 = require("foobar"); | ||
var X = foobar_1["default"].X; | ||
var foobarx_1 = require("foobarx"); | ||
var x = X; | ||
var x2 = foobarx_1["default"]; | ||
var a_1 = require("./a"); | ||
var b = new a_1["default"](a_1["default"].b); | ||
var b_1 = require("./b"); | ||
b_1["default"] + 1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,92 @@ | ||
=== tests/cases/compiler/exportDefaultProperty.ts === | ||
export default "".length | ||
>"".length : Symbol(String.length, Decl(lib.d.ts, --, --)) | ||
=== tests/cases/compiler/index.ts === | ||
/// <reference path="declarations.d.ts" /> | ||
import fooBar from "foobar"; | ||
>fooBar : Symbol(fooBar, Decl(index.ts, 1, 6)) | ||
|
||
import X = fooBar.X; | ||
>X : Symbol(X, Decl(index.ts, 1, 28)) | ||
>fooBar : Symbol(fooBar, Decl(index.ts, 1, 6)) | ||
>X : Symbol(fooBar.X, Decl(declarations.d.ts, 2, 27), Decl(declarations.d.ts, 4, 16)) | ||
|
||
import X2 from "foobarx"; | ||
>X2 : Symbol(X2, Decl(index.ts, 3, 6)) | ||
|
||
const x: X = X; | ||
>x : Symbol(x, Decl(index.ts, 4, 5)) | ||
>X : Symbol(X, Decl(index.ts, 1, 28)) | ||
>X : Symbol(X, Decl(index.ts, 1, 28)) | ||
|
||
const x2: X2 = X2; | ||
>x2 : Symbol(x2, Decl(index.ts, 5, 5)) | ||
>X2 : Symbol(X2, Decl(index.ts, 3, 6)) | ||
>X2 : Symbol(X2, Decl(index.ts, 3, 6)) | ||
|
||
import B from "./a"; | ||
>B : Symbol(B, Decl(index.ts, 7, 6)) | ||
|
||
const b: B = new B(B.b); | ||
>b : Symbol(b, Decl(index.ts, 8, 5)) | ||
>B : Symbol(B, Decl(index.ts, 7, 6)) | ||
>B : Symbol(B, Decl(index.ts, 7, 6)) | ||
>B.b : Symbol(B.b, Decl(a.ts, 2, 37)) | ||
>B : Symbol(B, Decl(index.ts, 7, 6)) | ||
>b : Symbol(B.b, Decl(a.ts, 2, 37)) | ||
|
||
import fooLength from "./b"; | ||
>fooLength : Symbol(fooLength, Decl(index.ts, 10, 6)) | ||
|
||
fooLength + 1; | ||
>fooLength : Symbol(fooLength, Decl(index.ts, 10, 6)) | ||
|
||
=== tests/cases/compiler/declarations.d.ts === | ||
// This test is just like exportEqualsProperty, but with `export default`. | ||
|
||
declare namespace foo.bar { | ||
>foo : Symbol(foo, Decl(declarations.d.ts, 0, 0)) | ||
>bar : Symbol(bar, Decl(declarations.d.ts, 2, 22)) | ||
|
||
export type X = number; | ||
>X : Symbol(X, Decl(declarations.d.ts, 2, 27), Decl(declarations.d.ts, 4, 16)) | ||
|
||
export const X: number; | ||
>X : Symbol(X, Decl(declarations.d.ts, 2, 27), Decl(declarations.d.ts, 4, 16)) | ||
} | ||
|
||
declare module "foobar" { | ||
export default foo.bar; | ||
>foo.bar : Symbol(default, Decl(declarations.d.ts, 2, 22)) | ||
>foo : Symbol(foo, Decl(declarations.d.ts, 0, 0)) | ||
>bar : Symbol(default, Decl(declarations.d.ts, 2, 22)) | ||
} | ||
|
||
declare module "foobarx" { | ||
export default foo.bar.X; | ||
>foo.bar.X : Symbol(default, Decl(declarations.d.ts, 2, 27), Decl(declarations.d.ts, 4, 16)) | ||
>foo.bar : Symbol(foo.bar, Decl(declarations.d.ts, 2, 22)) | ||
>foo : Symbol(foo, Decl(declarations.d.ts, 0, 0)) | ||
>bar : Symbol(foo.bar, Decl(declarations.d.ts, 2, 22)) | ||
>X : Symbol(default, Decl(declarations.d.ts, 2, 27), Decl(declarations.d.ts, 4, 16)) | ||
} | ||
|
||
=== tests/cases/compiler/a.ts === | ||
namespace A { | ||
>A : Symbol(A, Decl(a.ts, 0, 0)) | ||
|
||
export class B { constructor(b: number) {} } | ||
>B : Symbol(B, Decl(a.ts, 0, 13), Decl(a.ts, 1, 48)) | ||
>b : Symbol(b, Decl(a.ts, 1, 33)) | ||
|
||
export namespace B { export const b: number = 0; } | ||
>B : Symbol(B, Decl(a.ts, 0, 13), Decl(a.ts, 1, 48)) | ||
>b : Symbol(b, Decl(a.ts, 2, 37)) | ||
} | ||
export default A.B; | ||
>A.B : Symbol(default, Decl(a.ts, 0, 13), Decl(a.ts, 1, 48)) | ||
>A : Symbol(A, Decl(a.ts, 0, 0)) | ||
>B : Symbol(default, Decl(a.ts, 0, 13), Decl(a.ts, 1, 48)) | ||
|
||
=== tests/cases/compiler/b.ts === | ||
export default "foo".length; | ||
>"foo".length : Symbol(String.length, Decl(lib.d.ts, --, --)) | ||
>length : Symbol(String.length, Decl(lib.d.ts, --, --)) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,97 @@ | ||
=== tests/cases/compiler/exportDefaultProperty.ts === | ||
export default "".length | ||
>"".length : number | ||
>"" : string | ||
=== tests/cases/compiler/index.ts === | ||
/// <reference path="declarations.d.ts" /> | ||
import fooBar from "foobar"; | ||
>fooBar : typeof fooBar | ||
|
||
import X = fooBar.X; | ||
>X : number | ||
>fooBar : typeof fooBar | ||
>X : number | ||
|
||
import X2 from "foobarx"; | ||
>X2 : number | ||
|
||
const x: X = X; | ||
>x : number | ||
>X : number | ||
>X : number | ||
|
||
const x2: X2 = X2; | ||
>x2 : number | ||
>X2 : number | ||
>X2 : number | ||
|
||
import B from "./a"; | ||
>B : typeof B | ||
|
||
const b: B = new B(B.b); | ||
>b : B | ||
>B : B | ||
>new B(B.b) : B | ||
>B : typeof B | ||
>B.b : number | ||
>B : typeof B | ||
>b : number | ||
|
||
import fooLength from "./b"; | ||
>fooLength : number | ||
|
||
fooLength + 1; | ||
>fooLength + 1 : number | ||
>fooLength : number | ||
>1 : number | ||
|
||
=== tests/cases/compiler/declarations.d.ts === | ||
// This test is just like exportEqualsProperty, but with `export default`. | ||
|
||
declare namespace foo.bar { | ||
>foo : typeof foo | ||
>bar : typeof bar | ||
|
||
export type X = number; | ||
>X : number | ||
|
||
export const X: number; | ||
>X : number | ||
} | ||
|
||
declare module "foobar" { | ||
export default foo.bar; | ||
>foo.bar : typeof default | ||
>foo : typeof foo | ||
>bar : typeof default | ||
} | ||
|
||
declare module "foobarx" { | ||
export default foo.bar.X; | ||
>foo.bar.X : number | ||
>foo.bar : typeof foo.bar | ||
>foo : typeof foo | ||
>bar : typeof foo.bar | ||
>X : number | ||
} | ||
|
||
=== tests/cases/compiler/a.ts === | ||
namespace A { | ||
>A : typeof A | ||
|
||
export class B { constructor(b: number) {} } | ||
>B : B | ||
>b : number | ||
|
||
export namespace B { export const b: number = 0; } | ||
>B : typeof B | ||
>b : number | ||
>0 : number | ||
} | ||
export default A.B; | ||
>A.B : typeof default | ||
>A : typeof A | ||
>B : typeof default | ||
|
||
=== tests/cases/compiler/b.ts === | ||
export default "foo".length; | ||
>"foo".length : number | ||
>"foo" : string | ||
>length : number | ||
|
Oops, something went wrong.