Skip to content

Commit 0420ddc

Browse files
committed
chunk_group_info: continue walking across graphs
1 parent 18e9807 commit 0420ddc

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

turbopack/crates/turbopack-core/src/module_graph/chunk_group_info.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ use crate::{
2222
chunk::{ChunkGroupType, ChunkingType},
2323
module::Module,
2424
module_graph::{
25-
get_node, GraphNodeIndex, GraphTraversalAction, ModuleGraph, SingleModuleGraphModuleNode,
26-
SingleModuleGraphNode,
25+
get_node, get_node_idx, GraphNodeIndex, GraphTraversalAction, ModuleGraph,
26+
SingleModuleGraphModuleNode, SingleModuleGraphNode,
2727
},
2828
};
2929
#[derive(
@@ -580,8 +580,8 @@ pub async fn compute_chunk_group_info(graph: &ModuleGraph) -> Result<Vc<ChunkGro
580580
}
581581
while let Some(NodeWithPriority { node, .. }) = queue.pop() {
582582
queue_set.remove(&node);
583+
let (node_weight, node) = get_node_idx!(graphs, node)?;
583584
let graph = &graphs[node.graph_idx].graph;
584-
let node_weight = get_node!(graphs, node)?;
585585
let neighbors = iter_neighbors(graph, node.node_idx);
586586

587587
visit_count += 1;
@@ -591,7 +591,7 @@ pub async fn compute_chunk_group_info(graph: &ModuleGraph) -> Result<Vc<ChunkGro
591591
graph_idx: node.graph_idx,
592592
node_idx: succ,
593593
};
594-
let succ_weight = get_node!(graphs, succ)?;
594+
let (succ_weight, succ) = get_node_idx!(graphs, succ)?;
595595
let edge_weight = graph.edge_weight(edge).unwrap();
596596
let action = visitor(
597597
Some((node_weight, edge_weight)),

turbopack/crates/turbopack-core/src/module_graph/mod.rs

+23-1
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ macro_rules! get_node {
692692
Some(SingleModuleGraphNode::Module(node)) => ::anyhow::Ok(node),
693693
Some(SingleModuleGraphNode::VisitedModule { idx, .. }) => {
694694
match $graphs[idx.graph_idx].graph.node_weight(idx.node_idx) {
695-
Some(SingleModuleGraphNode::Module(node)) => anyhow::Ok(node),
695+
Some(SingleModuleGraphNode::Module(node)) => ::anyhow::Ok(node),
696696
Some(SingleModuleGraphNode::VisitedModule { .. }) => Err(::anyhow::anyhow!(
697697
"Expected visited target node to be module"
698698
)),
@@ -704,6 +704,28 @@ macro_rules! get_node {
704704
}};
705705
}
706706
pub(crate) use get_node;
707+
macro_rules! get_node_idx {
708+
($graphs:expr, $node:expr) => {{
709+
let node_idx = $node;
710+
match $graphs[node_idx.graph_idx]
711+
.graph
712+
.node_weight(node_idx.node_idx)
713+
{
714+
Some(SingleModuleGraphNode::Module(node)) => ::anyhow::Ok((node, node_idx)),
715+
Some(SingleModuleGraphNode::VisitedModule { idx, .. }) => {
716+
match $graphs[idx.graph_idx].graph.node_weight(idx.node_idx) {
717+
Some(SingleModuleGraphNode::Module(node)) => ::anyhow::Ok((node, *idx)),
718+
Some(SingleModuleGraphNode::VisitedModule { .. }) => Err(::anyhow::anyhow!(
719+
"Expected visited target node to be module"
720+
)),
721+
None => Err(::anyhow::anyhow!("Expected visited target node")),
722+
}
723+
}
724+
None => Err(::anyhow::anyhow!("Expected graph node")),
725+
}
726+
}};
727+
}
728+
pub(crate) use get_node_idx;
707729

708730
impl ModuleGraph {
709731
pub async fn get_graphs(&self) -> Result<Vec<ReadRef<SingleModuleGraph>>> {

0 commit comments

Comments
 (0)