use crate::records::normalized_type::NormalizedType;
use luaur_common::FFlag;

impl NormalizedType {
    pub fn is_exactly_number(&self) -> bool {
        if FFlag::LuauIntegerType2.get() {
            self.has_numbers()
                && !self.has_tops()
                && !self.has_booleans()
                && !self.has_extern_types()
                && !self.has_errors()
                && !self.has_nils()
                && !self.has_strings()
                && !self.has_threads()
                && !self.has_buffers()
                && !self.has_tables()
                && !self.has_functions()
                && !self.has_tyvars()
                && !self.has_integers()
        } else {
            self.has_numbers()
                && !self.has_tops()
                && !self.has_booleans()
                && !self.has_extern_types()
                && !self.has_errors()
                && !self.has_nils()
                && !self.has_strings()
                && !self.has_threads()
                && !self.has_buffers()
                && !self.has_tables()
                && !self.has_functions()
                && !self.has_tyvars()
        }
    }
}
