Skip to content

Commit d498eb5

Browse files
committed
Provide previous generic arguments to provided_kind
1 parent 108a1e5 commit d498eb5

File tree

4 files changed

+6
-17
lines changed

4 files changed

+6
-17
lines changed

compiler/rustc_hir_analysis/src/hir_ty_lowering/generics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ pub fn lower_generic_args<'tcx: 'a, 'a>(
282282
GenericParamDefKind::Const { .. },
283283
_,
284284
) => {
285-
args.push(ctx.provided_kind(param, arg));
285+
args.push(ctx.provided_kind(&args, param, arg));
286286
args_iter.next();
287287
params.next();
288288
}

compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs

+3-16
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ pub trait GenericArgsLowerer<'a, 'tcx> {
239239

240240
fn provided_kind(
241241
&mut self,
242+
preceding_args: &[ty::GenericArg<'tcx>],
242243
param: &ty::GenericParamDef,
243244
arg: &GenericArg<'tcx>,
244245
) -> ty::GenericArg<'tcx>;
@@ -437,29 +438,15 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
437438

438439
fn provided_kind(
439440
&mut self,
441+
preceding_args: &[ty::GenericArg<'tcx>],
440442
param: &ty::GenericParamDef,
441443
arg: &GenericArg<'tcx>,
442444
) -> ty::GenericArg<'tcx> {
443445
let tcx = self.lowerer.tcx();
444446

445447
if let Err(incorrect) = self.incorrect_args {
446448
if incorrect.invalid_args.contains(&(param.index as usize)) {
447-
// FIXME: use `param.to_error` once `provided_kind` is supplied a list of
448-
// all previous generic args.
449-
return match param.kind {
450-
GenericParamDefKind::Lifetime => {
451-
ty::Region::new_error(tcx, incorrect.reported).into()
452-
}
453-
GenericParamDefKind::Type { .. } => {
454-
Ty::new_error(tcx, incorrect.reported).into()
455-
}
456-
GenericParamDefKind::Const { .. } => ty::Const::new_error(
457-
tcx,
458-
incorrect.reported,
459-
Ty::new_error(tcx, incorrect.reported),
460-
)
461-
.into(),
462-
};
449+
return param.to_error(tcx, preceding_args);
463450
}
464451
}
465452

compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
12751275

12761276
fn provided_kind(
12771277
&mut self,
1278+
_preceding_args: &[ty::GenericArg<'tcx>],
12781279
param: &ty::GenericParamDef,
12791280
arg: &GenericArg<'tcx>,
12801281
) -> ty::GenericArg<'tcx> {

compiler/rustc_hir_typeck/src/method/confirm.rs

+1
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> {
383383

384384
fn provided_kind(
385385
&mut self,
386+
_preceding_args: &[ty::GenericArg<'tcx>],
386387
param: &ty::GenericParamDef,
387388
arg: &GenericArg<'tcx>,
388389
) -> ty::GenericArg<'tcx> {

0 commit comments

Comments
 (0)