Diagnostic and cause
LinkRuntime statement in imported module
- Family
- topaz
- Phase
- resolve
- Code
TPZ3007
Cause and conditions
Historical SELF behavior: an imported module containing a free top-level expression produces TPZ3007, while the same expression may occur in the entry module. The recommended Modules contract removes this file-role restriction. Its accepted entry/import pair and current-product limitation are the normative /v6.0/en/docs expectations for that decision; the reproduction below preserves the historical diagnostic identity.
Related rule: Trigger and repairResponse
For the current SELF product, an explicit exported function called from the entry is a workaround. Under the recommended uniform module contract, no source change is required solely because a file is imported. TPZ3007 remains reserved for the historical restriction and is not reassigned.
Source evidence
- compiler/crates/topaz_diag/src/explain.rs at
151141d7bb44· 396-404 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 669-669 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 648-675 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 885-894 - TPZ3007 at
151141d7bb44
Compiler phase: resolve.
Compiler explanation: An imported module has a top-level runtime-bearing free statement.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
- imported module
⟨value⟩contains a top-level free statement; free statements are entry-only (the same file is valid as an entry) Source
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ3007]: imported module
libcontains a top-level free statement; free statements are entry-only (the same file is valid as an entry)
Historical SELF restriction: the imported module contains a top-level free statement, including an expression with no visible side effect. The recommended uniform module contract accepts the same statement forms in entry and imported files.
Trigger and repair
Historical SELF behavior: an imported module containing a free top-level expression produces TPZ3007, while the same expression may occur in the entry module. The recommended Modules contract removes this file-role restriction. Its accepted entry/import pair and current-product limitation are the normative /v6.0/en/docs expectations for that decision; the reproduction below preserves the historical diagnostic identity.
Source evidence
- compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 648-675 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 885-894 - TPZ3007 at
151141d7bb44
Response
LinkFor the current SELF product, an explicit exported function called from the entry is a workaround. Under the recommended uniform module contract, no source change is required solely because a file is imported. TPZ3007 remains reserved for the historical restriction and is not reassigned.
Reproduction and verification
LinkRejected program
Linkimport lib
No stdout.
export let value = 11 + 2
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· 396-404 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 669-669 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 648-675 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 885-894 - TPZ3007 at
151141d7bb44
Corrected program
Linkimport lib
export function value() -> int { 1 + 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/graph.tpz at
151141d7bb44· 648-675 - compiler/crates/topaz_self_frontend/topaz/resolver/graph.tpz at
151141d7bb44· 885-894 - TPZ3007 at
151141d7bb44