pub enum SemanticAnalysisError {
Show 14 variants
MissingRoot,
MissingConstraints,
MissingPublicInputs,
MissingModule(ModuleId),
RootSectionInLibrary(SourceSpan),
RootImport(SourceSpan),
NameConflict(SourceSpan),
ImportUndefined(ModuleId),
ImportSelf(SourceSpan),
ImportConflict {
item: Identifier,
prev: SourceSpan,
},
ImportFailed(SourceSpan),
InvalidExpr(InvalidExprError),
InvalidType(InvalidTypeError),
Invalid,
}Expand description
Represents the various module validation errors we might encounter during semantic analysis.
Variants§
MissingRoot
MissingConstraints
MissingPublicInputs
MissingModule(ModuleId)
RootSectionInLibrary(SourceSpan)
RootImport(SourceSpan)
NameConflict(SourceSpan)
ImportUndefined(ModuleId)
ImportSelf(SourceSpan)
ImportConflict
ImportFailed(SourceSpan)
InvalidExpr(InvalidExprError)
InvalidType(InvalidTypeError)
Invalid
Trait Implementations§
Source§impl Clone for SemanticAnalysisError
impl Clone for SemanticAnalysisError
Source§fn clone(&self) -> SemanticAnalysisError
fn clone(&self) -> SemanticAnalysisError
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SemanticAnalysisError
impl Debug for SemanticAnalysisError
Source§impl Display for SemanticAnalysisError
impl Display for SemanticAnalysisError
Source§impl Error for SemanticAnalysisError
impl Error for SemanticAnalysisError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
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
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Source§impl From<InvalidExprError> for SemanticAnalysisError
impl From<InvalidExprError> for SemanticAnalysisError
Source§fn from(source: InvalidExprError) -> Self
fn from(source: InvalidExprError) -> Self
Converts to this type from the input type.
Source§impl From<InvalidTypeError> for SemanticAnalysisError
impl From<InvalidTypeError> for SemanticAnalysisError
Source§fn from(source: InvalidTypeError) -> Self
fn from(source: InvalidTypeError) -> Self
Converts to this type from the input type.
Source§impl From<SemanticAnalysisError> for ParseError
impl From<SemanticAnalysisError> for ParseError
Source§fn from(source: SemanticAnalysisError) -> Self
fn from(source: SemanticAnalysisError) -> Self
Converts to this type from the input type.
Source§impl PartialEq for SemanticAnalysisError
impl PartialEq for SemanticAnalysisError
Source§impl ToDiagnostic for SemanticAnalysisError
impl ToDiagnostic for SemanticAnalysisError
fn to_diagnostic(self) -> Diagnostic
Source§impl VisitMut<SemanticAnalysisError> for ConstantPropagation<'_>
impl VisitMut<SemanticAnalysisError> for ConstantPropagation<'_>
Source§fn visit_mut_scalar_expr(
&mut self,
expr: &mut ScalarExpr,
) -> ControlFlow<SemanticAnalysisError>
fn visit_mut_scalar_expr( &mut self, expr: &mut ScalarExpr, ) -> ControlFlow<SemanticAnalysisError>
Fold constant expressions
Source§fn visit_mut_statement(
&mut self,
_: &mut Statement,
) -> ControlFlow<SemanticAnalysisError>
fn visit_mut_statement( &mut self, _: &mut Statement, ) -> ControlFlow<SemanticAnalysisError>
It should not be possible to reach this, as we handle statements at the block level
fn visit_mut_expr( &mut self, expr: &mut Expr, ) -> ControlFlow<SemanticAnalysisError>
fn visit_mut_statement_block( &mut self, statements: &mut Vec<Statement>, ) -> ControlFlow<SemanticAnalysisError>
fn visit_mut_module(&mut self, module: &mut Module) -> ControlFlow<T>
fn visit_mut_import(&mut self, expr: &mut Import) -> ControlFlow<T>
fn visit_mut_constant(&mut self, expr: &mut Constant) -> ControlFlow<T>
fn visit_mut_evaluator_function( &mut self, expr: &mut EvaluatorFunction, ) -> ControlFlow<T>
fn visit_mut_function(&mut self, expr: &mut Function) -> ControlFlow<T>
fn visit_mut_bus(&mut self, expr: &mut Bus) -> ControlFlow<T>
fn visit_mut_periodic_column( &mut self, expr: &mut PeriodicColumn, ) -> ControlFlow<T>
fn visit_mut_public_input(&mut self, expr: &mut PublicInput) -> ControlFlow<T>
fn visit_mut_trace_segment(&mut self, expr: &mut TraceSegment) -> ControlFlow<T>
fn visit_mut_trace_binding(&mut self, expr: &mut TraceBinding) -> ControlFlow<T>
fn visit_mut_evaluator_trace_segment( &mut self, expr: &mut TraceSegment, ) -> ControlFlow<T>
fn visit_mut_evaluator_trace_binding( &mut self, expr: &mut TraceBinding, ) -> ControlFlow<T>
fn visit_mut_let(&mut self, expr: &mut Let) -> ControlFlow<T>
fn visit_mut_boundary_constraints( &mut self, exprs: &mut Vec<Statement>, ) -> ControlFlow<T>
fn visit_mut_enforce(&mut self, expr: &mut ScalarExpr) -> ControlFlow<T>
fn visit_mut_enforce_if( &mut self, expr: &mut ScalarExpr, selector: &mut ScalarExpr, ) -> ControlFlow<T>
fn visit_mut_enforce_all( &mut self, expr: &mut ListComprehension, ) -> ControlFlow<T>
fn visit_mut_bus_enforce( &mut self, expr: &mut ListComprehension, ) -> ControlFlow<T>
fn visit_mut_integrity_constraints( &mut self, exprs: &mut Vec<Statement>, ) -> ControlFlow<T>
fn visit_mut_binary_expr(&mut self, expr: &mut BinaryExpr) -> ControlFlow<T>
fn visit_mut_list_comprehension( &mut self, expr: &mut ListComprehension, ) -> ControlFlow<T>
fn visit_mut_call(&mut self, expr: &mut Call) -> ControlFlow<T>
fn visit_mut_bus_operation(&mut self, expr: &mut BusOperation) -> ControlFlow<T>
fn visit_mut_range_bound(&mut self, expr: &mut RangeBound) -> ControlFlow<T>
fn visit_mut_access_type(&mut self, expr: &mut AccessType) -> ControlFlow<T>
fn visit_mut_const_symbol_access( &mut self, expr: &mut ConstSymbolAccess, ) -> ControlFlow<T>
fn visit_mut_bounded_symbol_access( &mut self, expr: &mut BoundedSymbolAccess, ) -> ControlFlow<T>
fn visit_mut_symbol_access(&mut self, expr: &mut SymbolAccess) -> ControlFlow<T>
fn visit_mut_resolvable_identifier( &mut self, expr: &mut ResolvableIdentifier, ) -> ControlFlow<T>
fn visit_mut_identifier(&mut self, expr: &mut Identifier) -> ControlFlow<T>
fn visit_mut_typed_identifier( &mut self, expr: &mut (Identifier, Type), ) -> ControlFlow<T>
impl Eq for SemanticAnalysisError
Auto Trait Implementations§
impl Freeze for SemanticAnalysisError
impl RefUnwindSafe for SemanticAnalysisError
impl Send for SemanticAnalysisError
impl Sync for SemanticAnalysisError
impl Unpin for SemanticAnalysisError
impl UnwindSafe for SemanticAnalysisError
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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