carbon-language/carbon-lang

Invalid parse tree generated

Open

#7247 opened on May 21, 2026

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C++ (33,701 stars) (1,535 forks)batch import
good first issuetoolchain

Description

What did you do, or what's a simple way to reproduce the bug?

echo 'fn{p>fn()}' > /tmp/fuzz.carbon
bazel run -c dbg //toolchain -- compile --phase=parse /tmp/fuzz.carbon

What did you expect to happen?

Diagnostics reported, and completing without crashing.

What actually happened?

FATAL failure at toolchain/parse/parse.cpp:68: Invalid tree returned by Parse(): NodeId #nodeA couldn't be extracted as a FunctionDefinition. Trace:
Aggregate N6Carbon5Parse18FunctionDefinitionE: begin
Vector: begin
NodeIdInCategory Decl|Statement: kind ExprStatement consumed
NodeIdInCategory Decl|Statement error: kind IdentifierNameExpr doesn't match
Vector: end
NodeIdForKind error: wrong kind IdentifierNameExpr, expected FunctionDefinitionStart
Aggregate N6Carbon5Parse18FunctionDefinitionE: error
Error: IdentifierNameExpr node left unconsumed.

Any other information, logs, or outputs that you want to share?

The checking of the produce parse tree does not occur in an -c opt build.

This issue was found by fuzzing.

Contributor guide