Enum CompileError
pub enum CompileError {
Parse(ParseError),
Io(String),
Build(String),
Runtime(String),
Ownership(LogosError),
}Expand description
Errors that can occur during the LOGOS compilation pipeline.
This enum represents the different stages where compilation can fail, from parsing through to runtime execution.
§Error Hierarchy
CompileError
├── Parse ← Lexing, parsing, or static analysis
├── Io ← File system operations
├── Build ← Rust compilation (cargo build)
├── Ownership ← Translated borrow checker errors
└── Runtime ← Program execution failure§Error Translation
The Ownership variant contains LOGOS-friendly error messages translated
from rustc’s borrow checker errors (E0382, E0505, E0597) using the
diagnostic module.
Variants§
Parse(ParseError)
Parsing or static analysis failed.
This includes lexer errors, syntax errors, escape analysis failures, ownership analysis failures, and Z3 verification failures.
Io(String)
File system operation failed.
Typically occurs when reading source files or writing output.
Build(String)
Rust compilation failed (cargo build).
Contains the raw stderr output from rustc when diagnostic translation was not possible.
Runtime(String)
Runtime execution failed.
Contains stderr output from the executed program.
Ownership(LogosError)
Translated ownership/borrow checker error with LOGOS-friendly message.
This variant is used when rustc reports errors like E0382 (use after move) and we can translate them into natural language error messages that reference the original LOGOS source.
Trait Implementations§
§impl Debug for CompileError
impl Debug for CompileError
§impl Display for CompileError
impl Display for CompileError
§impl Error for CompileError
impl Error for CompileError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<CompileError> for BuildError
impl From<CompileError> for BuildError
Source§fn from(e: CompileError) -> Self
fn from(e: CompileError) -> Self
Auto Trait Implementations§
impl Freeze for CompileError
impl RefUnwindSafe for CompileError
impl Send for CompileError
impl Sync for CompileError
impl Unpin for CompileError
impl UnsafeUnpin for CompileError
impl UnwindSafe for CompileError
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.