about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--rust-version2
-rw-r--r--tests/fail/issue-miri-2432.rs19
-rw-r--r--tests/fail/issue-miri-2432.stderr15
3 files changed, 35 insertions, 1 deletions
diff --git a/rust-version b/rust-version
index b948bc8b4e6..927ced2a2d1 100644
--- a/rust-version
+++ b/rust-version
@@ -1 +1 @@
-2fdbf075cf502431ca9fee6616331b32e34f25de
+a86705942c4cfaaee60f2e7308ca2bca703a710f
diff --git a/tests/fail/issue-miri-2432.rs b/tests/fail/issue-miri-2432.rs
new file mode 100644
index 00000000000..f822479c436
--- /dev/null
+++ b/tests/fail/issue-miri-2432.rs
@@ -0,0 +1,19 @@
+#![allow(where_clauses_object_safety)]
+
+trait Trait {}
+
+trait X {
+    fn foo(&self)
+    where
+        Self: Trait;
+}
+
+impl X for () {
+    fn foo(&self) {}
+}
+
+impl Trait for dyn X {}
+
+pub fn main() {
+    <dyn X as X>::foo(&()); //~ERROR: trying to call something that is not a method
+}
diff --git a/tests/fail/issue-miri-2432.stderr b/tests/fail/issue-miri-2432.stderr
new file mode 100644
index 00000000000..a5c9300fb07
--- /dev/null
+++ b/tests/fail/issue-miri-2432.stderr
@@ -0,0 +1,15 @@
+error: Undefined Behavior: `dyn` call trying to call something that is not a method
+  --> $DIR/issue-miri-2432.rs:LL:CC
+   |
+LL |     <dyn X as X>::foo(&());
+   |     ^^^^^^^^^^^^^^^^^^^^^^ `dyn` call trying to call something that is not a method
+   |
+   = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
+   = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
+   = note: backtrace:
+   = note: inside `main` at $DIR/issue-miri-2432.rs:LL:CC
+
+note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
+
+error: aborting due to previous error
+