Skip to main content

presolve_compiler/
form_ir_optimization.rs

1//! I13 immutable Form IR optimization boundary.
2use 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}