summaryrefslogtreecommitdiffstats
path: root/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr')
-rw-r--r--src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr194
1 files changed, 194 insertions, 0 deletions
diff --git a/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr b/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
new file mode 100644
index 000000000..10510c175
--- /dev/null
+++ b/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
@@ -0,0 +1,194 @@
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:5:5
+ |
+LL | fn foo() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+...
+LL | 1u32
+ | ^^^^ expected `i32`, found `u32`
+
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:12:16
+ |
+LL | fn bar() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+...
+LL | return 1u32;
+ | ^^^^ expected `i32`, found `u32`
+
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:20:9
+ |
+LL | fn baz() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+...
+LL | 1u32
+ | ^^^^ expected `i32`, found `u32`
+
+error[E0308]: `if` and `else` have incompatible types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:28:9
+ |
+LL | / if false {
+LL | | 0i32
+ | | ---- expected because of this
+LL | | } else {
+LL | | 1u32
+ | | ^^^^ expected `i32`, found `u32`
+LL | | }
+ | |_____- `if` and `else` have incompatible types
+
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:35:14
+ |
+LL | fn bat() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+...
+LL | _ => 1u32,
+ | ^^^^ expected `i32`, found `u32`
+
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:40:5
+ |
+LL | fn can() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+LL | / match 13 {
+LL | | 0 => return 0i32,
+LL | | 1 => 1u32,
+LL | | _ => 2u32,
+LL | | }
+ | |_____^ expected `i32`, found `u32`
+
+error[E0308]: mismatched types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:53:13
+ |
+LL | fn cat() -> impl std::fmt::Display {
+ | ---------------------- expected `_` because of return type
+...
+LL | 1u32
+ | ^^^^ expected `i32`, found `u32`
+
+error[E0308]: `match` arms have incompatible types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:61:14
+ |
+LL | / match 13 {
+LL | | 0 => 0i32,
+ | | ---- this is found to be of type `i32`
+LL | | 1 => 1u32,
+ | | ^^^^ expected `i32`, found `u32`
+LL | | _ => 2u32,
+LL | | }
+ | |_____- `match` arms have incompatible types
+
+error[E0308]: `if` and `else` have incompatible types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:97:9
+ |
+LL | / if let Some(42) = Some(42) {
+LL | | 0i32
+ | | ---- expected because of this
+LL | | } else {
+LL | | 1u32
+ | | ^^^^ expected `i32`, found `u32`
+LL | | }
+ | |_____- `if` and `else` have incompatible types
+
+error[E0746]: return type cannot have an unboxed trait object
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:66:13
+ |
+LL | fn hat() -> dyn std::fmt::Display {
+ | ^^^^^^^^^^^^^^^^^^^^^ 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 std::fmt::Display` 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 hat() -> Box<dyn std::fmt::Display> {
+ | ++++ +
+help: ... and box this value
+ |
+LL | return Box::new(0i32);
+ | +++++++++ +
+help: ... and box this value
+ |
+LL | Box::new(1u32)
+ | +++++++++ +
+
+error[E0308]: `match` arms have incompatible types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:80:14
+ |
+LL | / match 13 {
+LL | | 0 => 0i32,
+ | | ---- this is found to be of type `i32`
+LL | | 1 => 1u32,
+ | | ^^^^ expected `i32`, found `u32`
+LL | | _ => 2u32,
+LL | | }
+ | |_____- `match` arms have incompatible types
+
+error[E0746]: return type cannot have an unboxed trait object
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:77:13
+ |
+LL | fn pug() -> dyn std::fmt::Display {
+ | ^^^^^^^^^^^^^^^^^^^^^ 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 std::fmt::Display` 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 pug() -> Box<dyn std::fmt::Display> {
+ | ++++ +
+help: ... and box this value
+ |
+LL | 0 => Box::new(0i32),
+ | +++++++++ +
+help: ... and box this value
+ |
+LL | 1 => Box::new(1u32),
+ | +++++++++ +
+help: ... and box this value
+ |
+LL | _ => Box::new(2u32),
+ | +++++++++ +
+
+error[E0308]: `if` and `else` have incompatible types
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:89:9
+ |
+LL | / if false {
+LL | | 0i32
+ | | ---- expected because of this
+LL | | } else {
+LL | | 1u32
+ | | ^^^^ expected `i32`, found `u32`
+LL | | }
+ | |_____- `if` and `else` have incompatible types
+
+error[E0746]: return type cannot have an unboxed trait object
+ --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:85:13
+ |
+LL | fn man() -> dyn std::fmt::Display {
+ | ^^^^^^^^^^^^^^^^^^^^^ 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 std::fmt::Display` 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 man() -> Box<dyn std::fmt::Display> {
+ | ++++ +
+help: ... and box this value
+ |
+LL | Box::new(0i32)
+ | +++++++++ +
+help: ... and box this value
+ |
+LL | Box::new(1u32)
+ | +++++++++ +
+
+error: aborting due to 14 previous errors
+
+Some errors have detailed explanations: E0308, E0746.
+For more information about an error, try `rustc --explain E0308`.