summaryrefslogtreecommitdiffstats
path: root/src/test/ui/unsized/box-instead-of-dyn-fn.stderr
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /src/test/ui/unsized/box-instead-of-dyn-fn.stderr
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/unsized/box-instead-of-dyn-fn.stderr')
-rw-r--r--src/test/ui/unsized/box-instead-of-dyn-fn.stderr42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/ui/unsized/box-instead-of-dyn-fn.stderr b/src/test/ui/unsized/box-instead-of-dyn-fn.stderr
new file mode 100644
index 000000000..c96c59afc
--- /dev/null
+++ b/src/test/ui/unsized/box-instead-of-dyn-fn.stderr
@@ -0,0 +1,42 @@
+error[E0308]: `if` and `else` have incompatible types
+ --> $DIR/box-instead-of-dyn-fn.rs:10:9
+ |
+LL | / if a % 2 == 0 {
+LL | | move || println!("{a}")
+ | | -----------------------
+ | | |
+ | | the expected closure
+ | | expected because of this
+LL | | } else {
+LL | | Box::new(move || println!("{}", b))
+ | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected closure, found struct `Box`
+LL | |
+LL | | }
+ | |_____- `if` and `else` have incompatible types
+ |
+ = note: expected closure `[closure@$DIR/box-instead-of-dyn-fn.rs:8:9: 8:16]`
+ found struct `Box<[closure@$DIR/box-instead-of-dyn-fn.rs:10:18: 10:25]>`
+
+error[E0746]: return type cannot have an unboxed trait object
+ --> $DIR/box-instead-of-dyn-fn.rs:5:56
+ |
+LL | fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> dyn Fn() + 'a {
+ | ^^^^^^^^^^^^^ doesn't have a size known at compile-time
+ |
+ = note: for information on trait objects, see <https://doc.rust-lang.org/book/ch17-02-trait-objects.html#using-trait-objects-that-allow-for-values-of-different-types>
+ = note: if all the returned values were of the same type you could use `impl Fn() + 'a` as the return type
+ = note: for information on `impl Trait`, see <https://doc.rust-lang.org/book/ch10-02-traits.html#returning-types-that-implement-traits>
+ = note: you can create a new `enum` with a variant for each returned type
+help: return a boxed trait object instead
+ |
+LL | fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> Box<dyn Fn() + 'a> {
+ | ++++ +
+help: ... and box this value
+ |
+LL | Box::new(move || println!("{a}"))
+ | +++++++++ +
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0308, E0746.
+For more information about an error, try `rustc --explain E0308`.