pub struct Analyzer<'a> {
pub shared: SharedState<'a>,
/* private fields */
}
Fields§
Implementations§
Source§impl Analyzer<'_>
impl Analyzer<'_>
pub fn convert_to_function_access_kind( function_ref: &Rc<Function>, ) -> ExpressionKind
pub fn lookup_associated_function( &self, ty: &Type, function_name: &str, ) -> Option<Rc<Function>>
pub fn convert_to_function_access_expr( &self, associated_function_info: &Rc<Function>, ast_node: &Node, ) -> Expression
Sourcepub fn analyze_range(
&mut self,
min_expr: &Expression,
max_expr: &Expression,
mode: &RangeMode,
ast_node: &Node,
) -> Result<Expression, Error>
pub fn analyze_range( &mut self, min_expr: &Expression, max_expr: &Expression, mode: &RangeMode, ast_node: &Node, ) -> Result<Expression, Error>
§Errors
Source§impl Analyzer<'_>
impl Analyzer<'_>
Sourcepub fn analyze_argument(
&mut self,
fn_parameter: &TypeForParameter,
argument_expr: &MutableOrImmutableExpression,
) -> Result<ArgumentExpressionOrLocation, Error>
pub fn analyze_argument( &mut self, fn_parameter: &TypeForParameter, argument_expr: &MutableOrImmutableExpression, ) -> Result<ArgumentExpressionOrLocation, Error>
§Errors
Sourcepub fn analyze_and_verify_parameters(
&mut self,
node: &Node,
fn_parameters: &[TypeForParameter],
arguments: &[MutableOrImmutableExpression],
) -> Result<Vec<ArgumentExpressionOrLocation>, Error>
pub fn analyze_and_verify_parameters( &mut self, node: &Node, fn_parameters: &[TypeForParameter], arguments: &[MutableOrImmutableExpression], ) -> Result<Vec<ArgumentExpressionOrLocation>, Error>
§Errors
Sourcepub fn analyze_mut_or_immutable_expression(
&mut self,
expr: &MutableOrImmutableExpression,
context: &TypeContext<'_>,
location_side: LocationSide,
) -> Result<MutOrImmutableExpression, Error>
pub fn analyze_mut_or_immutable_expression( &mut self, expr: &MutableOrImmutableExpression, context: &TypeContext<'_>, location_side: LocationSide, ) -> Result<MutOrImmutableExpression, Error>
§Errors
Source§impl Analyzer<'_>
impl Analyzer<'_>
pub fn try_find_constant( &self, qualified_constant_identifier: &QualifiedConstantIdentifier, ) -> Option<&Rc<Constant>>
Source§impl Analyzer<'_>
impl Analyzer<'_>
Sourcepub fn analyze_alias_type_definition(
&mut self,
ast_alias: &AliasType,
) -> Result<AliasType, Error>
pub fn analyze_alias_type_definition( &mut self, ast_alias: &AliasType, ) -> Result<AliasType, Error>
§Errors
Sourcepub fn analyze_anonymous_struct_type(
&mut self,
ast_struct: &AnonymousStructType,
) -> Result<AnonymousStructType, Error>
pub fn analyze_anonymous_struct_type( &mut self, ast_struct: &AnonymousStructType, ) -> Result<AnonymousStructType, Error>
§Errors
Sourcepub fn analyze_anonymous_struct_type_fields(
&mut self,
ast_struct_fields: &[StructTypeField],
) -> Result<SeqMap<String, StructTypeField>, Error>
pub fn analyze_anonymous_struct_type_fields( &mut self, ast_struct_fields: &[StructTypeField], ) -> Result<SeqMap<String, StructTypeField>, Error>
§Errors
pub fn convert_to_type_variables( &mut self, ast_type_variables: &[TypeVariable], ) -> Vec<String>
Sourcepub fn set_type_variables_to_extra_symbol_table(
&mut self,
type_variables: &[String],
)
pub fn set_type_variables_to_extra_symbol_table( &mut self, type_variables: &[String], )
§Panics
Sourcepub fn analyze_named_struct_type_definition(
&mut self,
ast_struct_def: &NamedStructDef,
) -> Result<(), Error>
pub fn analyze_named_struct_type_definition( &mut self, ast_struct_def: &NamedStructDef, ) -> Result<(), Error>
§Errors
pub fn debug_definition(&self, definition: &Definition)
Sourcepub fn analyze_definition(&mut self, ast_def: &Definition) -> Result<(), Error>
pub fn analyze_definition(&mut self, ast_def: &Definition) -> Result<(), Error>
§Errors
Source§impl Analyzer<'_>
impl Analyzer<'_>
Sourcepub fn analyze_complex_literal_to_expression(
&mut self,
ast_node: &Node,
ast_literal_kind: &LiteralKind,
context: &TypeContext<'_>,
) -> Result<Expression, Error>
pub fn analyze_complex_literal_to_expression( &mut self, ast_node: &Node, ast_literal_kind: &LiteralKind, context: &TypeContext<'_>, ) -> Result<Expression, Error>
§Errors
pub fn create_err(&self, kind: ErrorKind, ast_node: &Node) -> Error
pub fn create_err_resolved( &self, kind: ErrorKind, resolved_node: &Node, ) -> Error
Source§impl Analyzer<'_>
impl Analyzer<'_>
Sourcepub fn analyze_anonymous_struct_literal(
&mut self,
node: &Node,
ast_fields: &Vec<FieldExpression>,
rest_was_specified: bool,
context: &TypeContext<'_>,
) -> Result<Expression, Error>
pub fn analyze_anonymous_struct_literal( &mut self, node: &Node, ast_fields: &Vec<FieldExpression>, rest_was_specified: bool, context: &TypeContext<'_>, ) -> Result<Expression, Error>
Source§impl<'a> Analyzer<'a>
impl<'a> Analyzer<'a>
pub fn new( state: &'a mut ProgramState, modules: &'a Modules, core_symbol_table: Rc<SymbolTable>, source_map: &'a SourceMap, module_path: &[String], file_id: u16, ) -> Analyzer<'a>
Sourcepub fn analyze_start_chain_expression_get_mutability(
&mut self,
ast_expression: &Expression,
expected_type: Option<&Type>,
) -> Result<(Expression, bool), Error>
pub fn analyze_start_chain_expression_get_mutability( &mut self, ast_expression: &Expression, expected_type: Option<&Type>, ) -> Result<(Expression, bool), Error>
§Errors
pub fn debug_expression(&self, expr: &Expression)
pub fn analyze_main_expression( &mut self, ast_expression: &Expression, ) -> Result<InternalMainExpression, Error>
Sourcepub fn analyze_expression(
&mut self,
ast_expression: &Expression,
context: &TypeContext<'_>,
) -> Result<Expression, Error>
pub fn analyze_expression( &mut self, ast_expression: &Expression, context: &TypeContext<'_>, ) -> Result<Expression, Error>
§Errors
Sourcepub fn analyze_expression_internal(
&mut self,
ast_expression: &Expression,
context: &TypeContext<'_>,
) -> Result<Expression, Error>
pub fn analyze_expression_internal( &mut self, ast_expression: &Expression, context: &TypeContext<'_>, ) -> Result<Expression, Error>
§Errors
Sourcepub fn analyze_struct_field(
&mut self,
field_name: &Node,
tv: Type,
) -> Result<(AnonymousStructType, usize, Type), Error>
pub fn analyze_struct_field( &mut self, field_name: &Node, tv: Type, ) -> Result<(AnonymousStructType, usize, Type), Error>
Sourcepub fn analyze_variable_assignment(
&mut self,
variable: &Variable,
source_expression: &MutableOrImmutableExpression,
) -> Result<Expression, Error>
pub fn analyze_variable_assignment( &mut self, variable: &Variable, source_expression: &MutableOrImmutableExpression, ) -> Result<Expression, Error>
§Errors
pub const fn create_expr( &self, kind: ExpressionKind, ty: Type, ast_node: &Node, ) -> Expression
pub fn create_expr_resolved( &self, kind: ExpressionKind, ty: Type, ast_node: &Node, ) -> Expression
Auto Trait Implementations§
impl<'a> Freeze for Analyzer<'a>
impl<'a> RefUnwindSafe for Analyzer<'a>
impl<'a> !Send for Analyzer<'a>
impl<'a> !Sync for Analyzer<'a>
impl<'a> Unpin for Analyzer<'a>
impl<'a> !UnwindSafe for Analyzer<'a>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);