Struct SemaOutput
pub struct SemaOutput {
pub functions: Vec<AnalyzedFunction>,
pub strings: Vec<String>,
pub bytes: Vec<Vec<u8>>,
pub warnings: Vec<DiagnosticWrapper<WarningKind>>,
pub type_pool: TypeInternPool,
pub comptime_dbg_output: Vec<String>,
pub interface_defs: Vec<InterfaceDef>,
pub interface_vtables: HashMap<(StructId, InterfaceId), Vec<(StructId, Spur)>, FxBuildHasher>,
}Expand description
Output from semantic analysis.
Contains all analyzed functions, struct definitions, enum definitions, and any warnings generated during analysis.
Fields§
§functions: Vec<AnalyzedFunction>Analyzed functions with typed IR.
strings: Vec<String>String literals indexed by their AIR string_const index.
bytes: Vec<Vec<u8>>Byte-blob literals indexed by their AIR bytes_const index. Currently
populated by @embed_file.
warnings: Vec<DiagnosticWrapper<WarningKind>>Warnings collected during analysis.
type_pool: TypeInternPoolType intern pool (contains all types including arrays).
comptime_dbg_output: Vec<String>Lines of @dbg output collected during comptime evaluation.
interface_defs: Vec<InterfaceDef>Interface definitions (ADR-0056), indexed by InterfaceId.0. Codegen
uses these to know each interface’s method count and slot order when
emitting vtables.
interface_vtables: HashMap<(StructId, InterfaceId), Vec<(StructId, Spur)>, FxBuildHasher>Vtable witnesses keyed by (struct_id, interface_id). The witness is
the conforming type’s method-key list in interface declaration order;
codegen looks each one up in the function map to build the vtable
global.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for SemaOutput
impl RefUnwindSafe for SemaOutput
impl Send for SemaOutput
impl Sync for SemaOutput
impl Unpin for SemaOutput
impl UnsafeUnpin for SemaOutput
impl UnwindSafe for SemaOutput
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more