Skip to content

Commit f0e6a45

Browse files
mischnicsokra
authored andcommitted
chunk_group_info: continue walking across graphs
1 parent f8d3980 commit f0e6a45

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

@@ -446,8 +446,8 @@ pub async fn compute_chunk_group_info(graph: &ModuleGraph) -> Result<Vc<ChunkGro
446446
}
447447
while let Some(NodeWithPriority { node, .. }) = queue.pop() {
448448
queue_set.remove(&node);
449+
let (node_weight, node) = get_node_idx!(graphs, node)?;
449450
let graph = &graphs[node.graph_idx].graph;
450-
let node_weight = get_node!(graphs, node)?;
451451
let neighbors = iter_neighbors(graph, node.node_idx);
452452

453453
visit_count += 1;
@@ -457,7 +457,7 @@ pub async fn compute_chunk_group_info(graph: &ModuleGraph) -> Result<Vc<ChunkGro
457457
graph_idx: node.graph_idx,
458458
node_idx: succ,
459459
};
460-
let succ_weight = get_node!(graphs, succ)?;
460+
let (succ_weight, succ) = get_node_idx!(graphs, succ)?;
461461
let edge_weight = graph.edge_weight(edge).unwrap();
462462
let action = visitor(
463463
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
// pub struct AllNodesIterator {
709731
// inner: Vec<ReadRef<SingleModuleGraph>>,

0 commit comments

Comments
 (0)