Skip to content

Commit 6f5c098

Browse files
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: https://github.com/rust-lang/rust/blob/c3c0f80d6081092faff801542dd82f0e2420152b/compiler/rustc_typeck/src/astconv/mod.rs#L460-L463
2 parents 307f2dd + 2a2bfd1 commit 6f5c098

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

compiler/rustc_typeck/src/structured_errors/wrong_number_of_generic_args.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
136136
AngleBrackets::Missing => 0,
137137
// Only lifetime arguments can be implied
138138
AngleBrackets::Implied => self.gen_args.args.len(),
139-
AngleBrackets::Available => self.gen_args.args.iter().fold(0, |acc, arg| match arg {
140-
hir::GenericArg::Lifetime(_) => acc + 1,
141-
_ => acc,
142-
}),
139+
AngleBrackets::Available => self.gen_args.num_lifetime_params(),
143140
}
144141
}
145142

@@ -148,10 +145,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
148145
AngleBrackets::Missing => 0,
149146
// Only lifetime arguments can be implied
150147
AngleBrackets::Implied => 0,
151-
AngleBrackets::Available => self.gen_args.args.iter().fold(0, |acc, arg| match arg {
152-
hir::GenericArg::Type(_) | hir::GenericArg::Const(_) => acc + 1,
153-
_ => acc,
154-
}),
148+
AngleBrackets::Available => self.gen_args.num_generic_params(),
155149
}
156150
}
157151

@@ -651,7 +645,9 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
651645
let mut found_redundant = false;
652646
for arg in self.gen_args.args {
653647
match arg {
654-
hir::GenericArg::Type(_) | hir::GenericArg::Const(_) => {
648+
hir::GenericArg::Type(_)
649+
| hir::GenericArg::Const(_)
650+
| hir::GenericArg::Infer(_) => {
655651
gen_arg_spans.push(arg.span());
656652
if gen_arg_spans.len() > self.num_expected_type_or_const_args() {
657653
found_redundant = true;

0 commit comments

Comments
 (0)