Diagnostic and cause
LinkModule namespace collision
- Family
- topaz
- Phase
- resolve
- Code
TPZ3008
Cause and conditions
Two declarations binding the same top-level name in one module produce TPZ3008.
Related rule: Trigger and repairResponse
Rename one declaration or import alias. Check the local names introduced by selected imports as well.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 405-413 - compiler/crates/topaz_self_frontend/topaz/resolver/modules_tables.tpz at
151141d7bb44· 355-355 - compiler/crates/topaz_self_frontend/topaz/resolver/modules_tables.tpz at
151141d7bb44· 317-369 - TPZ3008 at
151141d7bb44
Compiler phase: resolve.
Compiler explanation: Two declarations in one module bind the same namespace name.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
⟨value⟩is already bound at this module's top level (first binding at byte ⟨value⟩) Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ3008]:
valueis already bound at this module's top level (first binding at byte 4)
A top-level declaration or import binds a name already present in the module table. The example declares value twice.
Trigger and repair
Two declarations binding the same top-level name in one module produce TPZ3008.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/resolver/modules_tables.tpz at
151141d7bb44· 317-369 - TPZ3008 at
151141d7bb44
Response
LinkRename one declaration or import alias. Check the local names introduced by selected imports as well.
Reproduction and verification
LinkRejected program
Linklet value = 1let value = 2
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· 405-413 - compiler/crates/topaz_self_frontend/topaz/resolver/modules_tables.tpz at
151141d7bb44· 355-355 - compiler/crates/topaz_self_frontend/topaz/resolver/modules_tables.tpz at
151141d7bb44· 317-369 - TPZ3008 at
151141d7bb44
Corrected program
Linklet value = 1let other = 2
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/resolver/modules_tables.tpz at
151141d7bb44· 317-369 - TPZ3008 at
151141d7bb44