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

    TPZ4001: Index out of bounds

    A runtime index operation addressed a position outside the collection/string bounds.

    Diagnostic and cause

    Link

    Index out of bounds

    Family
    topaz
    Phase
    run
    Code
    TPZ4001

    Cause and conditions

    Reading an Array at a computed int index less than zero or at least the array length faults during execution.

    Response

    Use an index from zero through length minus one, or test the index before the read. The repaired example reads index zero of a one-element Array.

    Source evidence

    Compiler phase: runtime.

    Compiler explanation: A runtime index operation addressed a position outside the collection/string bounds.

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

    Observed for the candidate in Topaz 5.21.3. Execution

    • error[TPZ4001]: index 1 is out of bounds for an array of length 1

    The evaluated int index is not a valid position in the Array. Array indices start at zero and must be less than the current length; invalid reads fault instead of clamping or wrapping.

    Rulediagnostics.tpz4001.rule

    Trigger and repair

    Reading an Array at a computed int index less than zero or at least the array length faults during execution.

    Source evidence

    Response

    Link

    Use an index from zero through length minus one, or test the index before the read. The repaired example reads index zero of a one-element Array.

    Reproduction and verification

    Link

    Product diagnostic test

    Link
    example.tpzProduct diagnostic testOpen in Playground
    1. function readAt(index: int) -> int {
    2. let values = [10]
    3. values[index]
    4. }
    5. readAt(1)
    target product 5.21.3
    Expected result

    Expected result

    The separate diagnostic product test validates this command, runtime diagnostic, or filesystem setup. The shared example runner does not execute that assertion plan.

    Run topaz run example.tpz --language-version 5.21.

    Expect exit status 1, empty standard output, and TPZ4001.

    The evaluated int index is not a valid position in the Array. Array indices start at zero and must be less than the current length; invalid reads fault instead of clamping or wrapping.

    The primary location is example.tpz:3:5.

    Expect exactly one diagnostic.

    The diagnostic product test checks these expectations with the same files and command.

    Source evidence

    Corrected program

    Link
    example.tpzCorrected program
    1. function readAt(index: int) -> int {
    2. let values = [10]
    3. values[index]
    4. }
    5. readAt(0)
    Expected outputexit 0
    No stdout.
    $ topaz run example.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    This program applies the repair described above. The verification status records whether it has been run.

    Source evidence

    Menu

    Download