Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Диагностика TPZ5031

    An extern function signature uses a type outside the deterministic concrete ABI allow-list.

    Diagnostic and cause

    Ссылка

    Unsupported extern ABI type

    Семейство
    topaz
    Этап
    package
    Код
    TPZ5031

    Причина и условия

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    Действия

    Replace the unsupported signature type with an admitted concrete data shape. Keep generic or callable values behind a Topaz wrapper.

    Compiler phase: check/package.

    Compiler explanation: An extern function signature uses a type outside the deterministic concrete ABI allow-list.

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

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    Правилоdiagnostics.tpz5031.p5.rule

    Unsupported extern ABI type

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    Response

    Ссылка

    Replace the unsupported signature type with an admitted concrete data shape. Keep generic or callable values behind a Topaz wrapper.

    Reproduction and verification

    Ссылка

    Rejected program

    Ссылка
    main.tpzRejected programОткрыть песочницу →
    1. import host.math { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    Ожидаемый выводНенулевой код завершения
    Нет стандартного вывода.
    $ topaz check --language-version 5.21 --compiler self · Целевой продукт 5.21.3
    topaz.tomlRejected programОткрыть песочницу →
    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 = ["T"]
    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 programОткрыть песочницу →
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    Ожидаемый результат

    Ожидаемый результат

    Этап отклонения package. Ненулевой код завершения.

    Контракт обязательного основного местоположения не определён.

    The ABI rejection rule and the missing diagnostic-code path are established by source. The current PackageError has no coded diagnostic or source-span producer, so an exact primary location for TPZ5031 cannot be derived and remains Pending. This complete package fixture uses invocationArgs without a positional source file.

    Repaired program

    Ссылка
    main.tpzRepaired programОткрыть песочницу →
    1. import host.math { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    Ожидаемый выводКод завершения 0
    $ topaz check --language-version 5.21 --compiler self · Целевой продукт 5.21.3
    topaz.tomlRepaired programОткрыть песочницу →
    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 programОткрыть песочницу →
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    Ожидаемый результат

    Ожидаемый результат

    Проверка принимает программу. Код завершения 0.

    The ABI rejection rule and the missing diagnostic-code path are established by source. The current PackageError has no coded diagnostic or source-span producer, so an exact primary location for TPZ5031 cannot be derived and remains Pending. This complete package fixture uses invocationArgs without a positional source file.

    Меню

    Загрузка →