Skip to content

Commit 13c5c3d

Browse files
committed
chore: fix inferAsync caculations
1 parent 692730c commit 13c5c3d

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

crates/rspack_plugin_javascript/src/plugin/infer_async_modules_plugin.rs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rspack_core::{
55
Compilation, CompilationFinishModules, DependencyType, Logger, ModuleGraph, ModuleIdentifier,
66
Plugin,
77
collect_module_graph_effects::artifact::CollectModuleGraphEffectsArtifact,
8-
incremental::{IncrementalPasses, Mutation},
8+
incremental::{IncrementalPasses, Mutation, Mutations},
99
};
1010
use rspack_error::Result;
1111
use rspack_hook::{plugin, plugin_hook};
@@ -54,25 +54,32 @@ async fn finish_modules(
5454
}
5555
}
5656

57-
set_sync_modules(compilation, sync_modules, artifact);
58-
set_async_modules(compilation, async_modules, artifact);
57+
let mut collect_mutations = Mutations::default();
58+
set_sync_modules(compilation, sync_modules, artifact, &mut collect_mutations);
59+
set_async_modules(compilation, async_modules, artifact, &mut collect_mutations);
60+
5961
if compilation
6062
.incremental
6163
.mutations_readable(IncrementalPasses::INFER_ASYNC_MODULES)
6264
{
6365
let logger = compilation.get_logger("rspack.incremental.inferAsyncModules");
6466
logger.log(format!(
6567
"{} modules are updated by set_async",
66-
artifact.mutations.len()
68+
collect_mutations.len()
6769
));
6870
}
71+
for mutation in collect_mutations.into_iter() {
72+
artifact.mutations.add(mutation);
73+
}
6974
Ok(())
7075
}
71-
76+
// we need to calculate mutations for inferAsyncModules pass separately
77+
// so make sure use collect_mutations to collect mutations other than artifact.mutations
7278
fn set_sync_modules(
7379
compilation: &mut Compilation,
7480
modules: LinkedHashSet<ModuleIdentifier>,
7581
collect_module_graph_effects_artifact: &mut CollectModuleGraphEffectsArtifact,
82+
collect_mutations: &mut Mutations,
7683
) {
7784
let module_graph = compilation.get_module_graph();
7885
let outgoing_connections = modules
@@ -118,9 +125,7 @@ fn set_sync_modules(
118125
module,
119126
false,
120127
) {
121-
collect_module_graph_effects_artifact
122-
.mutations
123-
.add(Mutation::ModuleSetAsync { module });
128+
collect_mutations.add(Mutation::ModuleSetAsync { module });
124129
let module_graph = compilation.get_module_graph();
125130
module_graph
126131
.get_incoming_connections(&module)
@@ -148,13 +153,14 @@ fn set_async_modules(
148153
compilation: &mut Compilation,
149154
modules: LinkedHashSet<ModuleIdentifier>,
150155
artifact: &mut CollectModuleGraphEffectsArtifact,
156+
collect_mutations: &mut Mutations,
151157
) {
152158
let mut queue = modules;
153159
let mut visited = IdentifierSet::from_iter(queue.iter().copied());
154160

155161
while let Some(module) = queue.pop_front() {
156162
if ModuleGraph::set_async(artifact, module, true) {
157-
artifact.mutations.add(Mutation::ModuleSetAsync { module });
163+
collect_mutations.add(Mutation::ModuleSetAsync { module });
158164
}
159165
let module_graph = compilation.get_module_graph();
160166
module_graph

0 commit comments

Comments
 (0)