rspack_core 0.100.0-rc.2

rspack core
Documentation
use async_trait::async_trait;

use super::*;
use crate::compilation::pass::PassExt;

pub struct OptimizeCodeGenerationPass;

#[async_trait]
impl PassExt for OptimizeCodeGenerationPass {
  fn name(&self) -> &'static str {
    "optimize code generation"
  }

  async fn run_pass(&self, compilation: &mut Compilation) -> Result<()> {
    let mut build_module_graph_artifact = compilation.build_module_graph_artifact.steal();
    let mut exports_info_artifact = compilation.exports_info_artifact.steal();
    let mut diagnostics = vec![];
    compilation
      .plugin_driver
      .clone()
      .compilation_hooks
      .optimize_code_generation
      .call(
        compilation,
        &mut build_module_graph_artifact,
        &mut exports_info_artifact,
        &mut diagnostics,
      )
      .await
      .map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeCodeGeneration"))?;

    compilation.build_module_graph_artifact = build_module_graph_artifact.into();
    compilation.exports_info_artifact = exports_info_artifact.into();
    compilation.extend_diagnostics(diagnostics);

    Ok(())
  }
}