Diagnostic and cause
LinkRejected module-adjacent form
- Family
- topaz
- Phase
- parse
- Code
TPZ2009
Cause and conditions
Choose a namespace alias or a selected import list in one import declaration.
Related rule: Trigger and repairResponse
Keep the namespace alias and remove the selection list, or select names without a namespace alias. Put export on each public declaration.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 292-300 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1145-1145 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1138-1152 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1282-1307 - TPZ2009 at
151141d7bb44
Compiler phase: parse.
Compiler explanation: The source uses a module export/import composition that Topaz does not support.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- a namespace alias and a selection list do not compose (
import m as ns { x }is invalid syntax) Source - export lists are invalid syntax; put
exporton each public declaration Source - re-export syntax does not exist (
export import .is rejected) Source. .
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ2009]: a namespace alias and a selection list do not compose (
import m as ns { x }is invalid syntax)
The import combines a namespace alias with a selection list. These are separate import forms. Export lists and re-export declarations also use this diagnostic.
Trigger and repair
Choose a namespace alias or a selected import list in one import declaration.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1138-1152 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1282-1307 - TPZ2009 at
151141d7bb44
Response
LinkKeep the namespace alias and remove the selection list, or select names without a namespace alias. Put export on each public declaration.
Reproduction and verification
LinkRejected program
Linkimport lib as ns { value }
No stdout.
export let value = 1
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· 292-300 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1145-1145 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1138-1152 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1282-1307 - TPZ2009 at
151141d7bb44
Corrected program
Linkimport lib as ns
export let 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· 1138-1152 - compiler/crates/topaz_self_frontend/topaz/parser/declarations_modules.tpz at
151141d7bb44· 1282-1307 - TPZ2009 at
151141d7bb44