pub(crate) struct WrongNumberOfGenericArgs<'a, 'tcx> {
pub(crate) tcx: TyCtxt<'tcx>,
pub(crate) angle_brackets: AngleBrackets,
pub(crate) gen_args_info: GenericArgsInfo,
pub(crate) path_segment: &'a PathSegment<'a>,
pub(crate) gen_params: &'a Generics,
pub(crate) params_offset: usize,
pub(crate) gen_args: &'a GenericArgs<'a>,
pub(crate) def_id: DefId,
}
Expand description
Handles the wrong number of type / lifetime / ... arguments
family of error messages.
Fields§
§tcx: TyCtxt<'tcx>
§angle_brackets: AngleBrackets
§gen_args_info: GenericArgsInfo
§path_segment: &'a PathSegment<'a>
Offending path segment
gen_params: &'a Generics
Generic parameters as expected by type or trait
params_offset: usize
Index offset into parameters. Depends on whether Self
is included and on
number of lifetime parameters in case we’re processing missing or redundant
type or constant arguments.
gen_args: &'a GenericArgs<'a>
Generic arguments as provided by user
def_id: DefId
DefId of the generic type
Implementations§
source§impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx>
pub(crate) fn new( tcx: TyCtxt<'tcx>, gen_args_info: GenericArgsInfo, path_segment: &'a PathSegment<'_>, gen_params: &'a Generics, params_offset: usize, gen_args: &'a GenericArgs<'a>, def_id: DefId, ) -> Self
fn missing_lifetimes(&self) -> bool
fn kind(&self) -> &str
sourcefn is_in_trait_impl(&self) -> bool
fn is_in_trait_impl(&self) -> bool
Returns true if the generic type is a trait and is being referred to from one of its trait impls
fn num_provided_args(&self) -> usize
fn num_provided_lifetime_args(&self) -> usize
fn num_provided_type_or_const_args(&self) -> usize
fn num_expected_lifetime_args(&self) -> usize
fn num_expected_type_or_const_args(&self) -> usize
fn num_expected_type_or_const_args_including_defaults(&self) -> usize
fn num_missing_lifetime_args(&self) -> usize
fn num_missing_type_or_const_args(&self) -> usize
fn num_excess_lifetime_args(&self) -> usize
fn num_excess_type_or_const_args(&self) -> usize
fn too_many_args_provided(&self) -> bool
fn not_enough_args_provided(&self) -> bool
fn get_lifetime_args_offset(&self) -> usize
fn get_num_default_params(&self) -> usize
fn is_synth_provided(&self) -> bool
fn get_quantifier_and_bound(&self) -> (&'static str, usize)
fn get_lifetime_args_suggestions_from_param_names( &self, path_hir_id: HirId, num_params_to_take: usize, ) -> String
fn get_type_or_const_args_suggestions_from_param_names( &self, num_params_to_take: usize, ) -> String
fn get_unbound_associated_types(&self) -> Vec<String>
fn create_error_message(&self) -> String
sourcefn notify(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
fn notify(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
Builds the expected 1 type argument / supplied 2 type arguments
message.
fn suggest(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
sourcefn suggest_adding_args(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
fn suggest_adding_args(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
Suggests to add missing argument(s) when current invocation site already contains some generics:
type Map = HashMap<String>;
fn suggest_adding_lifetime_args( &self, err: &mut Diag<'_, impl EmissionGuarantee>, )
fn suggest_adding_type_and_const_args( &self, err: &mut Diag<'_, impl EmissionGuarantee>, )
sourcefn suggest_moving_args_from_assoc_fn_to_trait(
&self,
err: &mut Diag<'_, impl EmissionGuarantee>,
)
fn suggest_moving_args_from_assoc_fn_to_trait( &self, err: &mut Diag<'_, impl EmissionGuarantee>, )
Suggests moving redundant argument(s) of an associate function to the trait it belongs to.
Into::into::<Option<_>>(42) // suggests considering `Into::<Option<_>>::into(42)`
fn suggest_moving_args_from_assoc_fn_to_trait_for_qualified_path( &self, err: &mut Diag<'_, impl EmissionGuarantee>, qpath: &'tcx QPath<'tcx>, msg: String, num_assoc_fn_excess_args: usize, num_trait_generics_except_self: usize, )
fn suggest_moving_args_from_assoc_fn_to_trait_for_method_call( &self, err: &mut Diag<'_, impl EmissionGuarantee>, trait_def_id: DefId, expr: &'tcx Expr<'tcx>, msg: String, num_assoc_fn_excess_args: usize, num_trait_generics_except_self: usize, )
sourcefn suggest_removing_args_or_generics(
&self,
err: &mut Diag<'_, impl EmissionGuarantee>,
)
fn suggest_removing_args_or_generics( &self, err: &mut Diag<'_, impl EmissionGuarantee>, )
Suggests to remove redundant argument(s):
type Map = HashMap<String, String, String, String>;
sourcefn show_definition(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
fn show_definition(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
Builds the type defined here
message.
sourcefn note_synth_provided(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
fn note_synth_provided(&self, err: &mut Diag<'_, impl EmissionGuarantee>)
Add note if impl Trait
is explicitly specified.
Trait Implementations§
source§impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for WrongNumberOfGenericArgs<'_, '_>
impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for WrongNumberOfGenericArgs<'_, '_>
Auto Trait Implementations§
impl<'a, 'tcx> Freeze for WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> !RefUnwindSafe for WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> !Send for WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> !Sync for WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> Unpin for WrongNumberOfGenericArgs<'a, 'tcx>
impl<'a, 'tcx> !UnwindSafe for WrongNumberOfGenericArgs<'a, 'tcx>
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
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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 moresource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 88 bytes