summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr')
-rw-r--r--src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr b/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr
new file mode 100644
index 000000000..be6fc2615
--- /dev/null
+++ b/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr
@@ -0,0 +1,51 @@
+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
+
+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 struct `Baz`, found struct `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 struct `Box`, 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`.