@@ -1267,6 +1267,7 @@ var {} = {{}};
12671267 }
12681268
12691269 let chunk_link = link. get_mut_unwrap ( & current_chunk) ;
1270+
12701271 match re_exports {
12711272 rspack_core:: ExportMode :: Missing
12721273 | rspack_core:: ExportMode :: LazyMake
@@ -1422,8 +1423,6 @@ var {} = {{}};
14221423 ) ;
14231424 }
14241425 rspack_core:: ExportMode :: NormalReexport ( mode) => {
1425- let exports_info = module_graph. get_exports_info ( & ref_module) ;
1426-
14271426 for item in mode. items {
14281427 let mut ref_module = orig_ref_module;
14291428
@@ -1439,34 +1438,21 @@ var {} = {{}};
14391438 continue ;
14401439 }
14411440
1442- let name = item. ids . first ( ) . unwrap_or ( & item. name ) ;
1443- let mut unknown_export_info = false ;
1444- let mut export_info =
1445- if let Some ( export_info) = exports_info. as_data ( module_graph) . named_exports ( name) {
1446- export_info
1447- } else {
1448- unknown_export_info = true ;
1449- // export info not found, this is likely because the export is from unknown
1450- item. export_info . as_data ( module_graph)
1451- } ;
1452-
1453- let resolved_target = get_target ( export_info, module_graph) ;
1441+ let item_export_info = item. export_info . as_data ( module_graph) ;
1442+ let resolved_target = get_target ( item_export_info, module_graph) ;
14541443
1455- let ids = match resolved_target {
1444+ let export_name = match resolved_target {
14561445 Some ( result) => {
14571446 ref_module = result. module ;
1458- if let Some ( export_name) = & result. export {
1459- export_info = module_graph
1460- . get_exports_info ( & ref_module)
1461- . as_data ( module_graph)
1462- . named_exports ( & export_name[ 0 ] )
1463- . unwrap_or ( export_info) ;
1464- export_name. clone ( )
1447+ if let Some ( export_name) = & result. export
1448+ && !export_name. is_empty ( )
1449+ {
1450+ export_name. first ( ) . unwrap_or ( & item. name ) . clone ( )
14651451 } else {
1466- item. ids . clone ( )
1452+ item. name . clone ( )
14671453 }
14681454 }
1469- None => item. ids . clone ( ) ,
1455+ None => item. name . clone ( ) ,
14701456 } ;
14711457
14721458 if ref_module != orig_ref_module
@@ -1486,7 +1472,7 @@ var {} = {{}};
14861472 & rspack_core:: ExportMode :: NormalReexport ( ExportModeNormalReexport {
14871473 items : vec ! [ NormalReexportItem {
14881474 name: item. name. clone( ) ,
1489- ids: ids . clone( ) ,
1475+ ids: vec! [ export_name . clone( ) ] ,
14901476 hidden: false ,
14911477 checked: item. checked,
14921478 export_info: item. export_info. clone( ) ,
@@ -1498,14 +1484,23 @@ var {} = {{}};
14981484 }
14991485
15001486 let chunk_link = link. get_mut_unwrap ( & current_chunk) ;
1501- let used_name = if unknown_export_info {
1502- UsedNameItem :: Str ( item. name . clone ( ) )
1503- } else {
1504- export_info. get_used_name ( None , None ) . unwrap_or_else ( || {
1487+
1488+ // Note that the export_info is current module's export info **NOT** ref module's export info
1489+ // so in order to find used name, we should go find the ref export info
1490+ let ref_exports_info = module_graph
1491+ . get_prefetched_exports_info ( & ref_module, PrefetchExportsInfoMode :: Default ) ;
1492+
1493+ let ref_export_info_tmp =
1494+ ref_exports_info. get_export_info_without_mut_module_graph ( & export_name) ;
1495+
1496+ let ref_export_info = ref_export_info_tmp. to_data ( ) ;
1497+
1498+ let used_name = ref_export_info
1499+ . get_used_name ( None , None )
1500+ . unwrap_or_else ( || {
15051501 // dynamic export
15061502 UsedNameItem :: Str ( item. name . clone ( ) )
1507- } )
1508- } ;
1503+ } ) ;
15091504
15101505 if let UsedNameItem :: Inlined ( inlined) = used_name {
15111506 let new_name = find_new_name ( & item. name , & chunk_link. used_names , & vec ! [ ] ) ;
@@ -1558,8 +1553,12 @@ var {} = {{}};
15581553 ) ;
15591554 }
15601555 ModuleInfo :: Concatenated ( ref_info) => {
1561- let Some ( internal_name) =
1562- ref_info. get_internal_name ( ids. first ( ) . unwrap_or ( & item. name ) )
1556+ let Some ( internal_name) = ref_info
1557+ . export_map
1558+ . as_ref ( )
1559+ . and_then ( |export_map| export_map. get ( & export_name) )
1560+ . map ( |export_name| Atom :: from ( export_name. clone ( ) ) )
1561+ . and_then ( |export_local| ref_info. get_internal_name ( & export_local) )
15631562 else {
15641563 continue ;
15651564 } ;
0 commit comments