@@ -14,6 +14,7 @@ import { getWrapEnumsTransformer } from './wrap-enums';
1414const transform = ( content : string ) => transformJavascript (
1515 { content, getTransforms : [ getWrapEnumsTransformer ] } ) . content ;
1616
17+ // tslint:disable-next-line:no-big-function
1718describe ( 'wrap-enums' , ( ) => {
1819 it ( 'wraps ts 2.2 enums in IIFE' , ( ) => {
1920 const input = tags . stripIndent `
@@ -37,7 +38,7 @@ describe('wrap-enums', () => {
3738 expect ( tags . oneLine `${ transform ( input ) } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
3839 } ) ;
3940
40- it ( 'wraps ts 2.3 - 2.6 enums in IIFE' , ( ) => {
41+ it ( 'wraps ts > 2.3 enums in IIFE' , ( ) => {
4142 const input = tags . stripIndent `
4243 export var ChangeDetectionStrategy;
4344 (function (ChangeDetectionStrategy) {
@@ -56,7 +57,7 @@ describe('wrap-enums', () => {
5657 expect ( tags . oneLine `${ transform ( input ) } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
5758 } ) ;
5859
59- it ( 'wraps ts 2.3 - 2.6 enums in IIFE, even if they have funny numbers' , ( ) => {
60+ it ( 'wraps ts > 2.3 enums in IIFE, even if they have funny numbers' , ( ) => {
6061 const input = tags . stripIndent `
6162 export var AnimatorControlState;
6263 (function (AnimatorControlState) {
@@ -79,6 +80,61 @@ describe('wrap-enums', () => {
7980 expect ( tags . oneLine `${ transform ( input ) } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
8081 } ) ;
8182
83+ it ( 'wraps ts >2.3 enums in IIFE, even if they were renamed due to scope hoisting' , ( ) => {
84+ const input = tags . stripIndent `
85+ var TokenType$1;
86+ (function (TokenType) {
87+ TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START";
88+ TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END";
89+ TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID";
90+ TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE";
91+ TokenType[TokenType["TEXT"] = 4] = "TEXT";
92+ TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT";
93+ TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT";
94+ TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START";
95+ TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END";
96+ TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START";
97+ TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END";
98+ TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME";
99+ TokenType[TokenType["ATTR_VALUE"] = 12] = "ATTR_VALUE";
100+ TokenType[TokenType["DOC_TYPE"] = 13] = "DOC_TYPE";
101+ TokenType[TokenType["EXPANSION_FORM_START"] = 14] = "EXPANSION_FORM_START";
102+ TokenType[TokenType["EXPANSION_CASE_VALUE"] = 15] = "EXPANSION_CASE_VALUE";
103+ TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 16] = "EXPANSION_CASE_EXP_START";
104+ TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 17] = "EXPANSION_CASE_EXP_END";
105+ TokenType[TokenType["EXPANSION_FORM_END"] = 18] = "EXPANSION_FORM_END";
106+ TokenType[TokenType["EOF"] = 19] = "EOF";
107+ })(TokenType$1 || (TokenType$1 = {}));
108+ ` ;
109+ const output = tags . stripIndent `
110+ var TokenType$1 = /*@__PURE__*/ (function (TokenType) {
111+ TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START";
112+ TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END";
113+ TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID";
114+ TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE";
115+ TokenType[TokenType["TEXT"] = 4] = "TEXT";
116+ TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT";
117+ TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT";
118+ TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START";
119+ TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END";
120+ TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START";
121+ TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END";
122+ TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME";
123+ TokenType[TokenType["ATTR_VALUE"] = 12] = "ATTR_VALUE";
124+ TokenType[TokenType["DOC_TYPE"] = 13] = "DOC_TYPE";
125+ TokenType[TokenType["EXPANSION_FORM_START"] = 14] = "EXPANSION_FORM_START";
126+ TokenType[TokenType["EXPANSION_CASE_VALUE"] = 15] = "EXPANSION_CASE_VALUE";
127+ TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 16] = "EXPANSION_CASE_EXP_START";
128+ TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 17] = "EXPANSION_CASE_EXP_END";
129+ TokenType[TokenType["EXPANSION_FORM_END"] = 18] = "EXPANSION_FORM_END";
130+ TokenType[TokenType["EOF"] = 19] = "EOF";
131+ return TokenType;
132+ })({});
133+ ` ;
134+
135+ expect ( tags . oneLine `${ transform ( input ) } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
136+ } ) ;
137+
82138 it ( 'wraps tsickle enums in IIFE' , ( ) => {
83139 const input = tags . stripIndent `
84140 /** @enum {number} */
0 commit comments