Diagnostic and cause
LinkUnexpected token
- Family
- topaz
- Phase
- parse
- Code
TPZ2001
Cause and conditions
A let declaration has a binding pattern before =. Omitting it is a parse error.
Response
Insert the intended binding name between let and =. Fix this first parse error before interpreting any recovery messages.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 215-224 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 191-191 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 970-970 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 335-335 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 176-176 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 603-623 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 631-665 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1240-1300 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 188-193 - TPZ2001 at
151141d7bb44
Compiler phase: parse.
Compiler explanation: The parser found a token that cannot appear in this grammar position.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- expected an expression Source
- expected a statement separator Source
- expected a statement Source
- a record spread
.must be the FIRST element and appear at most once Source. . - expected
,or}Source - expected
:aftertimeoutSource - expected a duration literal, e.g.
3sSource - expected a concurrent arm Source
concurrentrequires at least one arm Source- expected
caseSource matchrequires at least onecaseSource- expected a range endpoint after
., e.g.. 1.Source. 5 - a record type requires at least one field Source
- a literal type cannot contain interpolation Source
- a record pattern requires at least one field Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ2001]: expected an expression
A let declaration needs a binding pattern before its initializer. In the reproduction, = appears where that pattern must begin, so parsing stops at the equals sign.
Trigger and repair
A let declaration has a binding pattern before =. Omitting it is a parse error.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 603-623 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 631-665 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1240-1300 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 188-193 - TPZ2001 at
151141d7bb44
Response
LinkInsert the intended binding name between let and =. Fix this first parse error before interpreting any recovery messages.
Reproduction and verification
LinkRejected program
Linklet = 1
No stdout.
Expected result
The expected diagnostic, cause, source location, and accompanying diagnostics are specified below. The verification status records whether this program has been run.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 215-224 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 191-191 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 970-970 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 335-335 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 176-176 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 603-623 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 631-665 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1240-1300 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 188-193 - TPZ2001 at
151141d7bb44
Corrected program
Linklet value = 1
Expected result
Expected result
Checking accepts the program. Exit code 0.
This program applies the repair described above. The verification status records whether it has been run.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 603-623 - compiler/crates/topaz_self_frontend/topaz/parser/types_patterns.tpz at
151141d7bb44· 631-665 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1240-1300 - compiler/crates/topaz_self_frontend/topaz/parser/core.tpz at
151141d7bb44· 188-193 - TPZ2001 at
151141d7bb44