Skip to content

Comments

Fix grammar for block comments#2191

Open
ehuss wants to merge 1 commit intorust-lang:masterfrom
ehuss:fix-comment-nested
Open

Fix grammar for block comments#2191
ehuss wants to merge 1 commit intorust-lang:masterfrom
ehuss:fix-comment-nested

Conversation

@ehuss
Copy link
Contributor

@ehuss ehuss commented Feb 25, 2026

This fixes an issue with the block comment grammar with nested block comments. For example, this would fail to match /*/* test */*/ because of the following:

The open slash of the inner block comment matches ~[* !] which then misinterprets the rest of the inner block comment as being normal characters, and prevents the nesting from working correctly.

The original intent with this formulation was to prevent it from matching an inner or outer block doc comment. This is no longer needed because we are now defining the order with the COMMENT production, and the doc comments come before block comments.

This also changes the order of BLOCK_COMMENT_OR_DOC, but that is not strictly necessary because once inside a block comment, everything is comment text. rustc does not expose nested comments as being distinct. I mainly ordered them to be consistent with COMMENT (and in case I forgot anything).

The implementation for this is at Cursor::block_comment.

This fixes an issue with the block comment grammar with nested block
comments. For example, this would fail to match `/*/* test */*/` because
of the following:

The open slash of the inner block comment matches `~[`*` `!`]` which
then misinterprets the rest of the inner block comment as being normal
characters, and prevents the nesting from working correctly.

The original intent with this formulation was to prevent it from
matching an inner or outer block doc comment. This is no longer needed
because we are now defining the order with the COMMENT production, and
the doc comments come before block comments.

This also changes the order of BLOCK_COMMENT_OR_DOC, but that is not
strictly necessary because once inside a block comment, everything is
comment text. rustc does not expose nested comments as being distinct. I
mainly ordered them to be consistent with COMMENT (and in case I forgot
anything).

The implementation for this is at [`Cursor::block_comment`](https://github.com/rust-lang/rust/blob/859951e3c7c9d0322c39bad49221937455bdffcd/compiler/rustc_lexer/src/lib.rs#L782-L817).
@rustbot rustbot added the S-waiting-on-review Status: The marked PR is awaiting review from a maintainer label Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: The marked PR is awaiting review from a maintainer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants