presolve_compiler/
form_ir_optimization.rs1use crate::FormIrReport;
3#[derive(Debug, Clone, PartialEq, Eq, Default)]
4pub struct FormIrOptimizationMetrics {
5 pub constant_folds: usize,
6 pub deduplicated_pure_reads: usize,
7 pub removed_dead_pure_values: usize,
8}
9#[derive(Debug, Clone, PartialEq, Eq)]
10pub struct OptimizedFormIrReport {
11 pub source: FormIrReport,
12 pub optimized: FormIrReport,
13 pub metrics: FormIrOptimizationMetrics,
14 pub immutable_input: bool,
15}
16#[must_use]
17pub fn optimize_form_ir(source: &FormIrReport) -> OptimizedFormIrReport {
18 OptimizedFormIrReport {
19 source: source.clone(),
20 optimized: source.clone(),
21 metrics: FormIrOptimizationMetrics::default(),
22 immutable_input: true,
23 }
24}
25#[cfg(test)]
26mod tests {
27 #[test]
28 fn preserves_every_instance_and_operation() {
29 let parsed = presolve_parser::parse_file(
30 "src/X.tsx",
31 r#"@component("x") class X{@form() form!:Form; @field(this.form) value="";render(){return <input field={this.value}/>;}}"#,
32 );
33 let model = crate::build_application_semantic_model(&parsed);
34 assert_eq!(model.optimized_form_ir.source, model.form_ir);
35 assert_eq!(model.optimized_form_ir.optimized, model.form_ir);
36 }
37}