use crate::{
bytecode::VM,
heap::{HeapData, HeapId},
intern::StaticStrings,
types::Module,
value::{Marker, Value},
};
pub fn create_module(vm: &mut VM<'_>) -> HeapId {
let mut module = Module::new(StaticStrings::Typing);
module.set_attr(StaticStrings::TypeChecking, Value::Bool(false), vm);
for ss in MARKER_ATTRS {
module.set_attr(*ss, Value::Marker(Marker(*ss)), vm);
}
vm.heap.allocate(HeapData::Module(Box::new(module)))
}
const MARKER_ATTRS: &[StaticStrings] = &[
StaticStrings::Any,
StaticStrings::Optional,
StaticStrings::UnionType,
StaticStrings::ListType,
StaticStrings::DictType,
StaticStrings::TupleType,
StaticStrings::SetType,
StaticStrings::FrozenSet,
StaticStrings::Callable,
StaticStrings::Type,
StaticStrings::Sequence,
StaticStrings::Mapping,
StaticStrings::Iterable,
StaticStrings::IteratorType,
StaticStrings::Generator,
StaticStrings::ClassVar,
StaticStrings::FinalType,
StaticStrings::Literal,
StaticStrings::TypeVar,
StaticStrings::Generic,
StaticStrings::Protocol,
StaticStrings::Annotated,
StaticStrings::SelfType,
StaticStrings::Never,
StaticStrings::NoReturn,
];