let mut ret_span: MultiSpan = semi_span.into();
ret_span.push_span_label(
expr.span,
- "this could be implicitly returned but it is a statement, not a \
- tail expression",
+ "this could be implicitly returned but it is a statement, not a tail expression",
);
ret_span.push_span_label(ret, "the `match` arms can conform to this return type");
ret_span.push_span_label(
semi_span,
- "the `match` is a statement because of this semicolon, consider \
- removing it",
+ "the `match` is a statement because of this semicolon, consider removing it",
);
diag.span_note(ret_span, "you might have meant to return the `match` expression");
diag.tool_only_span_suggestion(
return;
}
let [.., stmt] = block.stmts else {
- err.span_help(block.span, "this empty block is missing a tail expression");
+ err.span_label(block.span, "this empty block is missing a tail expression");
return;
};
let hir::StmtKind::Semi(tail_expr) = stmt.kind else { return; };
let Some(ty) = self.node_ty_opt(tail_expr.hir_id) else { return; };
if self.can_eq(self.param_env, expected_ty, ty).is_ok() {
- err.span_suggestion_verbose(
+ err.span_suggestion_short(
stmt.span.with_lo(tail_expr.span.hi()),
"remove this semicolon",
"",
Applicability::MachineApplicable,
);
} else {
- err.span_help(block.span, "this block is missing a tail expression");
+ err.span_label(block.span, "this block is missing a tail expression");
}
}
}
return;
}
let [.., stmt] = block.stmts else {
- err.span_help(block.span, "this empty block is missing a tail expression");
+ err.span_label(block.span, "this empty block is missing a tail expression");
return;
};
let hir::StmtKind::Semi(tail_expr) = stmt.kind else { return; };
let Some(ty) = typeck.expr_ty_opt(tail_expr) else {
- err.span_help(block.span, "this block is missing a tail expression");
+ err.span_label(block.span, "this block is missing a tail expression");
return;
};
let ty = self.resolve_numeric_literals_with_default(self.resolve_vars_if_possible(ty));
let new_obligation =
self.mk_trait_obligation_with_new_self_ty(obligation.param_env, trait_pred_and_self);
if self.predicate_must_hold_modulo_regions(&new_obligation) {
- err.span_suggestion_verbose(
+ err.span_suggestion_short(
stmt.span.with_lo(tail_expr.span.hi()),
"remove this semicolon",
"",
Applicability::MachineApplicable,
);
} else {
- err.span_help(block.span, "this block is missing a tail expression");
+ err.span_label(block.span, "this block is missing a tail expression");
}
}
error[E0277]: `()` doesn't implement `std::fmt::Display`
--> $DIR/binding-assigned-block-without-tail-expression.rs:14:20
|
+LL | 42;
+ | - help: remove this semicolon
+...
LL | println!("{}", x);
| ^ `()` cannot be formatted with the default formatter
|
= help: the trait `std::fmt::Display` is not implemented for `()`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: remove this semicolon
- |
-LL - 42;
-LL + 42
- |
error[E0277]: `()` doesn't implement `std::fmt::Display`
--> $DIR/binding-assigned-block-without-tail-expression.rs:15:20
|
+LL | let y = {};
+ | -- this empty block is missing a tail expression
+...
LL | println!("{}", y);
| ^ `()` cannot be formatted with the default formatter
|
-help: this empty block is missing a tail expression
- --> $DIR/binding-assigned-block-without-tail-expression.rs:7:13
- |
-LL | let y = {};
- | ^^
= help: the trait `std::fmt::Display` is not implemented for `()`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: `()` doesn't implement `std::fmt::Display`
--> $DIR/binding-assigned-block-without-tail-expression.rs:16:20
|
+LL | "hi";
+ | - help: remove this semicolon
+...
LL | println!("{}", z);
| ^ `()` cannot be formatted with the default formatter
|
= help: the trait `std::fmt::Display` is not implemented for `()`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: remove this semicolon
- |
-LL - "hi";
-LL + "hi"
- |
error[E0277]: `()` doesn't implement `std::fmt::Display`
--> $DIR/binding-assigned-block-without-tail-expression.rs:17:20
|
-LL | println!("{}", s);
- | ^ `()` cannot be formatted with the default formatter
- |
-help: this block is missing a tail expression
- --> $DIR/binding-assigned-block-without-tail-expression.rs:11:13
- |
LL | let s = {
- | _____________^
+ | _____________-
LL | | S;
LL | | };
- | |_____^
+ | |_____- this block is missing a tail expression
+...
+LL | println!("{}", s);
+ | ^ `()` cannot be formatted with the default formatter
+ |
= help: the trait `std::fmt::Display` is not implemented for `()`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> $DIR/binding-assigned-block-without-tail-expression.rs:18:18
|
+LL | 42;
+ | - help: remove this semicolon
+...
LL | let _: i32 = x;
| --- ^ expected `i32`, found `()`
| |
| expected due to this
- |
-help: remove this semicolon
- |
-LL - 42;
-LL + 42
- |
error[E0308]: mismatched types
--> $DIR/binding-assigned-block-without-tail-expression.rs:19:18
|
+LL | let y = {};
+ | -- this empty block is missing a tail expression
+...
LL | let _: i32 = y;
| --- ^ expected `i32`, found `()`
| |
| expected due to this
- |
-help: this empty block is missing a tail expression
- --> $DIR/binding-assigned-block-without-tail-expression.rs:7:13
- |
-LL | let y = {};
- | ^^
error[E0308]: mismatched types
--> $DIR/binding-assigned-block-without-tail-expression.rs:20:18
|
-LL | let _: i32 = z;
- | --- ^ expected `i32`, found `()`
- | |
- | expected due to this
- |
-help: this block is missing a tail expression
- --> $DIR/binding-assigned-block-without-tail-expression.rs:8:13
- |
LL | let z = {
- | _____________^
+ | _____________-
LL | | "hi";
LL | | };
- | |_____^
+ | |_____- this block is missing a tail expression
+...
+LL | let _: i32 = z;
+ | --- ^ expected `i32`, found `()`
+ | |
+ | expected due to this
error[E0308]: mismatched types
--> $DIR/binding-assigned-block-without-tail-expression.rs:21:18
|
-LL | let _: i32 = s;
- | --- ^ expected `i32`, found `()`
- | |
- | expected due to this
- |
-help: this block is missing a tail expression
- --> $DIR/binding-assigned-block-without-tail-expression.rs:11:13
- |
LL | let s = {
- | _____________^
+ | _____________-
LL | | S;
LL | | };
- | |_____^
+ | |_____- this block is missing a tail expression
+...
+LL | let _: i32 = s;
+ | --- ^ expected `i32`, found `()`
+ | |
+ | expected due to this
error: aborting due to 8 previous errors