about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-03-22 08:38:26 +0100
committerMatthias Krüger <matthias.krueger@famsik.de>2024-03-22 08:38:26 +0100
commitb0e10083f3f0300fda3cce292edd7b3cce5f7284 (patch)
tree35240e2a742edb5ca29ae2cb4cd68df57319f735 /tests
parentd7e166d408c6c9f86ef2087c5a013c1600ca94f3 (diff)
downloadrust-b0e10083f3f0300fda3cce292edd7b3cce5f7284.tar.gz
rust-b0e10083f3f0300fda3cce292edd7b3cce5f7284.zip
add test for ice #113017 no entry found for key in generics_of.rs
Fixes #113017
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.rs20
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.stderr92
2 files changed, 112 insertions, 0 deletions
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.rs b/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.rs
new file mode 100644
index 00000000000..36e552ed88d
--- /dev/null
+++ b/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.rs
@@ -0,0 +1,20 @@
+// test for ICE "no entry found for key" in generics_of.rs #113017
+
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+pub fn String<V>(elem)
+//~^ ERROR expected one of `:`, `@`, or `|`, found `)`
+where
+    V: 'a,
+    //~^ ERROR use of undeclared lifetime name `'a`
+    for<const N: usize = { || {}}> V: 'a,
+    //~^ ERROR use of undeclared lifetime name `'a`
+    //~^^ ERROR only lifetime parameters can be used in this context
+    //~^^^ ERROR defaults for generic parameters are not allowed in `for<...>` binders
+    for<C2: , R2, R3: > <&str as IntoIterator>::Item: 'static,
+    //~^ ERROR `&` without an explicit lifetime name cannot be used here
+    //~^^ ERROR only lifetime parameters can be used in this context
+{}
+
+pub fn main() {}
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.stderr b/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.stderr
new file mode 100644
index 00000000000..54794022ebd
--- /dev/null
+++ b/tests/ui/const-generics/generic_const_exprs/ice-generics_of-no-entry-found-for-key-113017.stderr
@@ -0,0 +1,92 @@
+error: expected one of `:`, `@`, or `|`, found `)`
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:6:22
+   |
+LL | pub fn String<V>(elem)
+   |                      ^ expected one of `:`, `@`, or `|`
+   |
+   = note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
+help: if this is a `self` type, give it a parameter name
+   |
+LL | pub fn String<V>(self: elem)
+   |                  +++++
+help: if this is a parameter name, give it a type
+   |
+LL | pub fn String<V>(elem: TypeName)
+   |                      ++++++++++
+help: if this is a type, explicitly ignore the parameter name
+   |
+LL | pub fn String<V>(_: elem)
+   |                  ++
+
+error[E0261]: use of undeclared lifetime name `'a`
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:9:8
+   |
+LL |     V: 'a,
+   |        ^^ undeclared lifetime
+   |
+   = note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
+help: consider making the bound lifetime-generic with a new `'a` lifetime
+   |
+LL |     for<'a> V: 'a,
+   |     +++++++
+help: consider introducing lifetime `'a` here
+   |
+LL | pub fn String<'a, V>(elem)
+   |               +++
+
+error[E0261]: use of undeclared lifetime name `'a`
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:11:39
+   |
+LL |     for<const N: usize = { || {}}> V: 'a,
+   |                                       ^^ undeclared lifetime
+   |
+help: consider making the bound lifetime-generic with a new `'a` lifetime
+   |
+LL |     for<'a, const N: usize = { || {}}> V: 'a,
+   |         +++
+help: consider introducing lifetime `'a` here
+   |
+LL | pub fn String<'a, V>(elem)
+   |               +++
+
+error[E0637]: `&` without an explicit lifetime name cannot be used here
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:15:26
+   |
+LL |     for<C2: , R2, R3: > <&str as IntoIterator>::Item: 'static,
+   |                          ^ explicit lifetime name needed here
+   |
+help: consider introducing a higher-ranked lifetime here
+   |
+LL |     for<'a> for<C2: , R2, R3: > <&'a str as IntoIterator>::Item: 'static,
+   |     +++++++                       ++
+
+error[E0658]: only lifetime parameters can be used in this context
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:11:15
+   |
+LL |     for<const N: usize = { || {}}> V: 'a,
+   |               ^
+   |
+   = note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
+   = help: add `#![feature(non_lifetime_binders)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error[E0658]: only lifetime parameters can be used in this context
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:15:9
+   |
+LL |     for<C2: , R2, R3: > <&str as IntoIterator>::Item: 'static,
+   |         ^^    ^^  ^^
+   |
+   = note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
+   = help: add `#![feature(non_lifetime_binders)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error: defaults for generic parameters are not allowed in `for<...>` binders
+  --> $DIR/ice-generics_of-no-entry-found-for-key-113017.rs:11:9
+   |
+LL |     for<const N: usize = { || {}}> V: 'a,
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 7 previous errors
+
+Some errors have detailed explanations: E0261, E0637, E0658.
+For more information about an error, try `rustc --explain E0261`.