about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-06-21 08:47:02 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-06-21 08:47:02 +0000
commitd2ea7e2059601fec28f39e250ecef9e160468f8d (patch)
tree57b9b002fe69cc018316884ae72e65e093aafd29 /src
parent42dcf70f99c21c6d59ad036e33e846769b369fff (diff)
downloadrust-d2ea7e2059601fec28f39e250ecef9e160468f8d.tar.gz
rust-d2ea7e2059601fec28f39e250ecef9e160468f8d.zip
Avoid an ICE and instead let the compiler report a useful error
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/issues/issue-98299.rs18
-rw-r--r--src/test/ui/issues/issue-98299.stderr9
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-98299.rs b/src/test/ui/issues/issue-98299.rs
new file mode 100644
index 00000000000..63c058f91fc
--- /dev/null
+++ b/src/test/ui/issues/issue-98299.rs
@@ -0,0 +1,18 @@
+use std::convert::TryFrom;
+
+pub fn test_usage(p: ()) {
+    SmallCString::try_from(p).map(|cstr| cstr);
+    //~^ ERROR: type annotations needed
+}
+
+pub struct SmallCString<const N: usize> {}
+
+impl<const N: usize> TryFrom<()> for SmallCString<N> {
+    type Error = ();
+
+    fn try_from(path: ()) -> Result<Self, Self::Error> {
+        unimplemented!();
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-98299.stderr b/src/test/ui/issues/issue-98299.stderr
new file mode 100644
index 00000000000..a61bffa91e7
--- /dev/null
+++ b/src/test/ui/issues/issue-98299.stderr
@@ -0,0 +1,9 @@
+error[E0282]: type annotations needed
+  --> $DIR/issue-98299.rs:4:5
+   |
+LL |     SmallCString::try_from(p).map(|cstr| cstr);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for enum `Result<SmallCString<{_: usize}>, ()>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0282`.