Skip to content

Commit 86634a0

Browse files
authored
refactor: afterCodeGeneration hook use read only compilation ref (#12655)
1 parent d424733 commit 86634a0

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

crates/rspack_core/src/compilation/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ define_hook!(CompilationRuntimeRequirementInChunk: SeriesBail(compilation: &mut
9494
define_hook!(CompilationAdditionalTreeRuntimeRequirements: Series(compilation: &mut Compilation, chunk_ukey: &ChunkUkey, runtime_requirements: &mut RuntimeGlobals));
9595
define_hook!(CompilationRuntimeRequirementInTree: SeriesBail(compilation: &mut Compilation, chunk_ukey: &ChunkUkey, all_runtime_requirements: &RuntimeGlobals, runtime_requirements: &RuntimeGlobals, runtime_requirements_mut: &mut RuntimeGlobals));
9696
define_hook!(CompilationOptimizeCodeGeneration: Series(compilation: &mut Compilation));
97-
define_hook!(CompilationAfterCodeGeneration: Series(compilation: &mut Compilation));
97+
define_hook!(CompilationAfterCodeGeneration: Series(compilation: &Compilation, diagnostics: &mut Vec<Diagnostic>));
9898
define_hook!(CompilationChunkHash: Series(compilation: &Compilation, chunk_ukey: &ChunkUkey, hasher: &mut RspackHash),tracing=false);
9999
define_hook!(CompilationContentHash: Series(compilation: &Compilation, chunk_ukey: &ChunkUkey, hashes: &mut HashMap<SourceType, RspackHash>));
100100
define_hook!(CompilationDependentFullHash: SeriesBail(compilation: &Compilation, chunk_ukey: &ChunkUkey) -> bool);
@@ -1893,12 +1893,15 @@ impl Compilation {
18931893
};
18941894
self.code_generation(code_generation_modules).await?;
18951895

1896+
let mut diagnostics = vec![];
18961897
plugin_driver
18971898
.compilation_hooks
18981899
.after_code_generation
1899-
.call(self)
1900+
.call(self, &mut diagnostics)
19001901
.await
19011902
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.afterCodeGeneration"))?;
1903+
self.extend_diagnostics(diagnostics);
1904+
19021905
logger.time_end(start);
19031906

19041907
let start = logger.time("runtime requirements");

crates/rspack_plugin_esm_library/src/link.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,11 @@ impl EsmLibraryPlugin {
139139
}
140140
}
141141

142-
pub(crate) async fn link(&self, compilation: &mut Compilation) -> Result<()> {
142+
pub(crate) async fn link(
143+
&self,
144+
compilation: &Compilation,
145+
diagnostics: &mut Vec<Diagnostic>,
146+
) -> Result<()> {
143147
let module_graph = compilation.get_module_graph();
144148

145149
// codegen uses self.concatenated_modules_map_for_codegen which has hold another Arc, so
@@ -247,7 +251,7 @@ impl EsmLibraryPlugin {
247251

248252
// link imported specifier with exported symbol
249253
let mut needed_namespace_objects_by_ukey = UkeyMap::default();
250-
compilation.extend_diagnostics(self.link_imports_and_exports(
254+
diagnostics.extend(self.link_imports_and_exports(
251255
compilation,
252256
&mut link,
253257
&mut concate_modules_map,

crates/rspack_plugin_esm_library/src/plugin.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rspack_core::{
1818
ParserOptions, Plugin, PrefetchExportsInfoMode, RuntimeGlobals, get_target, is_esm_dep_like,
1919
rspack_sources::{ReplaceSource, Source},
2020
};
21-
use rspack_error::Result;
21+
use rspack_error::{Diagnostic, Result};
2222
use rspack_hook::{plugin, plugin_hook};
2323
use rspack_plugin_javascript::{
2424
JavascriptModulesRenderChunkContent, JsPlugin, RenderSource,
@@ -303,7 +303,11 @@ async fn concatenation_scope(
303303
}
304304

305305
#[plugin_hook(CompilationAfterCodeGeneration for EsmLibraryPlugin)]
306-
async fn after_code_generation(&self, compilation: &mut Compilation) -> Result<()> {
306+
async fn after_code_generation(
307+
&self,
308+
compilation: &Compilation,
309+
diagnostics: &mut Vec<Diagnostic>,
310+
) -> Result<()> {
307311
let mut chunk_ids_to_ukey = FxHashMap::default();
308312

309313
for chunk_ukey in compilation.chunk_by_ukey.keys() {
@@ -316,7 +320,7 @@ async fn after_code_generation(&self, compilation: &mut Compilation) -> Result<(
316320

317321
*self.chunk_ids_to_ukey.borrow_mut() = chunk_ids_to_ukey;
318322

319-
self.link(compilation).await?;
323+
self.link(compilation, diagnostics).await?;
320324
Ok(())
321325
}
322326

crates/rspack_plugin_rsdoctor/src/plugin.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,11 @@ async fn module_ids(
418418
}
419419

420420
#[plugin_hook(CompilationAfterCodeGeneration for RsdoctorPlugin, stage = 9999)]
421-
async fn after_code_generation(&self, compilation: &mut Compilation) -> Result<()> {
421+
async fn after_code_generation(
422+
&self,
423+
compilation: &Compilation,
424+
_diagnostics: &mut Vec<Diagnostic>,
425+
) -> Result<()> {
422426
if !self.has_module_graph_feature(RsdoctorPluginModuleGraphFeature::ModuleSources) {
423427
return Ok(());
424428
}

0 commit comments

Comments
 (0)