summaryrefslogtreecommitdiffstats
path: root/tests/ui/higher-rank-trait-bounds
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/higher-rank-trait-bounds')
-rw-r--r--tests/ui/higher-rank-trait-bounds/fn-ptr.classic.stderr19
-rw-r--r--tests/ui/higher-rank-trait-bounds/fn-ptr.rs14
-rw-r--r--tests/ui/higher-rank-trait-bounds/issue-95230.new.stderr19
-rw-r--r--tests/ui/higher-rank-trait-bounds/issue-95230.rs6
4 files changed, 57 insertions, 1 deletions
diff --git a/tests/ui/higher-rank-trait-bounds/fn-ptr.classic.stderr b/tests/ui/higher-rank-trait-bounds/fn-ptr.classic.stderr
new file mode 100644
index 000000000..9af6bc45c
--- /dev/null
+++ b/tests/ui/higher-rank-trait-bounds/fn-ptr.classic.stderr
@@ -0,0 +1,19 @@
+error[E0277]: expected a `Fn<(&'w (),)>` closure, found `fn(&'w ())`
+ --> $DIR/fn-ptr.rs:12:5
+ |
+LL | ice();
+ | ^^^ expected an `Fn<(&'w (),)>` closure, found `fn(&'w ())`
+ |
+ = help: the trait `for<'w> Fn<(&'w (),)>` is not implemented for `fn(&'w ())`
+note: required by a bound in `ice`
+ --> $DIR/fn-ptr.rs:7:25
+ |
+LL | fn ice()
+ | --- required by a bound in this function
+LL | where
+LL | for<'w> fn(&'w ()): Fn(&'w ()),
+ | ^^^^^^^^^^ required by this bound in `ice`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/higher-rank-trait-bounds/fn-ptr.rs b/tests/ui/higher-rank-trait-bounds/fn-ptr.rs
new file mode 100644
index 000000000..853160f96
--- /dev/null
+++ b/tests/ui/higher-rank-trait-bounds/fn-ptr.rs
@@ -0,0 +1,14 @@
+// revisions: classic next
+//[next] compile-flags: -Ztrait-solver=next
+//[next] check-pass
+
+fn ice()
+where
+ for<'w> fn(&'w ()): Fn(&'w ()),
+{
+}
+
+fn main() {
+ ice();
+ //[classic]~^ ERROR expected a `Fn<(&'w (),)>` closure, found `fn(&'w ())`
+}
diff --git a/tests/ui/higher-rank-trait-bounds/issue-95230.new.stderr b/tests/ui/higher-rank-trait-bounds/issue-95230.new.stderr
new file mode 100644
index 000000000..d4bc5b672
--- /dev/null
+++ b/tests/ui/higher-rank-trait-bounds/issue-95230.new.stderr
@@ -0,0 +1,19 @@
+error[E0275]: overflow evaluating the requirement `for<'a> &'a mut Bar well-formed`
+ --> $DIR/issue-95230.rs:9:13
+ |
+LL | for<'a> &'a mut Self:;
+ | ^^^^^^^^^^^^
+ |
+ = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`issue_95230`)
+note: required by a bound in `Bar`
+ --> $DIR/issue-95230.rs:9:13
+ |
+LL | pub struct Bar
+ | --- required by a bound in this struct
+LL | where
+LL | for<'a> &'a mut Self:;
+ | ^^^^^^^^^^^^ required by this bound in `Bar`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0275`.
diff --git a/tests/ui/higher-rank-trait-bounds/issue-95230.rs b/tests/ui/higher-rank-trait-bounds/issue-95230.rs
index 92c506eab..769b6a925 100644
--- a/tests/ui/higher-rank-trait-bounds/issue-95230.rs
+++ b/tests/ui/higher-rank-trait-bounds/issue-95230.rs
@@ -1,4 +1,8 @@
-// check-pass
+// revisions: old new
+//[new] compile-flags: -Ztrait-solver=next
+//[old] check-pass
+//[new] known-bug: #109764
+
pub struct Bar
where