luaur-analysis 0.1.3

Luau type checker and type inference (Rust).
Documentation
use crate::enums::subtyping_variance::SubtypingVariance;
use crate::functions::merge_reasonings::k_empty_reasoning;
use crate::records::subtyping_reasoning::SubtypingReasoning;
use crate::records::subtyping_result::SubtypingResult;
use crate::type_aliases::path::Path;
use crate::type_aliases::subtyping_reasonings::SubtypingReasonings;

impl SubtypingResult {
    pub fn with_super_path(&mut self, path: Path) -> &mut Self {
        if self.reasoning.empty() {
            self.reasoning.insert(SubtypingReasoning {
                sub_path: Path::default(),
                super_path: path,
                variance: SubtypingVariance::Covariant,
                is_property_modifier_violation: false,
            });
        } else {
            let mut updated = SubtypingReasonings::new(k_empty_reasoning());
            for r in self.reasoning.iter() {
                let mut r = r.clone();
                r.super_path = path.append(&r.super_path);
                updated.insert(r);
            }
            self.reasoning = updated;
        }

        self
    }
}