about summary refs log tree commit diff
path: root/tests/ui/traits
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-10-15 15:24:22 -0400
committerMichael Goulet <michael@errs.io>2024-10-24 02:48:28 +0000
commit4217b8702dcd4e45ea506dd0fc8e1cec6115d52a (patch)
tree7d3e6cefc11909984e04928368e4d57af726f853 /tests/ui/traits
parent1920c66a8d96978e0d0e5db318fa3e0fb2e0f37e (diff)
downloadrust-4217b8702dcd4e45ea506dd0fc8e1cec6115d52a.tar.gz
rust-4217b8702dcd4e45ea506dd0fc8e1cec6115d52a.zip
Deeply normalize type trace in type error reporting
Diffstat (limited to 'tests/ui/traits')
-rw-r--r--tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.rs17
-rw-r--r--tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.stderr17
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.rs b/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.rs
new file mode 100644
index 00000000000..5c53b745933
--- /dev/null
+++ b/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.rs
@@ -0,0 +1,17 @@
+//@ compile-flags: -Znext-solver
+
+// Make sure we try to mention a deeply normalized type in a type mismatch error.
+
+trait Mirror {
+    type Assoc;
+}
+impl<T> Mirror for T {
+    type Assoc = T;
+}
+
+fn needs<T>(_: <T as Mirror>::Assoc) {}
+
+fn main() {
+    needs::<i32>(());
+    //~^ ERROR mismatched types
+}
diff --git a/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.stderr b/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.stderr
new file mode 100644
index 00000000000..88643945863
--- /dev/null
+++ b/tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.stderr
@@ -0,0 +1,17 @@
+error[E0308]: mismatched types
+  --> $DIR/deeply-normalize-type-expectation.rs:15:18
+   |
+LL |     needs::<i32>(());
+   |     ------------ ^^ expected `i32`, found `()`
+   |     |
+   |     arguments to this function are incorrect
+   |
+note: function defined here
+  --> $DIR/deeply-normalize-type-expectation.rs:12:4
+   |
+LL | fn needs<T>(_: <T as Mirror>::Assoc) {}
+   |    ^^^^^    -----------------------
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0308`.