rust/tests/ui/suggestions/match-with-different-arm-ty...

52 lines
1.9 KiB
Plaintext

error[E0308]: mismatched types
--> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:9:30
|
LL | fn not_all_paths(a: &str) -> u32 {
| ------------- ^^^ expected `u32`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
...
LL | };
| - help: remove this semicolon to return this value
error[E0308]: `match` arms have incompatible types
--> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:26:14
|
LL | / match c {
LL | | "baz" => Box::new(Baz),
| | ------------- this is found to be of type `Box<Baz>`
LL | | _ => Box::new(Bar),
| | ^^^^^^^^^^^^^ expected `Box<Baz>`, found `Box<Bar>`
LL | | };
| |_____- `match` arms have incompatible types
|
= note: expected struct `Box<Baz>`
found struct `Box<Bar>`
note: you might have meant to return the `match` expression
--> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:27:6
|
LL | fn wrong(c: &str) -> Box<dyn Foo> {
| ------------ the `match` arms can conform to this return type
LL | / match c {
LL | | "baz" => Box::new(Baz),
LL | | _ => Box::new(Bar),
LL | | };
| | -^ the `match` is a statement because of this semicolon, consider removing it
| |_____|
| this could be implicitly returned but it is a statement, not a tail expression
error[E0308]: mismatched types
--> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:23:22
|
LL | fn wrong(c: &str) -> Box<dyn Foo> {
| ----- ^^^^^^^^^^^^ expected `Box<dyn Foo>`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
|
= note: expected struct `Box<(dyn Foo + 'static)>`
found unit type `()`
error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0308`.