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

    TPZ4004: Integer overflow

    A checked integer operation exceeded the int range.

    Diagnostic and cause

    Link

    Integer overflow

    Family
    topaz
    Phase
    run
    Code
    TPZ4004

    Cause and conditions

    An int addition whose mathematical result is outside the signed 64-bit int range faults at the addition expression. The range failures specified by Duration values use the same runtime diagnostic, TPZ4004.

    Response

    Check that the intended result fits in int, or change the arithmetic representation. The repair adds zero to the maximum int value and stays at the representable boundary.

    Source evidence

    Compiler phase: runtime.

    Compiler explanation: A checked integer operation exceeded the int range.

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

    Observed for the candidate in Topaz 5.21.3. Execution

    • error[TPZ4004]: integer addition overflows

    An int operation produces a result outside the signed 64-bit range, or a Duration operation violates the range rules in Duration values.

    Rulediagnostics.tpz4004.rule

    Trigger and repair

    An int addition whose mathematical result is outside the signed 64-bit int range faults at the addition expression. The range failures specified by Duration values use the same runtime diagnostic, TPZ4004.

    Why

    Duration range failures use the existing integer overflow diagnostic. One code describes an arithmetic result that cannot be represented.

    Source evidence

    Response

    Link

    Check that the intended result fits in int, or change the arithmetic representation. The repair adds zero to the maximum int value and stays at the representable boundary.

    Reproduction and verification

    Link

    Product diagnostic test

    Link
    example.tpzProduct diagnostic testOpen in Playground
    1. function add(left: int, right: int) -> int {
    2. left + right
    3. }
    4. add(9223372036854775807, 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 TPZ4004.

    The evaluated operands of an int operation produce a result outside the representable signed 64-bit range. The reproduced case adds one to the maximum int value; the operation faults instead of wrapping.

    The primary location is example.tpz:2: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 add(left: int, right: int) -> int {
    2. left + right
    3. }
    4. add(9223372036854775807, 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