Skip to content

continue expressions in loop conditions #118673

Open
@raimondsrainskis

Description

@raimondsrainskis

Location

https://doc.rust-lang.org/reference/expressions/loop-expr.html#continue-expressions

Summary

The reference unambiguously states that "A continue expression is only permitted in the body of a loop.", but this is demonstrably not true for continue 'label expressions.

The following compiles and runs an infinite loop. A warning mentions the body being unreachable, but otherwise the behavior is as one would expect:

'a: while continue 'a {}

Meanwhile, the following does not compile:

while { continue; true } {}

In the second example, an error is generated:

error[E0590]: break or continue with no label in the condition of a while loop

Furthermore, rustc --explain E0590 demonstrates label usage with a break expression:

'foo: while break 'foo {}

Unless I have misunderstood something, there seems to be conflicting information between the reference and the actual behavior of the compiler.

Edit: grammar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-docsArea: Documentation for any part of the project, including the compiler, standard library, and toolsC-bugCategory: This is a bug.I-lang-radarItems that are on lang's radar and will need eventual work or consideration.T-langRelevant to the language team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions