Skip to content

Commit 46cdb48

Browse files
committed
fix e2e
1 parent 548a90e commit 46cdb48

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

crates/rspack_core/src/compiler/make/mod.rs

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,24 +84,24 @@ impl MakeArtifact {
8484
.remove_batch_file(&build_info.build_dependencies);
8585
self.make_failed_module.remove(module_identifier);
8686

87-
// clean incoming & all_dependencies(outgoing) factorize info
87+
// clean incoming and all_dependencies(outgoing) factorize info
8888
let mgm = mg
8989
.module_graph_module_by_identifier(module_identifier)
9090
.expect("should have mgm");
91-
for dep_id in mgm
91+
let dep_ids: Vec<_> = mgm
9292
.all_dependencies
9393
.iter()
9494
.chain(mgm.incoming_connections())
95-
{
96-
// if connection does not exist means the dependency has been revoked,
97-
// just skip it
98-
if mg.connection_by_dependency_id(dep_id).is_none() {
95+
.copied()
96+
.collect();
97+
for dep_id in dep_ids {
98+
self.make_failed_dependencies.remove(&dep_id);
99+
let Some(dep) = mg.dependency_by_id_mut(&dep_id) else {
100+
// dependency may be revoked by revoke_dependencies
99101
continue;
100-
}
101-
102-
self.make_failed_dependencies.remove(dep_id);
103-
let dep = mg.dependency_by_id(dep_id).expect("should have dependency");
104-
let Some(info) = FactorizeInfo::get_from(dep) else {
102+
};
103+
// take info and write a default value to it.
104+
let Some(info) = FactorizeInfo::take_factorize_info(dep) else {
105105
continue;
106106
};
107107
self
@@ -122,15 +122,14 @@ impl MakeArtifact {
122122

123123
pub fn revoke_dependency(&mut self, dep_id: &DependencyId, force: bool) -> Vec<BuildDependency> {
124124
let mut mg = ModuleGraph::new([None, None], Some(&mut self.module_graph_partial));
125-
// if connection does not exist means the dependency has been revoked,
126-
// just skip it
127-
if mg.connection_by_dependency_id(dep_id).is_none() {
128-
return vec![];
129-
}
130125

131126
self.make_failed_dependencies.remove(dep_id);
132-
let dep = mg.dependency_by_id(dep_id).expect("should have dependency");
133-
let mut revoke_dep_ids = if let Some(info) = FactorizeInfo::get_from(dep) {
127+
let Some(dep) = mg.dependency_by_id_mut(dep_id) else {
128+
// dependency may be revoked by revoke_module
129+
return vec![];
130+
};
131+
// take info and write a default value to it.
132+
let mut revoke_dep_ids = if let Some(info) = FactorizeInfo::take_factorize_info(dep) {
134133
self
135134
.file_dependencies
136135
.remove_batch_file(info.file_dependencies());

crates/rspack_core/src/dependency/factorize_info.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ impl FactorizeInfo {
6161
}
6262
}
6363

64+
pub fn take_factorize_info(dep: &mut BoxDependency) -> Option<FactorizeInfo> {
65+
if let Some(d) = dep.as_context_dependency_mut() {
66+
Some(std::mem::take(d.factorize_info_mut()))
67+
} else if let Some(d) = dep.as_module_dependency_mut() {
68+
Some(std::mem::take(d.factorize_info_mut()))
69+
} else {
70+
None
71+
}
72+
}
73+
6474
// TODO remove it after diagnostic cacheable.
6575
pub fn is_success(&self) -> bool {
6676
self.diagnostics.is_none()

crates/rspack_core/src/module_graph/mod.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,22 @@ impl<'a> ModuleGraph<'a> {
657657
.as_ref()
658658
}
659659

660+
pub fn dependency_by_id_mut(
661+
&mut self,
662+
dependency_id: &DependencyId,
663+
) -> Option<&mut BoxDependency> {
664+
self
665+
.loop_partials_mut(
666+
|p| p.dependencies.contains_key(dependency_id),
667+
|p, search_result| {
668+
p.dependencies.insert(*dependency_id, search_result);
669+
},
670+
|p| p.dependencies.get(dependency_id).cloned(),
671+
|p| p.dependencies.get_mut(dependency_id),
672+
)?
673+
.as_mut()
674+
}
675+
660676
/// Uniquely identify a module by its dependency
661677
pub fn module_graph_module_by_dependency_id(
662678
&self,

0 commit comments

Comments
 (0)