diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-10-19 18:20:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-19 18:20:23 +0200 |
| commit | 684fbd50ab49edfcfaec57c9b5e3cf6c05a3107f (patch) | |
| tree | 43437d03514190362bdcbeaa2120e44b98ee6b7d | |
| parent | a6919ef889fe48daf796268b9619f64020ca4afa (diff) | |
| parent | c0d29fe7d7a32dbadad161fe8a39bc996da3c633 (diff) | |
| download | rust-684fbd50ab49edfcfaec57c9b5e3cf6c05a3107f.tar.gz rust-684fbd50ab49edfcfaec57c9b5e3cf6c05a3107f.zip | |
Rollup merge of #78089 - varkor:opt_const_param_of-error, r=lcnr
Fix issue with specifying generic arguments for primitive types Fixes https://github.com/rust-lang/rust/issues/78005. r? @lcnr
| -rw-r--r-- | compiler/rustc_typeck/src/collect/type_of.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/usize-generic-argument-parent.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/usize-generic-argument-parent.stderr | 9 |
3 files changed, 24 insertions, 6 deletions
diff --git a/compiler/rustc_typeck/src/collect/type_of.rs b/compiler/rustc_typeck/src/collect/type_of.rs index 5e8c6211408..a754d4dbac7 100644 --- a/compiler/rustc_typeck/src/collect/type_of.rs +++ b/compiler/rustc_typeck/src/collect/type_of.rs @@ -112,12 +112,16 @@ pub(super) fn opt_const_param_of(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option< tcx.sess.delay_span_bug(tcx.def_span(def_id), "anon const with Res::Err"); return None; } - _ => span_bug!( - DUMMY_SP, - "unexpected anon const res {:?} in path: {:?}", - res, - path, - ), + _ => { + // If the user tries to specify generics on a type that does not take them, + // e.g. `usize<T>`, we may hit this branch, in which case we treat it as if + // no arguments have been passed. An error should already have been emitted. + tcx.sess.delay_span_bug( + tcx.def_span(def_id), + &format!("unexpected anon const res {:?} in path: {:?}", res, path), + ); + return None; + } }; generics diff --git a/src/test/ui/usize-generic-argument-parent.rs b/src/test/ui/usize-generic-argument-parent.rs new file mode 100644 index 00000000000..46b06e2b366 --- /dev/null +++ b/src/test/ui/usize-generic-argument-parent.rs @@ -0,0 +1,5 @@ +fn foo() { + let x: usize<foo>; //~ ERROR const arguments are not allowed for this type +} + +fn main() {} diff --git a/src/test/ui/usize-generic-argument-parent.stderr b/src/test/ui/usize-generic-argument-parent.stderr new file mode 100644 index 00000000000..f1eae3b5008 --- /dev/null +++ b/src/test/ui/usize-generic-argument-parent.stderr @@ -0,0 +1,9 @@ +error[E0109]: const arguments are not allowed for this type + --> $DIR/usize-generic-argument-parent.rs:2:18 + | +LL | let x: usize<foo>; + | ^^^ const argument not allowed + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0109`. |
