about summary refs log tree commit diff
path: root/tests/ui/inference/detect-old-time-version-format_description-parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/inference/detect-old-time-version-format_description-parse.rs')
-rw-r--r--tests/ui/inference/detect-old-time-version-format_description-parse.rs13
1 files changed, 9 insertions, 4 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();
 }