Skip to content

Commit 0801263

Browse files
committed
Fix missing diagnostic span for impl Trait with const generics
1 parent 8fe73e8 commit 0801263

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

compiler/rustc_typeck/src/astconv/generics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
562562
.args
563563
.iter()
564564
.filter_map(|arg| match arg {
565-
GenericArg::Type(_) => Some(arg.span()),
565+
GenericArg::Type(_) | GenericArg::Const(_) => Some(arg.span()),
566566
_ => None,
567567
})
568568
.collect::<Vec<_>>();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#![feature(min_const_generics)]
2+
3+
trait Usizer {
4+
fn m(self) -> usize;
5+
}
6+
7+
fn f<const N: usize>(u: impl Usizer) -> usize {
8+
N + u.m()
9+
}
10+
11+
struct Usizable;
12+
13+
impl Usizer for Usizable {
14+
fn m(self) -> usize {
15+
16
16+
}
17+
}
18+
19+
fn main() {
20+
assert_eq!(f::<4usize>(Usizable), 20usize);
21+
//~^ ERROR cannot provide explicit generic arguments when `impl Trait` is used in argument position
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
2+
--> $DIR/impl-trait-with-const-arguments.rs:20:20
3+
|
4+
LL | assert_eq!(f::<4usize>(Usizable), 20usize);
5+
| ^^^^^^ explicit generic argument not allowed
6+
7+
error: aborting due to previous error
8+

0 commit comments

Comments
 (0)