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

    TPZ5030: Extern declaration problem

    An extern module or function declaration is missing, malformed, duplicated, or not declared for an imported extern module.

    Diagnostic and cause

    Link

    Extern declaration problem

    Family
    topaz
    Phase
    resolve
    Code
    TPZ5030

    Cause and conditions

    Import each extern module by an identity declared in topaz.toml. A missing module under an already declared extern namespace is rejected as TPZ5030.

    Response

    Declare the extern interface in topaz.toml and check its names and signatures. Import the module identity that the package declares.

    Source evidence

    Compiler phase: check/package.

    Compiler explanation: An extern module or function declaration is missing, malformed, duplicated, or not declared for an imported extern module.

    Message templates are Pending. The explanation above is not an observed CLI message.

    Import each extern module by an identity declared in topaz.toml. A missing module under an already declared extern namespace is rejected as TPZ5030.

    Rulediagnostics.tpz5030.p5.rule

    Extern declaration problem

    Import each extern module by an identity declared in topaz.toml. A missing module under an already declared extern namespace is rejected as TPZ5030.

    Source evidence

    Response

    Link

    Declare the extern interface in topaz.toml and check its names and signatures. Import the module identity that the package declares.

    Reproduction and verification

    Link

    Rejected program

    Link
    main.tpzRejected programOpen in Playground
    1. import host.missing { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    Expected outputNonzero exit
    No stdout.
    $ topaz check --language-version 5.21 --compiler self · target product 5.21.3
    topaz.tomlRejected programOpen in Playground
    1. [package]
    2. name = "diagnostic_extern"
    3. version = "0.1.0"
    4. language = "5.21"
    5. entry = "main.tpz"
    6. [extern.host.math]
    7. hash = "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    8. abi_hash = "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    9. [[extern.host.math.functions]]
    10. name = "twice"
    11. params = ["int"]
    12. result = "int"
    13. [extern.host.math.replay]
    14. fixture = "replay/host-math.jsonl"
    15. [extern.host.math.sandbox]
    16. kind = "replay"
    replay/host-math.jsonlRejected programOpen in Playground
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    Expected result

    Expected result

    Rejection during resolve. Nonzero exit.

    • TPZ5030 diagnostics-undeclared-extern-module at main.tpz:1:8

    This complete package fixture uses invocationArgs without a positional source file.

    Source evidence

    Repaired program

    Link
    main.tpzRepaired programOpen in Playground
    1. import host.math { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    Expected outputexit 0
    $ topaz check --language-version 5.21 --compiler self · target product 5.21.3
    topaz.tomlRepaired programOpen in Playground
    1. [package]
    2. name = "diagnostic_extern"
    3. version = "0.1.0"
    4. language = "5.21"
    5. entry = "main.tpz"
    6. [extern.host.math]
    7. hash = "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    8. abi_hash = "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    9. [[extern.host.math.functions]]
    10. name = "twice"
    11. params = ["int"]
    12. result = "int"
    13. [extern.host.math.replay]
    14. fixture = "replay/host-math.jsonl"
    15. [extern.host.math.sandbox]
    16. kind = "replay"
    replay/host-math.jsonlRepaired programOpen in Playground
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    Expected result

    Expected result

    Checking accepts the program. Exit code 0.

    This complete package fixture uses invocationArgs without a positional source file.

    Source evidence

    Menu

    Download