@@ -425,11 +425,16 @@ impl ModuleLexer {
425
425
}
426
426
427
427
// 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 ) {
430
431
if let Pat :: Ident ( id) = & decl. name {
431
432
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" ) {
433
438
self . exports_alias . insert ( id. id . sym . as_ref ( ) . to_owned ( ) ) ;
434
439
} else if let Expr :: Assign ( assign) = init. as_ref ( ) {
435
440
if let Some ( member) = get_member_expr_from_assign_target ( & assign. left ) {
@@ -845,7 +850,7 @@ impl ModuleLexer {
845
850
Stmt :: Decl ( decl) => match decl {
846
851
Decl :: Var ( var) => {
847
852
for decl in & var. decls {
848
- self . try_to_mark_exports_alias ( decl) ;
853
+ self . mark_exports_alias_from_var_decl ( decl) ;
849
854
match & decl. name {
850
855
Pat :: Ident ( BindingIdent { id, .. } ) => {
851
856
let id = id. sym . as_ref ( ) ;
@@ -1227,7 +1232,7 @@ impl ModuleLexer {
1227
1232
// var foo = exports.foo = "bar"
1228
1233
Stmt :: Decl ( Decl :: Var ( var) ) => {
1229
1234
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) ;
1231
1236
if let Some ( init_expr) = & decl. init {
1232
1237
if let Some ( name) = self . get_export_name_from_bin_expr ( init_expr) {
1233
1238
self . named_exports . insert ( name) ;
0 commit comments