pub struct TypeEnv {
pub syms: Vec<String>,
pub sym_map: StableMap<String, Sym>,
pub types: Vec<Type>,
pub type_map: StableMap<Sym, TypeId>,
pub const_types: StableMap<Sym, TypeId>,
pub errors: Vec<Error>,
}Expand description
The type environment.
Keeps track of which symbols and rules have which types.
Fields§
§syms: Vec<String>Arena of interned symbol names.
Referred to indirectly via Sym indices.
sym_map: StableMap<String, Sym>Map of already-interned symbol names to their Sym ids.
types: Vec<Type>Arena of type definitions.
Referred to indirectly via TypeIds.
type_map: StableMap<Sym, TypeId>A map from a type name symbol to its TypeId.
const_types: StableMap<Sym, TypeId>The types of constant symbols.
errors: Vec<Error>Type errors that we’ve found so far during type checking.
Implementations§
Source§impl TypeEnv
impl TypeEnv
Sourcepub fn from_ast(defs: &[Def]) -> Result<TypeEnv, Vec<Error>>
pub fn from_ast(defs: &[Def]) -> Result<TypeEnv, Vec<Error>>
Construct the type environment from the AST.
Sourcepub fn get_type_by_name(&self, sym: &Ident) -> Option<TypeId>
pub fn get_type_by_name(&self, sym: &Ident) -> Option<TypeId>
Lookup type by name.
Sourcepub fn get_variant(&self, ty: TypeId, variant: VariantId) -> &Variant
pub fn get_variant(&self, ty: TypeId, variant: VariantId) -> &Variant
Lookup the term corresponding to the given enum variant.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for TypeEnv
impl !UnwindSafe for TypeEnv
impl Freeze for TypeEnv
impl Send for TypeEnv
impl Sync for TypeEnv
impl Unpin for TypeEnv
impl UnsafeUnpin for TypeEnv
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more