Rollup merge of #113803 - compiler-errors:const-interp-block, r=fee1-dead
Fix inline_const with interpolated block Interpolation already worked when we had a `const $block` that wasn't a statement expr: ``` fn foo() { let _ = const $block; } ``` But it was failing when the const block was in statement expr position: ``` fn foo() { const $block; } ``` ... because of a bug in a check for const items. This fixes that. --- cc https://github.com/rust-lang/rust/pull/112953#issuecomment-1631354481, though I don't think this requires an FCP since it's already supported in exprs and seems to me to be fully a parser bug.
This commit is contained in:
commit
6c3cbcd333
2 changed files with 34 additions and 1 deletions
|
@ -1210,7 +1210,8 @@ impl<'a> Parser<'a> {
|
|||
fn parse_constness_(&mut self, case: Case, is_closure: bool) -> Const {
|
||||
// Avoid const blocks and const closures to be parsed as const items
|
||||
if (self.check_const_closure() == is_closure)
|
||||
&& self.look_ahead(1, |t| t != &token::OpenDelim(Delimiter::Brace))
|
||||
&& !self
|
||||
.look_ahead(1, |t| *t == token::OpenDelim(Delimiter::Brace) || t.is_whole_block())
|
||||
&& self.eat_keyword_case(kw::Const, case)
|
||||
{
|
||||
Const::Yes(self.prev_token.uninterpolated_span())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue