@@ -425,11 +425,16 @@ impl ModuleLexer {
425425 }
426426
427427 // var foo = module.exports = {};
428- // foo === module.exports;
429- fn try_to_mark_exports_alias ( & mut self , decl : & VarDeclarator ) {
428+ // var foo = module.exports;
429+ // var foo = exports;
430+ fn mark_exports_alias_from_var_decl ( & mut self , decl : & VarDeclarator ) {
430431 if let Pat :: Ident ( id) = & decl. name {
431432 if let Some ( init) = & decl. init {
432- if is_member ( init, "module" , "exports" ) {
433+ if let Expr :: Ident ( init_id) = init. as_ref ( ) {
434+ if init_id. sym . as_ref ( ) . eq ( "exports" ) {
435+ self . exports_alias . insert ( id. sym . as_ref ( ) . to_owned ( ) ) ;
436+ }
437+ } else if is_member ( init, "module" , "exports" ) {
433438 self . exports_alias . insert ( id. id . sym . as_ref ( ) . to_owned ( ) ) ;
434439 } else if let Expr :: Assign ( assign) = init. as_ref ( ) {
435440 if let Some ( member) = get_member_expr_from_assign_target ( & assign. left ) {
@@ -845,7 +850,7 @@ impl ModuleLexer {
845850 Stmt :: Decl ( decl) => match decl {
846851 Decl :: Var ( var) => {
847852 for decl in & var. decls {
848- self . try_to_mark_exports_alias ( decl) ;
853+ self . mark_exports_alias_from_var_decl ( decl) ;
849854 match & decl. name {
850855 Pat :: Ident ( BindingIdent { id, .. } ) => {
851856 let id = id. sym . as_ref ( ) ;
@@ -1227,7 +1232,7 @@ impl ModuleLexer {
12271232 // var foo = exports.foo = "bar"
12281233 Stmt :: Decl ( Decl :: Var ( var) ) => {
12291234 for decl in var. as_ref ( ) . decls . iter ( ) {
1230- self . try_to_mark_exports_alias ( decl) ;
1235+ self . mark_exports_alias_from_var_decl ( decl) ;
12311236 if let Some ( init_expr) = & decl. init {
12321237 if let Some ( name) = self . get_export_name_from_bin_expr ( init_expr) {
12331238 self . named_exports . insert ( name) ;
0 commit comments