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

    TPZ5001 Type mismatch

    A binding initializer incompatible with its declared type produces TPZ5001 at the initializer.

    Diagnostic and cause

    Link

    TPZ5001

    Family
    topaz
    Phase
    check
    Code
    TPZ5001

    Cause and conditions

    A parameter can contain a default expression after =. The checker checks that expression against the parameter type and applies a constant-expression restriction. Failure of the constant-expression check produces TPZ5001.

    Response

    Source evidence

    Compiler phase: check/runtime.

    Compiler explanation: A value's type does not match the type required by its context.

    Message templates. The marker ⟨value⟩ stands for text computed for the reported program.

    • const initializers must be constant expressions (§4) Source
    • ⟨value⟩ is not iterable (§10) Source
    • return outside a function Source
    • a placeholder _ is valid only inside a pipeline stage (§11) Source
    • expected ⟨value⟩, found ⟨value⟩ Source
    • ⟨value⟩ outside a loop Source
    • bare ⟨value⟩ cannot target ⟨value⟩ Source
    • concurrent timeout duration must fit in u64 milliseconds (§15) Source
    • the range step must not be zero (§10) Source
    • ?? needs an Option or nullable left operand, found ⟨value⟩ Source
    • Length operation requires compatible units and scalar operands, found ⟨value⟩ and ⟨value⟩ Source
    • arithmetic needs matching numeric operands, found ⟨value⟩ and ⟨value⟩ Source
    • % needs int operands in v5.2, found ⟨value⟩ and ⟨value⟩ Source
    • + needs matching int, float, string, BigInt, or Decimal operands, found ⟨value⟩ and ⟨value⟩ Source
    • in does not apply to a Map; use in map.keys Source
    • in does not apply to strings Source
    • integer literal is out of range Source
    • unary operator cannot apply to ⟨value⟩ Source
    • ? propagates an error, but the function returns ⟨value⟩, not a Result Source
    • ? requires a Result value, found ⟨value⟩ Source
    • ⟨value⟩ is not index-readable; only arrays support […] indexing (§9) Source
    • integer literal ⟨value⟩ is out of range Source
    • a placeholder _ is valid only in a pipeline stage's argument list (§11) Source
    • ⟨value⟩ is not iterable (§10) Source
    • ByteBuffer values cannot be interpolated; snapshot to Bytes and encode explicitly Source
    • array spread needs an Array, found ⟨value⟩ Source
    • ?. needs an Option or nullable receiver, found namespace Source
    • ?. needs an Option or nullable receiver, found ⟨value⟩ Source
    • record spread ... needs a declared record; ⟨value⟩ is not one Source
    • record update needs a record, found ⟨value⟩ Source
    • integer literal type ⟨value⟩ is out of range Source
    • Length requires one compiler-owned Pt, Mm, Cm, In or Em marker Source
    • this pattern can never match ⟨value⟩ Source
    • a ⟨value⟩ pattern cannot establish nominal identity for rigid scrutinee type ⟨value⟩ Source
    • this ⟨value⟩ pattern can never match ⟨value⟩ Source
    • this ⟨value⟩ pattern can never match ⟨value⟩ Source
    • a Map is not index-assignable; use m.insert (§22) Source
    • cannot assign through optional access ?. (§4) Source
    • ??= needs an Option or nullable target, found ⟨value⟩ Source
    • constant expression error: ⟨value⟩ Source

    Observed for the candidate in Topaz 5.21.3. Execution

    • error[TPZ5001]: expected int, found string

    The initializer of an annotated binding must be assignable to the declared type. Assigning a string to int is rejected with TPZ5001 at the initializer.

    Rulediagnostics.tpz5001.p5.rule

    An annotated binding requires an assignable initializer

    The initializer of an annotated binding must be assignable to the declared type. Assigning a string to int is rejected with TPZ5001 at the initializer.

    Source evidence

    Response

    Link

    Check the reported expression and its expected type. Change the value or annotation, or perform the required conversion explicitly.

    Reproduction and verification

    Link

    Rejected program

    Link
    example.tpzRejected programOpen in Playground
    1. let value: int = "Ada"
    Expected outputNonzero exit
    No stdout.
    $ topaz check example.tpz · target product 5.21.3
    Expected result

    Expected result

    Rejection during check. Nonzero exit.

    • TPZ5001 diagnostic-tpz5001 at example.tpz:1:18
    Source evidence

    Repaired program

    Link
    example.tpzRepaired program
    1. let value: int = 42
    Expected outputexit 0
    $ topaz check example.tpz · target product 5.21.3
    Expected result

    Expected result

    Checking accepts the program. Exit code 0.

    Source evidence

    Menu

    Download