From de316f3058c75264850be5a42fd1589c684f4270 Mon Sep 17 00:00:00 2001 From: Jeffrey Charles Date: Wed, 23 Oct 2024 09:38:07 -0400 Subject: [PATCH] Refactor to minimize dependence on codegen trait (#790) --- crates/cli/src/codegen/builder.rs | 7 ++----- crates/cli/src/codegen/dynamic.rs | 6 +----- crates/cli/src/codegen/mod.rs | 4 ---- crates/cli/src/codegen/static.rs | 6 +----- crates/cli/src/main.rs | 10 +++++----- 5 files changed, 9 insertions(+), 24 deletions(-) diff --git a/crates/cli/src/codegen/builder.rs b/crates/cli/src/codegen/builder.rs index 87b3b2bb..a814b8b0 100644 --- a/crates/cli/src/codegen/builder.rs +++ b/crates/cli/src/codegen/builder.rs @@ -83,11 +83,8 @@ impl CodeGenBuilder { } /// Build a [`CodeGenerator`]. - pub fn build(self, js_runtime_config: Config) -> Result> - where - T: CodeGen, - { - match T::classify() { + pub fn build(self, ty: CodeGenType, js_runtime_config: Config) -> Result> { + match ty { CodeGenType::Static => self.build_static(js_runtime_config), CodeGenType::Dynamic => { if js_runtime_config != Config::default() { diff --git a/crates/cli/src/codegen/dynamic.rs b/crates/cli/src/codegen/dynamic.rs index 27c40d8b..fa21df0e 100644 --- a/crates/cli/src/codegen/dynamic.rs +++ b/crates/cli/src/codegen/dynamic.rs @@ -1,6 +1,6 @@ use super::transform::{self, SourceCodeSection}; use crate::{ - codegen::{exports, CodeGen, CodeGenType, Exports, WitOptions}, + codegen::{exports, CodeGen, Exports, WitOptions}, js::JS, providers::Provider, }; @@ -285,10 +285,6 @@ impl CodeGen for DynamicGenerator { print_wat(&wasm)?; Ok(wasm) } - - fn classify() -> CodeGenType { - CodeGenType::Dynamic - } } #[cfg(feature = "dump_wat")] diff --git a/crates/cli/src/codegen/mod.rs b/crates/cli/src/codegen/mod.rs index 571f9e87..1402b896 100644 --- a/crates/cli/src/codegen/mod.rs +++ b/crates/cli/src/codegen/mod.rs @@ -61,8 +61,4 @@ pub(crate) enum CodeGenType { pub(crate) trait CodeGen { /// Generate Wasm from a given JS source. fn generate(&mut self, source: &JS) -> anyhow::Result>; - /// Classify the [`CodeGen`] type. - fn classify() -> CodeGenType - where - Self: Sized; } diff --git a/crates/cli/src/codegen/static.rs b/crates/cli/src/codegen/static.rs index 780da24d..29e3e53c 100644 --- a/crates/cli/src/codegen/static.rs +++ b/crates/cli/src/codegen/static.rs @@ -12,7 +12,7 @@ use crate::{ codegen::{ exports, transform::{self, SourceCodeSection}, - CodeGen, CodeGenType, Exports, WitOptions, + CodeGen, Exports, WitOptions, }, js::JS, }; @@ -148,10 +148,6 @@ impl CodeGen for StaticGenerator { transform::add_producers_section(&mut module.producers); Ok(module.emit_wasm()) } - - fn classify() -> CodeGenType { - CodeGenType::Static - } } fn export_exported_js_functions( diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 11fea910..1029124b 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -10,7 +10,7 @@ use crate::codegen::WitOptions; use crate::commands::{Cli, Command, EmitProviderCommandOpts}; use anyhow::Result; use clap::Parser; -use codegen::{CodeGenBuilder, DynamicGenerator, StaticGenerator}; +use codegen::{CodeGenBuilder, CodeGenType}; use commands::{CodegenOptionGroup, JsOptionGroup}; use javy_config::Config; use js::JS; @@ -49,9 +49,9 @@ fn main() -> Result<()> { let config = Config::default(); let mut gen = if opts.dynamic { - builder.build::(config)? + builder.build(CodeGenType::Dynamic, config)? } else { - builder.build::(config)? + builder.build(CodeGenType::Static, config)? }; let wasm = gen.generate(&js)?; @@ -69,9 +69,9 @@ fn main() -> Result<()> { let js_opts: JsOptionGroup = opts.js.clone().into(); let mut gen = if codegen.dynamic { - builder.build::(js_opts.into())? + builder.build(CodeGenType::Dynamic, js_opts.into())? } else { - builder.build::(js_opts.into())? + builder.build(CodeGenType::Static, js_opts.into())? }; let wasm = gen.generate(&js)?;