Struct erg_compiler::error::CompileError

source ·
pub struct CompileError {
    pub core: Box<ErrorCore>,
    pub input: Input,
    pub caused_by: String,
    pub theme: Theme,
}

Fields§

§core: Box<ErrorCore>§input: Input§caused_by: String§theme: Theme

Implementations§

source§

impl CompileError

source

pub fn not_const_expr( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn invalid_literal( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source§

impl CompileError

source

pub fn syntax_error( input: Input, errno: usize, loc: Location, caused_by: String, desc: String, hint: Option<String> ) -> Self

source

pub fn unused_expr_warning( input: Input, errno: usize, expr: &Expr, caused_by: String ) -> Self

source

pub fn unused_subroutine_warning( input: Input, errno: usize, expr: &Expr, caused_by: String ) -> Self

source

pub fn duplicate_decl_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn duplicate_definition_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn violate_decl_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, spec_t: &Type, found_t: &Type ) -> Self

source

pub fn no_var_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, similar_name: Option<&str> ) -> Self

source

pub fn not_comptime_fn_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, similar_name: Option<&str> ) -> Self

source

pub fn detailed_no_var_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, similar_name: Option<&str>, similar_info: Option<&VarInfo> ) -> Self

TODO: replace no_var_error with this function

source

pub fn access_before_def_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, defined_line: u32, similar_name: Option<&str> ) -> Self

source

pub fn access_deleted_var_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, del_line: u32, similar_name: Option<&str> ) -> Self

source

pub fn no_type_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, similar_name: Option<&str> ) -> Self

source

pub fn not_a_type_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn type_not_found( input: Input, errno: usize, loc: Location, caused_by: String, typ: &Type ) -> Self

source

pub fn no_attr_error( input: Input, errno: usize, loc: Location, caused_by: String, obj_t: &Type, name: &str, similar_name: Option<&str> ) -> Self

source

pub fn detailed_no_attr_error( input: Input, errno: usize, loc: Location, caused_by: String, obj_t: &Type, name: &str, similar_name: Option<&str>, similar_info: Option<&VarInfo> ) -> Self

source

pub fn singular_no_attr_error( input: Input, errno: usize, loc: Location, caused_by: String, obj_name: &str, obj_t: &Type, name: &str, similar_name: Option<&str> ) -> Self

source

pub fn shadow_special_namespace_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn reassign_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn del_error( input: Input, errno: usize, ident: &Identifier, is_const: bool, caused_by: String ) -> Self

source

pub fn visibility_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, vis: Visibility ) -> Self

source

pub fn override_error<S: Into<String>>( input: Input, errno: usize, name: &str, name_loc: Location, superclass: &Type, caused_by: S ) -> Self

source

pub fn inheritance_error( input: Input, errno: usize, class: String, loc: Location, caused_by: String ) -> Self

source

pub fn file_error( input: Input, errno: usize, desc: String, loc: Location, caused_by: String, hint: Option<String> ) -> Self

source

pub fn module_env_error( input: Input, errno: usize, mod_name: &str, loc: Location, caused_by: String ) -> Self

source

pub fn import_error( input: Input, errno: usize, desc: String, loc: Location, caused_by: String, similar_erg_mod: Option<Str>, similar_py_mod: Option<Str> ) -> Self

source

pub fn inner_typedef_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn declare_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn invalid_type_cast_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, base: &Type, cast_to: &Type, hint: Option<String> ) -> Self

source

pub fn set_homogeneity_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source§

impl CompileError

source

pub fn unused_warning( input: Input, errno: usize, loc: Location, name: &str, caused_by: String ) -> Self

source

pub fn union_return_type_warning( input: Input, errno: usize, loc: Location, caused_by: String, fn_name: &str, typ: &Type ) -> Self

source

pub fn builtin_exists_warning( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn use_cast_warning( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn same_name_instance_attr_warning( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source§

impl CompileError

source

pub fn dummy(input: Input, errno: usize) -> Self

source

pub fn unreachable(input: Input, fn_name: &str, line: u32) -> Self

source

pub fn checker_bug( input: Input, errno: usize, loc: Location, fn_name: &str, line: u32 ) -> Self

source

pub fn no_type_spec_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn callable_impl_error<'a, C: Locational + Display>( input: Input, errno: usize, callee: &C, param_ts: impl Iterator<Item = &'a Type>, caused_by: String ) -> Self

source

pub fn type_mismatch_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, nth_param: Option<usize>, expect: &Type, found: &Type, candidates: Option<Set<Type>>, hint: Option<String> ) -> Self

source

pub fn return_type_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, expect: &Type, found: &Type ) -> Self

source

pub fn uninitialized_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, t: &Type ) -> Self

source

pub fn argument_error( input: Input, errno: usize, loc: Location, caused_by: String, expect: usize, found: usize ) -> Self

source

pub fn param_error( input: Input, errno: usize, loc: Location, caused_by: String, expect: usize, found: usize ) -> Self

source

pub fn default_param_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str ) -> Self

source

pub fn default_param_not_found_error( input: Input, errno: usize, loc: Location, caused_by: String, param_name: &str, similar_name: Option<&str> ) -> Self

source

pub fn match_error( input: Input, errno: usize, loc: Location, caused_by: String, expr_t: &Type, union_pat_t: &Type, arm_ts: Vec<Type> ) -> Self

source

pub fn infer_error( input: Input, errno: usize, loc: Location, caused_by: String, expr: &str ) -> Self

source

pub fn dummy_infer_error(input: Input, fn_name: &str, line: u32) -> Self

source

pub fn not_relation(input: Input, fn_name: &str, line: u32) -> Self

source

pub fn too_many_args_error( input: Input, errno: usize, loc: Location, callee_name: &str, caused_by: String, params_len: usize, pos_args_len: usize, kw_args_len: usize ) -> Self

source

pub fn args_missing_error( input: Input, errno: usize, loc: Location, callee_name: &str, caused_by: String, missing_params: Vec<Str> ) -> Self

source

pub fn multiple_args_error( input: Input, errno: usize, loc: Location, callee_name: &str, caused_by: String, arg_name: &str ) -> Self

source

pub fn unexpected_kw_arg_error( input: Input, errno: usize, loc: Location, callee_name: &str, caused_by: String, param_name: &str, similar_name: Option<&str> ) -> Self

source

pub fn unification_error( input: Input, errno: usize, lhs_t: &Type, rhs_t: &Type, loc: Location, caused_by: String ) -> Self

source

pub fn re_unification_error( input: Input, errno: usize, lhs_t: &Type, rhs_t: &Type, loc: Location, caused_by: String ) -> Self

source

pub fn subtyping_error( input: Input, errno: usize, sub_t: &Type, sup_t: &Type, loc: Location, caused_by: String ) -> Self

source

pub fn invariant_error( input: Input, errno: usize, sub_t: &Type, sup_t: &Type, loc: Location, caused_by: String ) -> Self

source

pub fn pred_unification_error( input: Input, errno: usize, sub_pred: &Predicate, super_pred: &Predicate, loc: Location, caused_by: String ) -> Self

source

pub fn no_candidate_error( input: Input, errno: usize, proj: &Type, loc: Location, caused_by: String, hint: Option<String> ) -> Self

source

pub fn no_trait_impl_error( input: Input, errno: usize, class: &Type, trait_: &Type, loc: Location, caused_by: String, hint: Option<String> ) -> Self

source

pub fn method_definition_error( input: Input, errno: usize, loc: Location, caused_by: String, name: &str, hint: Option<String> ) -> Self

source

pub fn specialization_error( _input: Input, _errno: usize, _loc: Location, _caused_by: String, _member_name: &str, _base_trait_type: &Type, _expect: &Type, _found: &Type ) -> Self

source

pub fn trait_member_type_error( input: Input, errno: usize, loc: Location, caused_by: String, member_name: &str, trait_type: &Type, expect: &Type, found: &Type, hint: Option<String> ) -> Self

source

pub fn trait_member_not_defined_error( input: Input, errno: usize, caused_by: String, member_name: &str, trait_type: &Type, class_type: &Type, hint: Option<String>, loc: Location ) -> Self

source

pub fn not_in_trait_error( input: Input, errno: usize, caused_by: String, member_name: &str, trait_type: &Type, class_type: &Type, hint: Option<String>, loc: Location ) -> Self

source

pub fn tyvar_not_defined_error( input: Input, errno: usize, name: &str, loc: Location, caused_by: String ) -> Self

source

pub fn ambiguous_type_error( input: Input, errno: usize, expr: &(impl Locational + Display), candidates: &[Type], caused_by: String ) -> Self

source

pub fn ambiguous_method_error( input: Input, errno: usize, receiver: &(impl Locational + NoTypeDisplay), attr: &(impl Locational + Display), candidates: &[Type], caused_by: String ) -> Self

source

pub fn tp_to_type_error( input: Input, errno: usize, tp: &TyParam, loc: Location, caused_by: String ) -> Self

source

pub fn implicit_widening_error( input: Input, errno: usize, loc: Location, caused_by: String, before: &Type, after: &Type ) -> Self

source

pub fn overload_error<'a>( input: Input, errno: usize, loc: Location, caused_by: String, pos_args: Vec<ParamTy>, kw_args: Vec<ParamTy>, found: impl Iterator<Item = &'a Type> ) -> Self

source

pub fn self_type_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source§

impl CompileError

source

pub fn unnecessary_tyvar_warning( input: Input, errno: usize, loc: Location, name: &str, caused_by: String ) -> Self

source§

impl CompileError

source

pub fn new(core: ErrorCore, input: Input, caused_by: String) -> Self

source

pub fn compiler_bug( errno: usize, input: Input, loc: Location, fn_name: &str, line: u32 ) -> Self

source

pub fn stack_bug( input: Input, loc: Location, stack_len: u32, block_id: usize, fn_name: &str ) -> Self

source

pub fn feature_error( input: Input, errno: usize, loc: Location, name: &str, caused_by: String ) -> Self

source

pub fn system_exit() -> Self

source§

impl CompileError

source

pub fn has_effect( input: Input, errno: usize, expr: &Expr, caused_by: String ) -> Self

source

pub fn constructor_destructor_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn proc_assign_error( input: Input, errno: usize, loc: Location, caused_by: String ) -> Self

source

pub fn touch_mut_error( input: Input, errno: usize, expr: &Expr, caused_by: String ) -> Self

source§

impl CompileError

source

pub fn move_error( input: Input, errno: usize, name: &str, name_loc: Location, moved_loc: Location, caused_by: String ) -> Self

Trait Implementations§

source§

impl Clone for CompileError

source§

fn clone(&self) -> CompileError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CompileError

source§

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

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

impl Display for CompileError

source§

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

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

impl Error for CompileError

1.30.0 · source§

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

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 ErrorDisplay for CompileError

source§

fn core(&self) -> &ErrorCore

source§

fn input(&self) -> &Input

source§

fn caused_by(&self) -> &str

The block name the error caused. This will be None if the error occurred before semantic analysis.
source§

fn ref_inner(&self) -> Option<&Self>

the previous error that caused this error.
source§

fn write_to_stderr(&self)

source§

fn write_to<W>(&self, w: &mut W)
where W: Write,

source§

fn show(&self) -> String

source§

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

for fmt::Display
source§

impl From<CompileError> for CompileErrors

source§

fn from(err: CompileError) -> Self

Converts to this type from the input type.
source§

impl From<CompileError> for ParseError

source§

fn from(err: CompileError) -> Self

Converts to this type from the input type.
source§

impl From<CompileError> for ParserRunnerError

source§

fn from(err: CompileError) -> Self

Converts to this type from the input type.
source§

impl From<CompileError> for ParserRunnerErrors

source§

fn from(err: CompileError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for CompileError

source§

fn from(value: Error) -> Self

Converts to this type from the input type.
source§

impl From<ParserRunnerError> for CompileError

source§

fn from(err: ParserRunnerError) -> Self

Converts to this type from the input type.
source§

impl FromIterator<CompileError> for CompileErrors

source§

fn from_iter<I: IntoIterator<Item = CompileError>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for CompileError

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl MultiErrorDisplay<CompileError> for CompileErrors

source§

fn write_all_stderr(&self)

source§

fn write_all_to(&self, w: &mut impl Write)

source§

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

source§

impl PartialEq for CompileError

source§

fn eq(&self, other: &CompileError) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Stream<CompileError> for CompileErrors

source§

fn payload(self) -> Vec<CompileError>

source§

fn ref_payload(&self) -> &Vec<CompileError>

source§

fn ref_mut_payload(&mut self) -> &mut Vec<CompileError>

source§

fn clear(&mut self)

source§

fn len(&self) -> usize

source§

fn size(&self) -> usize

source§

fn is_empty(&self) -> bool

source§

fn insert(&mut self, idx: usize, elem: T)

source§

fn remove(&mut self, idx: usize) -> T

source§

fn push(&mut self, elem: T)

source§

fn append<S>(&mut self, s: &mut S)
where S: Stream<T>,

source§

fn pop(&mut self) -> Option<T>

source§

fn lpop(&mut self) -> Option<T>

source§

fn get(&self, idx: usize) -> Option<&T>

source§

fn get_mut(&mut self, idx: usize) -> Option<&mut T>

source§

fn first(&self) -> Option<&T>

source§

fn first_mut(&mut self) -> Option<&mut T>

source§

fn last(&self) -> Option<&T>

source§

fn last_mut(&mut self) -> Option<&mut T>

source§

fn iter(&self) -> Iter<'_, T>

source§

fn iter_mut(&mut self) -> IterMut<'_, T>

source§

fn take_all(&mut self) -> Vec<T>

source§

fn extend<I>(&mut self, iter: I)
where I: IntoIterator<Item = T>,

source§

fn split_off(&mut self, at: usize) -> Vec<T>

source§

fn retain(&mut self, f: impl FnMut(&T) -> bool)

Remove all elements that don’t satisfy the predicate.
source§

fn concat(self, other: Self) -> Self

source§

impl Eq for CompileError

source§

impl StructuralPartialEq for CompileError

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

source§

default 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>,

§

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>,

§

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.