@@ -105,6 +105,7 @@ import {
105105 AST_ObjectKeyVal ,
106106 AST_ObjectProperty ,
107107 AST_ObjectSetter ,
108+ AST_ParenthesizedExpression ,
108109 AST_PrefixedTemplateString ,
109110 AST_PropAccess ,
110111 AST_RegExp ,
@@ -295,6 +296,16 @@ import {
295296 body : from_moz ( M . expression )
296297 } ) ;
297298 } ,
299+ // XXX Emscripten localmod: Add a node type for a parenthesized expression so that we can retain
300+ // Closure annotations that need a form "/**annotation*/(expression)"
301+ ParenthesizedExpression : function ( M ) {
302+ return new AST_ParenthesizedExpression ( {
303+ start : my_start_token ( M ) ,
304+ end : my_end_token ( M ) ,
305+ body : from_moz ( M . expression )
306+ } ) ;
307+ } ,
308+ // XXX End Emscripten localmod
298309 TryStatement : function ( M ) {
299310 var handlers = M . handlers || [ M . handler ] ;
300311 if ( handlers . length > 1 || M . guardedHandlers && M . guardedHandlers . length ) {
@@ -402,7 +413,14 @@ import {
402413 return from_moz ( prop ) ;
403414 }
404415 prop . type = "Property" ;
405- return from_moz ( prop ) ;
416+ // XXX EMSCRIPTEN preserve quoted properties
417+ // https://github.com/mishoo/UglifyJS2/pull/3323
418+ var ret = from_moz ( prop ) ;
419+ if ( prop . key . type === "Literal" &&
420+ ( prop . key . raw [ 0 ] === '"' || prop . key . raw [ 0 ] === "'" ) ) {
421+ ret . quote = true ;
422+ }
423+ return ret ;
406424 } )
407425 } ) ;
408426 } ,
@@ -575,6 +593,19 @@ import {
575593 end : my_end_token ( M ) ,
576594 value : M . value
577595 } ) ;
596+ } ,
597+ ImportExpression : function ( M ) {
598+ let import_token = my_start_token ( M ) ;
599+ return new AST_Call ( {
600+ start : import_token ,
601+ end : my_end_token ( M ) ,
602+ expression : new AST_SymbolRef ( {
603+ start : import_token ,
604+ end : import_token ,
605+ name : "import"
606+ } ) ,
607+ args : [ from_moz ( M . source ) ]
608+ } ) ;
578609 }
579610 } ;
580611
0 commit comments