Add test to verify reexported const enums are elided

This commit is contained in:
Evan Cahill
2019-10-24 18:01:22 -07:00
parent 857e7c43a2
commit 6e0da2b563
4 changed files with 223 additions and 0 deletions
@@ -0,0 +1,59 @@
//// [tests/cases/compiler/constEnumNoEmitReexport.ts] ////
//// [ConstEnum.ts]
export const enum MyConstEnum {
Foo,
Bar
};
//// [ImportExport.ts]
import { MyConstEnum } from './ConstEnum';
export { MyConstEnum };
//// [ImportExportDefault.ts]
import { MyConstEnum } from './ConstEnum';
export default MyConstEnum;
//// [ReExportDefault.ts]
export { MyConstEnum as default } from './ConstEnum';
//// [ReExport.ts]
export { MyConstEnum } from './ConstEnum';
//// [Usage1.ts]
import MyConstEnum1 from './ImportExportDefault';
import MyConstEnum2 from './ReExportDefault';
MyConstEnum1.Foo;
MyConstEnum2.Foo;
//// [Usage2.ts]
import { MyConstEnum } from './ImportExport';
MyConstEnum.Foo;
//// [Usage3.ts]
import { MyConstEnum } from './ReExport';
MyConstEnum.Foo;
//// [ConstEnum.js]
"use strict";
exports.__esModule = true;
;
//// [ImportExport.js]
"use strict";
exports.__esModule = true;
//// [ImportExportDefault.js]
"use strict";
exports.__esModule = true;
//// [ReExportDefault.js]
"use strict";
exports.__esModule = true;
//// [ReExport.js]
"use strict";
exports.__esModule = true;
//// [Usage1.js]
"use strict";
exports.__esModule = true;
0 /* Foo */;
0 /* Foo */;
//// [Usage2.js]
"use strict";
exports.__esModule = true;
0 /* Foo */;
//// [Usage3.js]
"use strict";
exports.__esModule = true;
0 /* Foo */;
@@ -0,0 +1,69 @@
=== tests/cases/compiler/ConstEnum.ts ===
export const enum MyConstEnum {
>MyConstEnum : Symbol(MyConstEnum, Decl(ConstEnum.ts, 0, 0))
Foo,
>Foo : Symbol(MyConstEnum.Foo, Decl(ConstEnum.ts, 0, 31))
Bar
>Bar : Symbol(MyConstEnum.Bar, Decl(ConstEnum.ts, 1, 8))
};
=== tests/cases/compiler/ImportExport.ts ===
import { MyConstEnum } from './ConstEnum';
>MyConstEnum : Symbol(MyConstEnum, Decl(ImportExport.ts, 0, 8))
export { MyConstEnum };
>MyConstEnum : Symbol(MyConstEnum, Decl(ImportExport.ts, 1, 8))
=== tests/cases/compiler/ImportExportDefault.ts ===
import { MyConstEnum } from './ConstEnum';
>MyConstEnum : Symbol(MyConstEnum, Decl(ImportExportDefault.ts, 0, 8))
export default MyConstEnum;
>MyConstEnum : Symbol(MyConstEnum, Decl(ImportExportDefault.ts, 0, 8))
=== tests/cases/compiler/ReExportDefault.ts ===
export { MyConstEnum as default } from './ConstEnum';
>MyConstEnum : Symbol(MyConstEnum, Decl(ConstEnum.ts, 0, 0))
>default : Symbol(default, Decl(ReExportDefault.ts, 0, 8))
=== tests/cases/compiler/ReExport.ts ===
export { MyConstEnum } from './ConstEnum';
>MyConstEnum : Symbol(MyConstEnum, Decl(ReExport.ts, 0, 8))
=== tests/cases/compiler/Usage1.ts ===
import MyConstEnum1 from './ImportExportDefault';
>MyConstEnum1 : Symbol(MyConstEnum1, Decl(Usage1.ts, 0, 6))
import MyConstEnum2 from './ReExportDefault';
>MyConstEnum2 : Symbol(MyConstEnum2, Decl(Usage1.ts, 1, 6))
MyConstEnum1.Foo;
>MyConstEnum1.Foo : Symbol(MyConstEnum1.Foo, Decl(ConstEnum.ts, 0, 31))
>MyConstEnum1 : Symbol(MyConstEnum1, Decl(Usage1.ts, 0, 6))
>Foo : Symbol(MyConstEnum1.Foo, Decl(ConstEnum.ts, 0, 31))
MyConstEnum2.Foo;
>MyConstEnum2.Foo : Symbol(MyConstEnum1.Foo, Decl(ConstEnum.ts, 0, 31))
>MyConstEnum2 : Symbol(MyConstEnum2, Decl(Usage1.ts, 1, 6))
>Foo : Symbol(MyConstEnum1.Foo, Decl(ConstEnum.ts, 0, 31))
=== tests/cases/compiler/Usage2.ts ===
import { MyConstEnum } from './ImportExport';
>MyConstEnum : Symbol(MyConstEnum, Decl(Usage2.ts, 0, 8))
MyConstEnum.Foo;
>MyConstEnum.Foo : Symbol(MyConstEnum.Foo, Decl(ConstEnum.ts, 0, 31))
>MyConstEnum : Symbol(MyConstEnum, Decl(Usage2.ts, 0, 8))
>Foo : Symbol(MyConstEnum.Foo, Decl(ConstEnum.ts, 0, 31))
=== tests/cases/compiler/Usage3.ts ===
import { MyConstEnum } from './ReExport';
>MyConstEnum : Symbol(MyConstEnum, Decl(Usage3.ts, 0, 8))
MyConstEnum.Foo;
>MyConstEnum.Foo : Symbol(MyConstEnum.Foo, Decl(ConstEnum.ts, 0, 31))
>MyConstEnum : Symbol(MyConstEnum, Decl(Usage3.ts, 0, 8))
>Foo : Symbol(MyConstEnum.Foo, Decl(ConstEnum.ts, 0, 31))
@@ -0,0 +1,69 @@
=== tests/cases/compiler/ConstEnum.ts ===
export const enum MyConstEnum {
>MyConstEnum : MyConstEnum
Foo,
>Foo : MyConstEnum.Foo
Bar
>Bar : MyConstEnum.Bar
};
=== tests/cases/compiler/ImportExport.ts ===
import { MyConstEnum } from './ConstEnum';
>MyConstEnum : typeof MyConstEnum
export { MyConstEnum };
>MyConstEnum : typeof MyConstEnum
=== tests/cases/compiler/ImportExportDefault.ts ===
import { MyConstEnum } from './ConstEnum';
>MyConstEnum : typeof MyConstEnum
export default MyConstEnum;
>MyConstEnum : MyConstEnum
=== tests/cases/compiler/ReExportDefault.ts ===
export { MyConstEnum as default } from './ConstEnum';
>MyConstEnum : typeof import("tests/cases/compiler/ConstEnum").MyConstEnum
>default : typeof import("tests/cases/compiler/ConstEnum").MyConstEnum
=== tests/cases/compiler/ReExport.ts ===
export { MyConstEnum } from './ConstEnum';
>MyConstEnum : typeof import("tests/cases/compiler/ConstEnum").MyConstEnum
=== tests/cases/compiler/Usage1.ts ===
import MyConstEnum1 from './ImportExportDefault';
>MyConstEnum1 : typeof MyConstEnum1
import MyConstEnum2 from './ReExportDefault';
>MyConstEnum2 : typeof MyConstEnum1
MyConstEnum1.Foo;
>MyConstEnum1.Foo : MyConstEnum1.Foo
>MyConstEnum1 : typeof MyConstEnum1
>Foo : MyConstEnum1.Foo
MyConstEnum2.Foo;
>MyConstEnum2.Foo : MyConstEnum1.Foo
>MyConstEnum2 : typeof MyConstEnum1
>Foo : MyConstEnum1.Foo
=== tests/cases/compiler/Usage2.ts ===
import { MyConstEnum } from './ImportExport';
>MyConstEnum : typeof MyConstEnum
MyConstEnum.Foo;
>MyConstEnum.Foo : MyConstEnum.Foo
>MyConstEnum : typeof MyConstEnum
>Foo : MyConstEnum.Foo
=== tests/cases/compiler/Usage3.ts ===
import { MyConstEnum } from './ReExport';
>MyConstEnum : typeof MyConstEnum
MyConstEnum.Foo;
>MyConstEnum.Foo : MyConstEnum.Foo
>MyConstEnum : typeof MyConstEnum
>Foo : MyConstEnum.Foo
@@ -0,0 +1,26 @@
// @filename: ConstEnum.ts
export const enum MyConstEnum {
Foo,
Bar
};
// @filename: ImportExport.ts
import { MyConstEnum } from './ConstEnum';
export { MyConstEnum };
// @filename: ImportExportDefault.ts
import { MyConstEnum } from './ConstEnum';
export default MyConstEnum;
// @filename: ReExportDefault.ts
export { MyConstEnum as default } from './ConstEnum';
// @filename: ReExport.ts
export { MyConstEnum } from './ConstEnum';
// @filename: Usage1.ts
import MyConstEnum1 from './ImportExportDefault';
import MyConstEnum2 from './ReExportDefault';
MyConstEnum1.Foo;
MyConstEnum2.Foo;
// @filename: Usage2.ts
import { MyConstEnum } from './ImportExport';
MyConstEnum.Foo;
// @filename: Usage3.ts
import { MyConstEnum } from './ReExport';
MyConstEnum.Foo;