Skip to content

Improve error for missing braces in const block #78168

Description

Someone may try to write code like this (playground):

#![allow(incomplete_features)]
#![feature(inline_const)]

fn foo() {
    let x = 2;
    match x {
        const 2 => {}
    }
}

Yet this produces these misleading errors:

   Compiling playground v0.0.1 (/playground)
error: expected identifier, found keyword `const`
 --> src/lib.rs:7:9
  |
7 |         const 2 => {}
  |         ^^^^^ expected identifier, found keyword

error: expected one of `=>`, `@`, `if`, or `|`, found `2`
 --> src/lib.rs:7:15
  |
7 |         const 2 => {}
  |               ^ expected one of `=>`, `@`, `if`, or `|`

error: aborting due to 2 previous errors

error: could not compile `playground`

To learn more, run the command again with --verbose.

Another example (playground):

#![allow(incomplete_features)]
#![feature(inline_const)]

fn foo() {
    let x = const 2;
}

Error:

   Compiling playground v0.0.1 (/playground)
error: expected expression, found keyword `const`
 --> src/lib.rs:5:13
  |
5 |     let x = const 2;
  |             ^^^^^ expected expression

error: aborting due to previous error

error: could not compile `playground`

To learn more, run the command again with --verbose.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsA-parserArea: The parsing of Rust source code to an ASTArea: The parsing of Rust source code to an ASTC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.D-confusingDiagnostics: Confusing error or lint that should be reworked.Diagnostics: Confusing error or lint that should be reworked.F-inline_constInline constants (aka: const blocks, const expressions, anonymous constants)Inline constants (aka: const blocks, const expressions, anonymous constants)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions