Diagnostic and cause
LinkUnterminated block comment
- Family
- topaz
- Phase
- lex
- Code
TPZ0002
Cause and conditions
Response
Write each comment line with /. At the start of an expression, the former / opener produces TPZ2001 during parsing.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 152-160 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 456-456 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 54-64 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 445-459 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1291-1299 - TPZ0002 at
151141d7bb44
Historical compiler facts for the reserved code. These facts describe the former diagnostic, not a 6.0.0 trigger.
Compiler phase: lex.
Compiler explanation: A block comment reached the end of input before its closing delimiter.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- unterminated block comment Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ0002]: unterminated block comment
TPZ0002 is retired in Topaz 6.0.0 and remains reserved for its former meaning, an unterminated block comment. It must not be emitted or assigned a new meaning.
Reserved code and current rejection
TPZ0002 is retired in Topaz 6.0.0. Its code and former meaning remain reserved and must not be reused. Source comments begin with /. Outside a string or line comment, / supplies the ordinary / and * tokens. At the start of a statement or expression, this sequence produces TPZ2001 in the parse phase. Adding a closing */ does not make it a comment. Whitespace between / and * does not give the sequence a comment meaning.
Why
One comment spelling makes ignored source text unambiguous. The line-comments-only decision selects /. A retired code keeps its old meaning so stored diagnostics and links remain understandable. Invalid expression tokens use the existing parse diagnostic, which also applies when whitespace separates them.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 54-64 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 445-459 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1291-1299 - TPZ0002 at
151141d7bb44
Response
LinkWrite each comment line with /. At the start of an expression, the former / opener produces TPZ2001 during parsing.
Reproduction and verification
LinkRejected program
Link/* unfinished comment
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· 152-160 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 456-456 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 54-64 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 445-459 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1291-1299 - TPZ0002 at
151141d7bb44
Corrected program
Link// finished comment
No stdout.
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/raw.tpz at
151141d7bb44· 54-64 - compiler/crates/topaz_self_frontend/topaz/raw.tpz at
151141d7bb44· 445-459 - compiler/crates/topaz_self_frontend/topaz/parser/expressions.tpz at
151141d7bb44· 1291-1299 - TPZ0002 at
151141d7bb44