Skip to main content

LowerError

Enum LowerError 

Source
#[non_exhaustive]
pub enum LowerError {
Show 25 variants NotYetImplemented { what: String, }, LiteralOutOfRange { payload: String, target: PrimitiveType, }, LiteralTypeMismatch { kind: String, ty: ResolvedType, }, UnknownBinding(BindingId), UnresolvedReference, UnsupportedOperator { op: String, operand: PrimitiveType, }, TypeMap(TypeMapError), ZeroSizedLetBinding { name: String, ty: ResolvedType, }, UnknownFunction(FunctionId), UnresolvedFunctionCall { path: Vec<String>, }, MissingContext { what: &'static str, }, ExternalStructInst, Layout(LayoutError), FieldIndexOutOfRange { struct_name: String, field_count: usize, field_idx: u32, }, FieldAccessOnNonAggregate { ty: ResolvedType, }, UnknownStruct(StructId), ExternalEnumInst, UnknownEnum(EnumId), UnknownVariant { enum_name: String, variant: String, }, MissingSelfStruct, UnknownMethod { impl_id: ImplId, method_idx: MethodIdx, }, VirtualMethodCall, UnknownVtable { trait_id: TraitId, target: ImplTargetKey, }, UnknownVirtualMethodType { trait_id: TraitId, method_idx: MethodIdx, }, UnsupportedVirtualReceiver { ty: ResolvedType, },
}
Expand description

Errors produced by the expression-lowering helpers.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

NotYetImplemented

The expression variant or operand shape is in scope for the backend but not yet implemented in this phase.

Fields

§what: String

Short tag describing the missing variant or shape.

§

LiteralOutOfRange

A numeric literal whose payload is incompatible with its declared type — e.g. an I32-typed literal whose value is out of range or carries a float-syntax payload. Semantic analysis should catch these upstream; the variant exists so we never silently emit a wrong constant.

Fields

§payload: String

String form of the offending payload (e.g. "3.14" or "2147483648").

§target: PrimitiveType

The declared target primitive type.

§

LiteralTypeMismatch

A literal whose type doesn’t match its kind, e.g. a String literal carrying a non-Primitive(String) ty.

Fields

§kind: String

Tag for the literal kind ("Boolean", "Number(integer)", …).

§ty: ResolvedType

The declared resolved type.

§

UnknownBinding(BindingId)

A reference / LetRef carries a BindingId that the caller’s BindingMap does not know about. Indicates a lowering pass failed to register the binding before walking expressions that reference it.

§

UnresolvedReference

A reference’s ReferenceTarget is Unresolved. Means ResolveReferencesPass did not run before the backend.

§

UnsupportedOperator

A binary or unary operator was applied to operand type(s) the backend does not support — either a fundamentally invalid combo (e.g. And on I32) or a deferred case (e.g. arithmetic on String, which lives in Phase 2).

Fields

§op: String

Operator name (e.g. "Add", "Range", "Mod").

§operand: PrimitiveType

Operand primitive type at the offending site.

§

TypeMap(TypeMapError)

A type appearing on a parameter or let binding could not be mapped to a wasm value type — typically because the lowering for that type lives in a later phase.

§

ZeroSizedLetBinding

A let-binding inside a block has a unit/Never type that can’t be assigned to a wasm local. Indicates an upstream invariant violation.

Fields

§name: String

Source-level name of the offending binding.

§ty: ResolvedType

The declared resolved type.

§

UnknownFunction(FunctionId)

A FunctionCall carries a FunctionId that the caller’s FunctionMap does not know about. Indicates the module- level lowering pass failed to register this function before walking call sites.

§

UnresolvedFunctionCall

A FunctionCall carries function_id = None. Either the resolution pass failed, or the call targets an external (cross-module) function which won’t be supported until Phase 4.

Fields

§path: Vec<String>

Source-level path of the call (e.g. ["math", "sin"]).

§

MissingContext

A lowering needs an LowerContext field that is not set — typically the IrModule reference (for struct/enum lookups) or the bump-allocator function index. Surfaced when an aggregate lowering runs through a context built for the expression-only test path.

Fields

§what: &'static str

Static tag identifying the missing field.

§

ExternalStructInst

A StructInst carries struct_id = None, which means it instantiates an external (cross-module) struct. External references land in Phase 4.

§

Layout(LayoutError)

A struct’s layout could not be planned — see the wrapped LayoutError for the underlying cause.

§

FieldIndexOutOfRange

A FieldAccess references a field index past the end of its containing struct’s fields vector. Indicates an upstream invariant violation.

Fields

§struct_name: String

Source-level struct name.

§field_count: usize

Number of fields actually in the struct.

§field_idx: u32

The offending field index.

§

FieldAccessOnNonAggregate

A FieldAccess’s object expression has a non-aggregate type (e.g. a primitive). This means the type-checker accepted a field access on something that has no fields.

Fields

§ty: ResolvedType

The offending object’s resolved type.

§

UnknownStruct(StructId)

A StructInst was given a struct_id that the module’s structs vector does not contain. Indicates corrupt IR.

§

ExternalEnumInst

An EnumInst carries enum_id = None, which means it instantiates an external (cross-module) enum. External references land in Phase 4.

§

UnknownEnum(EnumId)

An EnumInst was given an enum_id that the module’s enums vector does not contain. Indicates corrupt IR.

§

UnknownVariant

An EnumInst references a variant that the resolved enum definition does not contain. Indicates an upstream invariant violation.

Fields

§enum_name: String

Containing enum name.

§variant: String

Source-level variant name.

§

MissingSelfStruct

A SelfFieldRef was lowered without a LowerContext::self_struct_id set. Means the function is not a method of any struct, but its body uses self.field — an upstream invariant violation.

§

UnknownMethod

A MethodCall with DispatchKind::Static { impl_id } and method_idx whose pair is not present in the module’s MethodMap. Indicates the impl was never walked or the indices are inconsistent.

Fields

§impl_id: ImplId

The offending impl id.

§method_idx: MethodIdx

The offending method index inside that impl.

§

VirtualMethodCall

A MethodCall with DispatchKind::Virtual { .. } was encountered. Virtual dispatch lands in Phase 3.

§

UnknownVtable

A virtual MethodCall whose (trait_id, impl_target) pair has no vtable registered. Indicates the module-level pre-walk missed the impl, or the receiver type is one the layout planner doesn’t recognise as a vtable target.

Fields

§trait_id: TraitId

The trait whose vtable is missing.

§target: ImplTargetKey

The impl-target key the lookup was keyed on.

§

UnknownVirtualMethodType

A virtual MethodCall whose (trait_id, method_idx) pair has no call_indirect type-index registered. Indicates the module- level pre-walk missed the trait method.

Fields

§trait_id: TraitId

Trait id.

§method_idx: MethodIdx

Method index inside the trait’s methods vector.

§

UnsupportedVirtualReceiver

A virtual MethodCall whose receiver type cannot be resolved to an ImplTarget. Phase 3 supports concrete struct / enum receivers; trait-object receivers stay rejected (semantic analysis bans Trait as a value).

Fields

§ty: ResolvedType

The offending receiver’s resolved type.

Trait Implementations§

Source§

impl Debug for LowerError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for LowerError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for LowerError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<LayoutError> for LowerError

Source§

fn from(source: LayoutError) -> Self

Converts to this type from the input type.
Source§

impl From<LowerError> for ModuleLowerError

Source§

fn from(source: LowerError) -> Self

Converts to this type from the input type.
Source§

impl From<TypeMapError> for LowerError

Source§

fn from(source: TypeMapError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Fmt for T
where T: Display,

Source§

fn fg<C>(self, color: C) -> Foreground<Self>
where C: Into<Option<Color>>, Self: Display,

Give this value the specified foreground colour.
Source§

fn bg<C>(self, color: C) -> Background<Self>
where C: Into<Option<Color>>, Self: Display,

Give this value the specified background colour.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'src, T> IntoMaybe<'src, T> for T
where T: 'src,

Source§

type Proj<U: 'src> = U

Source§

fn map_maybe<R>( self, _f: impl FnOnce(&'src T) -> &'src R, g: impl FnOnce(T) -> R, ) -> <T as IntoMaybe<'src, T>>::Proj<R>
where R: 'src,

Source§

impl<T> Paint for T
where T: ?Sized,

Source§

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 primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

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>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

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 bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

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 mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
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.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

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);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more