about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/ui/inference/detect-old-time-version-format_description-parse.rs13
-rw-r--r--tests/ui/inference/detect-old-time-version-format_description-parse.stderr11
2 files changed, 16 insertions, 8 deletions
diff --git a/tests/ui/inference/detect-old-time-version-format_description-parse.rs b/tests/ui/inference/detect-old-time-version-format_description-parse.rs
index 453a795e768..386b2a3bf3c 100644
--- a/tests/ui/inference/detect-old-time-version-format_description-parse.rs
+++ b/tests/ui/inference/detect-old-time-version-format_description-parse.rs
@@ -1,8 +1,13 @@
 #![crate_name = "time"]
+#![crate_type = "lib"]
 
-fn main() {
-    let items = Box::new(vec![]); //~ ERROR E0282
+// This code compiled without error in Rust 1.79, but started failing in 1.80
+// after the addition of several `impl FromIterator<_> for Box<str>`.
+
+pub fn parse() -> Option<Vec<()>> {
+    let iter = std::iter::once(Some(())).map(|o| o.map(Into::into));
+    let items = iter.collect::<Option<Box<_>>>()?; //~ ERROR E0282
+    //~^ NOTE this is an inference error on crate `time` caused by an API change in Rust 1.80.0; update `time` to version `>=0.3.35`
+    Some(items.into())
     //~^ NOTE type must be known at this point
-    //~| NOTE this is an inference error on crate `time` caused by an API change in Rust 1.80.0; update `time` to version `>=0.3.35`
-    items.into();
 }
diff --git a/tests/ui/inference/detect-old-time-version-format_description-parse.stderr b/tests/ui/inference/detect-old-time-version-format_description-parse.stderr
index 2949a5dcfec..a70ce9dd268 100644
--- a/tests/ui/inference/detect-old-time-version-format_description-parse.stderr
+++ b/tests/ui/inference/detect-old-time-version-format_description-parse.stderr
@@ -1,8 +1,11 @@
-error[E0282]: type annotations needed for `Box<Vec<_>>`
-  --> $DIR/detect-old-time-version-format_description-parse.rs:4:9
+error[E0282]: type annotations needed for `Box<_>`
+  --> $DIR/detect-old-time-version-format_description-parse.rs:9:9
    |
-LL |     let items = Box::new(vec![]);
-   |         ^^^^^   ---------------- type must be known at this point
+LL |     let items = iter.collect::<Option<Box<_>>>()?;
+   |         ^^^^^
+LL |
+LL |     Some(items.into())
+   |                ---- type must be known at this point
    |
    = note: this is an inference error on crate `time` caused by an API change in Rust 1.80.0; update `time` to version `>=0.3.35` by calling `cargo update`