1
Fork 0

Const parameters can not be inferred with _

Small improvement. Thanks varkor

Co-authored-by: varkor <github@varkor.com>

Bless
This commit is contained in:
Ethan Brierley 2020-12-05 14:40:56 +00:00
parent e6225434ff
commit 6845e22bba
4 changed files with 28 additions and 0 deletions

View file

@ -44,6 +44,13 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
// the match is non-exhaustive.
_ => bug!("invalid generic parameter kind {}", kind),
};
if let ParamKindOrd::Const { .. } = kind_ord {
if let GenericArg::Type(hir::Ty { kind: hir::TyKind::Infer, .. }) = arg {
err.help("const arguments cannot yet be inferred with `_`");
}
}
let arg_ord = match arg {
GenericArg::Lifetime(_) => ParamKindOrd::Lifetime,
GenericArg::Type(_) => ParamKindOrd::Type,

View file

@ -9,6 +9,8 @@ error[E0747]: type provided when a constant was expected
|
LL | foo::<_, {[1]}>();
| ^
|
= help: const arguments cannot yet be inferred with `_`
error[E0308]: mismatched types
--> $DIR/issue-62878.rs:11:15

View file

@ -0,0 +1,8 @@
#![feature(min_const_generics)]
fn foo<const N: usize, const K: usize>(data: [u32; N]) -> [u32; K] {
[0; K]
}
fn main() {
let a = foo::<_, 2>([0, 1, 2]);
//~^ ERROR type provided when a constant was expected
}

View file

@ -0,0 +1,11 @@
error[E0747]: type provided when a constant was expected
--> $DIR/inferred_const.rs:6:19
|
LL | let a = foo::<_, 2>([0, 1, 2]);
| ^
|
= help: const arguments cannot yet be inferred with `_`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0747`.