pub enum InferenceError {
    Failed(DiagnosticAdded),
    Cycle {
        var: InferenceVar,
    },
    TypeKindMismatch {
        ty0: TypeId,
        ty1: TypeId,
    },
    ImplKindMismatch {
        impl0: ImplId,
        impl1: ImplId,
    },
    GenericArgMismatch {
        garg0: GenericArgumentId,
        garg1: GenericArgumentId,
    },
    TraitMismatch {
        trt0: TraitId,
        trt1: TraitId,
    },
    ConstInferenceNotSupported,
    NoImplsFound {
        concrete_trait_id: ConcreteTraitId,
    },
    MultipleImplsFound {
        concrete_trait_id: ConcreteTraitId,
        impls: Vec<UninferredImpl>,
    },
    TypeNotInferred {
        ty: TypeId,
    },
    WillNotInfer {
        concrete_trait_id: ConcreteTraitId,
    },
    AlreadyReported,
}

Variants§

§

Failed(DiagnosticAdded)

§

Cycle

Fields

§

TypeKindMismatch

Fields

§

ImplKindMismatch

Fields

§impl0: ImplId
§impl1: ImplId
§

GenericArgMismatch

§

TraitMismatch

Fields

§trt0: TraitId
§trt1: TraitId
§

ConstInferenceNotSupported

§

NoImplsFound

Fields

§concrete_trait_id: ConcreteTraitId
§

MultipleImplsFound

Fields

§concrete_trait_id: ConcreteTraitId
§

TypeNotInferred

Fields

§

WillNotInfer

Fields

§concrete_trait_id: ConcreteTraitId
§

AlreadyReported

Implementations§

source§

impl InferenceError

source

pub fn format(&self, db: &(dyn SemanticGroup + 'static)) -> String

source§

impl InferenceError

source

pub fn report( &self, diagnostics: &mut SemanticDiagnostics, stable_ptr: SyntaxStablePtrId ) -> DiagnosticAdded

Trait Implementations§

source§

impl Clone for InferenceError

source§

fn clone(&self) -> InferenceError

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 InferenceError

source§

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

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

impl From<DiagnosticAdded> for InferenceError

source§

fn from(value: DiagnosticAdded) -> Self

Converts to this type from the input type.
source§

impl Hash for InferenceError

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 PartialEq<InferenceError> for InferenceError

source§

fn eq(&self, other: &InferenceError) -> 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<'a> SemanticRewriter<ConcreteEnumId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteEnumLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteExternTypeId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteExternTypeLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteFunction, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteFunctionWithBody, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteFunctionWithBodyId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteImplId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteImplLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteStructId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteStructLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteTraitGenericFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteTraitGenericFunctionLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteTraitId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteTraitLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteTypeId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConcreteVariant, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Constant, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ConstantId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<EnumId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Expr, InferenceError> for Inference<'a>

source§

fn rewrite(&mut self, value: Expr) -> Result<Expr, InferenceError>

source§

impl<'a> SemanticRewriter<ExprAssignment, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprBlock, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprConstant, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprDesnap, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprEnumVariantCtor, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprFunctionCall, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprFunctionCallArg, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprIf, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprLiteral, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprLoop, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprMatch, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprMemberAccess, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprMissing, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprPropagateError, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprSnapshot, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprStructCtor, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprTuple, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprVar, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExprVarMemberPath, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExternFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ExternTypeId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<FreeFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<FunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<FunctionLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericArgumentId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericFunctionWithBodyId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericParam, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericParamConst, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericParamId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericParamImpl, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<GenericParamType, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Id<Expr>, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Id<Statement>, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplAliasId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplDefId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplGenericFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplGenericFunctionWithBodyId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ImplId, InferenceError> for Inference<'a>

source§

fn rewrite(&mut self, value: ImplId) -> InferenceResult<ImplId>

source§

impl<'a> SemanticRewriter<ImplVar, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<LiteralId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<LocalVarId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<LocalVariable, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<MatchArm, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Member, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<MemberId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<ParamId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Parameter, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Pattern, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternEnumVariant, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternLiteral, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternOtherwise, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternStruct, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternTuple, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<PatternVariable, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Signature, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<Statement, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StatementBreak, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StatementContinue, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StatementExpr, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StatementLet, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StatementReturn, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<StructId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<TraitFunctionId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<TraitId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<TypeId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<TypeLongId, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<TypeVar, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<UninferredImpl, InferenceError> for Inference<'a>

source§

impl<'a> SemanticRewriter<VarId, InferenceError> for Inference<'a>

source§

fn rewrite(&mut self, value: VarId) -> Result<VarId, InferenceError>

source§

impl<'a> SemanticRewriter<VariantId, InferenceError> for Inference<'a>

source§

impl Eq for InferenceError

source§

impl StructuralEq for InferenceError

source§

impl StructuralPartialEq for InferenceError

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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<T0, T1, E, TRewriter> SemanticRewriter<(T0, T1), E> for TRewriterwhere TRewriter: SemanticRewriter<T0, E> + SemanticRewriter<T1, E>,

source§

fn rewrite(&mut self, value: (T0, T1)) -> Result<(T0, T1), E>

source§

impl<T, E, TRewriter> SemanticRewriter<Box<T, Global>, E> for TRewriterwhere T: Clone, TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Box<T, Global>) -> Result<Box<T, Global>, E>

source§

impl<T, E, TRewriter> SemanticRewriter<Option<T>, E> for TRewriterwhere TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Option<T>) -> Result<Option<T>, E>

source§

impl<T, E, TRewriter, E2> SemanticRewriter<Result<T, E2>, E> for TRewriterwhere TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Result<T, E2>) -> Result<Result<T, E2>, E>

source§

impl<T, E, TRewriter> SemanticRewriter<Vec<T, Global>, E> for TRewriterwhere TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Vec<T, Global>) -> Result<Vec<T, Global>, E>

source§

impl<T> ToOwned for Twhere 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, U> TryFrom<U> for Twhere 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 Twhere 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.
source§

impl<T> Upcast<T> for Twhere T: ?Sized,

source§

fn upcast(&self) -> &T

source§

impl<T> UpcastMut<T> for Twhere T: ?Sized,

source§

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