Skip to content
Topaz6.0 · Before release
Download

Search documentation

Specification 6.0 · Not released · Tested product 5.21.3

Use arrow keys to choose a result. Press Enter to open.

Type an API name, diagnostic number, rule, or project topic.

    Diagnostics

    TPZ3007: Runtime statement in imported module

    An imported module has a top-level runtime-bearing free statement.

    Diagnostic and cause

    Link

    Runtime 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.

    Response

    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 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 lib contains 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.

    Rulediagnostics.tpz3007.rule

    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

    Response

    Link

    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.

    Reproduction and verification

    Link

    Rejected program

    Link
    example.tpzRejected programOpen in Playground
    1. import lib
    Expected outputNonzero exit
    No stdout.
    $ topaz check example.tpz · target product 5.21.3
    lib.tpzRejected programOpen in Playground
    1. export let value = 1
    2. 1 + 2
    Expected result

    Expected result

    Rejection during resolve. Nonzero exit.

    • TPZ3007 diagnostic-tpz3007 at lib.tpz:2:1

    The expected diagnostic, cause, source location, and accompanying diagnostics are specified below. The verification status records whether this program has been run.

    Source evidence

    Corrected program

    Link
    example.tpzCorrected programOpen in Playground
    1. import lib
    Expected outputexit 0
    $ topaz check example.tpz · target product 5.21.3
    lib.tpzCorrected programOpen in Playground
    1. 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

    Menu

    Download