about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/typeck/issue-83693.rs19
-rw-r--r--src/test/ui/typeck/issue-83693.stderr39
-rw-r--r--src/test/ui/typeck/issue-84768.rs10
-rw-r--r--src/test/ui/typeck/issue-84768.stderr19
4 files changed, 87 insertions, 0 deletions
diff --git a/src/test/ui/typeck/issue-83693.rs b/src/test/ui/typeck/issue-83693.rs
new file mode 100644
index 00000000000..a4255822056
--- /dev/null
+++ b/src/test/ui/typeck/issue-83693.rs
@@ -0,0 +1,19 @@
+// Regression test for the ICE described in #83693.
+
+#![feature(fn_traits)]
+#![crate_type="lib"]
+
+impl F {
+//~^ ERROR: cannot find type `F` in this scope [E0412]
+    fn call() {
+        <Self as Fn(&TestResult)>::call
+        //~^ ERROR: cannot find type `TestResult` in this scope [E0412]
+        //~| associated type bindings are not allowed here [E0229]
+    }
+}
+
+fn call() {
+    <x as Fn(&usize)>::call
+    //~^ ERROR: cannot find type `x` in this scope [E0412]
+    //~| ERROR: associated type bindings are not allowed here [E0229]
+}
diff --git a/src/test/ui/typeck/issue-83693.stderr b/src/test/ui/typeck/issue-83693.stderr
new file mode 100644
index 00000000000..e5ef0d0d59f
--- /dev/null
+++ b/src/test/ui/typeck/issue-83693.stderr
@@ -0,0 +1,39 @@
+error[E0412]: cannot find type `F` in this scope
+  --> $DIR/issue-83693.rs:6:6
+   |
+LL | impl F {
+   |      ^ help: a trait with a similar name exists: `Fn`
+   | 
+  ::: $SRC_DIR/core/src/ops/function.rs:LL:COL
+   |
+LL | pub trait Fn<Args>: FnMut<Args> {
+   | ------------------------------- similarly named trait `Fn` defined here
+
+error[E0412]: cannot find type `TestResult` in this scope
+  --> $DIR/issue-83693.rs:9:22
+   |
+LL |         <Self as Fn(&TestResult)>::call
+   |                      ^^^^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `x` in this scope
+  --> $DIR/issue-83693.rs:16:6
+   |
+LL |     <x as Fn(&usize)>::call
+   |      ^ not found in this scope
+
+error[E0229]: associated type bindings are not allowed here
+  --> $DIR/issue-83693.rs:9:18
+   |
+LL |         <Self as Fn(&TestResult)>::call
+   |                  ^^^^^^^^^^^^^^^ associated type not allowed here
+
+error[E0229]: associated type bindings are not allowed here
+  --> $DIR/issue-83693.rs:16:11
+   |
+LL |     <x as Fn(&usize)>::call
+   |           ^^^^^^^^^^ associated type not allowed here
+
+error: aborting due to 5 previous errors
+
+Some errors have detailed explanations: E0229, E0412.
+For more information about an error, try `rustc --explain E0229`.
diff --git a/src/test/ui/typeck/issue-84768.rs b/src/test/ui/typeck/issue-84768.rs
new file mode 100644
index 00000000000..ffa92823b42
--- /dev/null
+++ b/src/test/ui/typeck/issue-84768.rs
@@ -0,0 +1,10 @@
+// Regression test for the ICE described in #84768.
+
+#![feature(fn_traits)]
+#![crate_type="lib"]
+
+fn transform_mut<F>(f: F) where F: for<'b> FnOnce(&'b mut u8) {
+    <F as FnOnce(&mut u8)>::call_once(f, 1)
+    //~^ ERROR: associated type bindings are not allowed here [E0229]
+    //~| ERROR: mismatched types [E0308]
+}
diff --git a/src/test/ui/typeck/issue-84768.stderr b/src/test/ui/typeck/issue-84768.stderr
new file mode 100644
index 00000000000..0a79d539ea9
--- /dev/null
+++ b/src/test/ui/typeck/issue-84768.stderr
@@ -0,0 +1,19 @@
+error[E0229]: associated type bindings are not allowed here
+  --> $DIR/issue-84768.rs:7:11
+   |
+LL |     <F as FnOnce(&mut u8)>::call_once(f, 1)
+   |           ^^^^^^^^^^^^^^^ associated type not allowed here
+
+error[E0308]: mismatched types
+  --> $DIR/issue-84768.rs:7:42
+   |
+LL |     <F as FnOnce(&mut u8)>::call_once(f, 1)
+   |                                          ^ expected tuple, found integer
+   |
+   = note: expected tuple `(&mut u8,)`
+               found type `{integer}`
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0229, E0308.
+For more information about an error, try `rustc --explain E0229`.