pub enum CompileError {
UnknownVariable(Identifier),
UnknownFunction(Identifier, usize),
SameVariableInPattern(Identifier),
UnknownLabel(Identifier),
ModuleLoadError(ModuleLoadError),
UnknownStringFormatter(Identifier),
}
Expand description
§Function calling convention
§Caller
for func(arg0, arg1, closure2)
- push arg0
- push arg1
- push_closure { (copy of the current scope), (start address) }
- call (&func, return address)
§Callee
for func($arg0, $arg1, closure2)
- new_frame { scope id, return address }
- pop_closure
- pop slot_1
- pop slot_0
- (function body here)
- return // pop frame
§Important note
Things are compiled backwards. This makes us handling jump-ish code much easier, since most of the jumps (or reference to an address of a code to be precise) are going forward, so we don’t have to do something like “acquire a placeholder, replace it with jump when the jump target address was determined”.
Variants§
UnknownVariable(Identifier)
UnknownFunction(Identifier, usize)
SameVariableInPattern(Identifier)
UnknownLabel(Identifier)
ModuleLoadError(ModuleLoadError)
UnknownStringFormatter(Identifier)
Trait Implementations§
Source§impl Debug for CompileError
impl Debug for CompileError
Source§impl Display for CompileError
impl Display for CompileError
Source§impl Error for CompileError
impl Error for CompileError
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<CompileError> for XQError
impl From<CompileError> for XQError
Source§fn from(source: CompileError) -> Self
fn from(source: CompileError) -> Self
Converts to this type from the input type.
Source§impl From<ModuleLoadError> for CompileError
impl From<ModuleLoadError> for CompileError
Source§fn from(source: ModuleLoadError) -> Self
fn from(source: ModuleLoadError) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for CompileError
impl !RefUnwindSafe for CompileError
impl Send for CompileError
impl Sync for CompileError
impl Unpin 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
Mutably borrows from an owned value. Read more
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