Diagnostic and cause
LinkNamespace member has wrong kind
- Family
- topaz
- Phase
- resolve
- Code
TPZ3013
Cause and conditions
Using a namespace member that exports a type alias as a value produces TPZ3013. Use that alias in a type annotation.
Related rule: Trigger and repairResponse
Use ns.Count in a type annotation or select a value export for the expression.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 454-462 - compiler/crates/topaz_self_frontend/topaz/resolver/scopes_walk.tpz at
151141d7bb44· 290-290 - compiler/crates/topaz_self_frontend/topaz/resolver/scopes_walk.tpz at
151141d7bb44· 321-346 - TPZ3013 at
151141d7bb44
Compiler phase: resolve.
Compiler explanation: A namespace member is used in a position that requires a different export kind.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- namespace members are exported declarations and cannot be keyword-named (
⟨value⟩.) Source⟨value⟩ ⟨value⟩is an exported type alias of⟨value⟩, not a value; use it in type position Source⟨value⟩is exported by⟨value⟩but is not a type alias Source- the head of a qualified type must be a namespace binding;
⟨value⟩is not one here Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ3013]:
Countis an exported type alias oflib, not a value; use it in type position
The selected member exports a type alias, but the expression requires a value. Nominal constructor names have a separate admitted path.
Trigger and repair
Using a namespace member that exports a type alias as a value produces TPZ3013. Use that alias in a type annotation.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/resolver/scopes_walk.tpz at
151141d7bb44· 321-346 - TPZ3013 at
151141d7bb44
Response
LinkUse ns.Count in a type annotation or select a value export for the expression.
Reproduction and verification
LinkRejected program
Linkimport lib as nslet value = ns.Count
No stdout.
export type Count = int
Expected result
Expected result
Rejection during resolve. Nonzero exit.
TPZ3013diagnostic-tpz3013 atexample.tpz:2:16
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· 454-462 - compiler/crates/topaz_self_frontend/topaz/resolver/scopes_walk.tpz at
151141d7bb44· 290-290 - compiler/crates/topaz_self_frontend/topaz/resolver/scopes_walk.tpz at
151141d7bb44· 321-346 - TPZ3013 at
151141d7bb44
Corrected program
Linkimport lib as nslet value: ns.Count = 1
export type Count = int
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/scopes_walk.tpz at
151141d7bb44· 321-346 - TPZ3013 at
151141d7bb44