Rollup merge of #88949 - FabianWolff:issue-87563, r=estebank
Fix handling of `hir::GenericArg::Infer` in `wrong_number_of_generic_args.rs`
Fixes #87563. More precisely, I have fixed the "index out of bounds" error, which is what #87563 is about. The example given there still ICEs due to running into this `todo!()`, but I'd say that this is a separate issue:
c3c0f80d60/compiler/rustc_typeck/src/astconv/mod.rs (L460-L463)
This commit is contained in:
commit
6f5c09849e
@ -136,10 +136,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
|
||||
AngleBrackets::Missing => 0,
|
||||
// Only lifetime arguments can be implied
|
||||
AngleBrackets::Implied => self.gen_args.args.len(),
|
||||
AngleBrackets::Available => self.gen_args.args.iter().fold(0, |acc, arg| match arg {
|
||||
hir::GenericArg::Lifetime(_) => acc + 1,
|
||||
_ => acc,
|
||||
}),
|
||||
AngleBrackets::Available => self.gen_args.num_lifetime_params(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,10 +145,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
|
||||
AngleBrackets::Missing => 0,
|
||||
// Only lifetime arguments can be implied
|
||||
AngleBrackets::Implied => 0,
|
||||
AngleBrackets::Available => self.gen_args.args.iter().fold(0, |acc, arg| match arg {
|
||||
hir::GenericArg::Type(_) | hir::GenericArg::Const(_) => acc + 1,
|
||||
_ => acc,
|
||||
}),
|
||||
AngleBrackets::Available => self.gen_args.num_generic_params(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -651,7 +645,9 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
|
||||
let mut found_redundant = false;
|
||||
for arg in self.gen_args.args {
|
||||
match arg {
|
||||
hir::GenericArg::Type(_) | hir::GenericArg::Const(_) => {
|
||||
hir::GenericArg::Type(_)
|
||||
| hir::GenericArg::Const(_)
|
||||
| hir::GenericArg::Infer(_) => {
|
||||
gen_arg_spans.push(arg.span());
|
||||
if gen_arg_spans.len() > self.num_expected_type_or_const_args() {
|
||||
found_redundant = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user