mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Rollup merge of #112978 - compiler-errors:bad-block-sugg, r=davidtwco
Add suggestion for bad block fragment error Makes it a bit clearer how to fix this parser restriction
This commit is contained in:
commit
e992895c1d
@ -353,6 +353,7 @@ parse_int_literal_too_large = integer literal is too large
|
||||
|
||||
parse_invalid_block_macro_segment = cannot use a `block` macro fragment here
|
||||
.label = the `block` fragment is within this context
|
||||
.suggestion = wrap this in another block
|
||||
|
||||
parse_invalid_char_in_escape = {parse_invalid_char_in_escape_msg}: `{$ch}`
|
||||
.label = {parse_invalid_char_in_escape_msg}
|
||||
|
@ -333,6 +333,17 @@ pub(crate) struct InvalidBlockMacroSegment {
|
||||
pub span: Span,
|
||||
#[label]
|
||||
pub context: Span,
|
||||
#[subdiagnostic]
|
||||
pub wrap: WrapInExplicitBlock,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic)]
|
||||
#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
|
||||
pub(crate) struct WrapInExplicitBlock {
|
||||
#[suggestion_part(code = "{{ ")]
|
||||
pub lo: Span,
|
||||
#[suggestion_part(code = " }}")]
|
||||
pub hi: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
@ -2192,6 +2192,10 @@ impl<'a> Parser<'a> {
|
||||
self.sess.emit_err(errors::InvalidBlockMacroSegment {
|
||||
span: self.token.span,
|
||||
context: lo.to(self.token.span),
|
||||
wrap: errors::WrapInExplicitBlock {
|
||||
lo: self.token.span.shrink_to_lo(),
|
||||
hi: self.token.span.shrink_to_hi(),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,10 @@ LL | m!({});
|
||||
| ------ in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: wrap this in another block
|
||||
|
|
||||
LL | 'lab: { $b };
|
||||
| + +
|
||||
|
||||
error: cannot use a `block` macro fragment here
|
||||
--> $DIR/bad-interpolated-block.rs:6:16
|
||||
@ -23,6 +27,10 @@ LL | m!({});
|
||||
| ------ in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: wrap this in another block
|
||||
|
|
||||
LL | unsafe { $b };
|
||||
| + +
|
||||
|
||||
error: cannot use a `block` macro fragment here
|
||||
--> $DIR/bad-interpolated-block.rs:7:23
|
||||
@ -34,6 +42,10 @@ LL | m!({});
|
||||
| ------ in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: wrap this in another block
|
||||
|
|
||||
LL | |x: u8| -> () { $b };
|
||||
| + +
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
@ -77,6 +77,10 @@ LL | m!({});
|
||||
| ------ in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: wrap this in another block
|
||||
|
|
||||
LL | 'l5 { $b };
|
||||
| + +
|
||||
|
||||
error: labeled expression must be followed by `:`
|
||||
--> $DIR/labeled-no-colon-expr.rs:14:8
|
||||
|
Loading…
Reference in New Issue
Block a user