pub struct AnalysisContext { /* private fields */ }Expand description
This maintains the state for semantic analysis of a single Module.
Implementations§
Source§impl AnalysisContext
impl AnalysisContext
pub fn new( source_file: Arc<SourceFile>, source_manager: Arc<dyn SourceManager>, ) -> Self
pub fn set_warnings_as_errors(&mut self, yes: bool)
pub fn warnings_as_errors(&self) -> bool
pub fn source_manager(&self) -> Arc<dyn SourceManager>
pub fn register_procedure_name(&mut self, name: ProcedureName)
pub fn register_imported_name(&mut self, name: Ident)
Sourcepub fn define_constant(&mut self, module: &mut Module, constant: Constant)
pub fn define_constant(&mut self, module: &mut Module, constant: Constant)
Define a new constant constant
Returns Err if a constant with the same name is already defined
Sourcepub fn register_constant(&mut self, constant: Constant)
pub fn register_constant(&mut self, constant: Constant)
Register a constant for semantic analysis without defining it in the module.
This is used for enum variants so we can fold discriminants without attempting to define the same constant twice.
Sourcepub fn simplify_constants(&mut self)
pub fn simplify_constants(&mut self)
Rewrite all constant declarations by performing const evaluation of their expressions.
This also has the effect of validating that the constant expressions themselves are valid.
Sourcepub fn get_constant(
&self,
name: &Ident,
) -> Result<&ConstantExpr, SemanticAnalysisError>
pub fn get_constant( &self, name: &Ident, ) -> Result<&ConstantExpr, SemanticAnalysisError>
Get the constant value bound to name
Returns Err if the symbol is undefined
pub fn error(&mut self, diagnostic: SemanticAnalysisError)
pub fn has_errors(&self) -> bool
pub fn has_failed(&mut self) -> Result<(), SyntaxError>
pub fn into_result(self) -> Result<(), SyntaxError>
Trait Implementations§
Source§impl ConstEnvironment for AnalysisContext
impl ConstEnvironment for AnalysisContext
Source§type Error = SemanticAnalysisError
type Error = SemanticAnalysisError
The error type used in the current evaluation phase. Read more
Source§fn get_source_file_for(&self, span: SourceSpan) -> Option<Arc<SourceFile>>
fn get_source_file_for(&self, span: SourceSpan) -> Option<Arc<SourceFile>>
Map a [SourceSpan] to the [SourceFile] to which it refers
Source§fn get(
&mut self,
name: &Ident,
) -> Result<Option<CachedConstantValue<'_>>, Self::Error>
fn get( &mut self, name: &Ident, ) -> Result<Option<CachedConstantValue<'_>>, Self::Error>
Get the constant expression/value bound to
name in the current scope. Read moreSource§fn get_by_path(
&mut self,
path: Span<&Path>,
) -> Result<Option<CachedConstantValue<'_>>, Self::Error>
fn get_by_path( &mut self, path: Span<&Path>, ) -> Result<Option<CachedConstantValue<'_>>, Self::Error>
Get the constant expression/value defined at
path, which is resolved using the imports
and definitions in the current scope. Read moreSource§fn get_error(&mut self, name: &Ident) -> Result<Option<Arc<str>>, Self::Error>
fn get_error(&mut self, name: &Ident) -> Result<Option<Arc<str>>, Self::Error>
A specialized form of ConstEnvironment::get, which validates that the constant expression
returned by
get evaluates to an error string, returning that string, or raising an error
if invalid.Source§fn get_error_by_path(
&mut self,
path: Span<&Path>,
) -> Result<Option<Arc<str>>, Self::Error>
fn get_error_by_path( &mut self, path: Span<&Path>, ) -> Result<Option<Arc<str>>, Self::Error>
A specialized form of ConstEnvironment::get_by_path, which validates that the constant
expression returned by
get_by_path evaluates to an error string, returning that string,
or raising an error if invalid.Source§fn on_eval_start(&mut self, path: Span<&Path>)
fn on_eval_start(&mut self, path: Span<&Path>)
This method is called when the evaluator begins to evaluate the constant at
pathSource§fn on_eval_completed(&mut self, name: Span<&Path>, value: &ConstantExpr)
fn on_eval_completed(&mut self, name: Span<&Path>, value: &ConstantExpr)
This method is called when the evaluator has finished evaluating the constant at
path. Read moreAuto Trait Implementations§
impl Freeze for AnalysisContext
impl !RefUnwindSafe for AnalysisContext
impl !Send for AnalysisContext
impl !Sync for AnalysisContext
impl Unpin for AnalysisContext
impl UnsafeUnpin for AnalysisContext
impl !UnwindSafe for AnalysisContext
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
§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>
Converts
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>
Converts
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§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Set the foreground color generically Read more
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Set the background color generically. Read more
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Change the background color to magenta
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Change the foreground color to the terminal default
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Change the background color to the terminal default
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Change the foreground color to bright black
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Change the background color to bright black
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Change the foreground color to bright red
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Change the background color to bright red
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Change the foreground color to bright green
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Change the background color to bright green
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Change the foreground color to bright yellow
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Change the background color to bright yellow
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Change the foreground color to bright blue
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Change the background color to bright blue
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Change the foreground color to bright magenta
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Change the background color to bright magenta
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Change the foreground color to bright purple
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Change the background color to bright purple
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Change the foreground color to bright cyan
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Change the background color to bright cyan
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Change the foreground color to bright white
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Change the background color to bright white
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Make the text blink (but fast!)
Hide the text
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Cross out the text
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
Set the foreground color at runtime. Only use if you do not know which color will be used at
compile-time. If the color is constant, use either [
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
Set the background color at runtime. Only use if you do not know what color to use at
compile-time. If the color is constant, use either [
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Set the foreground color to a specific RGB value.
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Set the background color to a specific RGB value.
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Sets the foreground color to an RGB value.
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Sets the background color to an RGB value.