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

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

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

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

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

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

    An exported declaration exposes a private nominal type after transparent aliases are expanded.

    Diagnostic and cause

    Ссылка

    Private type in exported surface

    Семейство
    topaz
    Этап
    resolve
    Код
    TPZ3014

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

    An exported declaration produces TPZ3014 when its resolved type exposes a private nominal type after transparent alias expansion. Annotated and inferred types follow the same rule.

    Действия

    Export the nominal type when it belongs in the public API, or return a value with an accessible type.

    The compiler facts describe the earlier source visibility check. The resolved public type contract also covers inferred types and expands transparent aliases before checking nominal visibility.

    Compiler phase: resolve.

    Compiler explanation: An exported signature mentions a type alias that the module does not export.

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

    • ⟨value⟩ is a module-private type and may not appear in an exported public surface; export the type or use an inline structural type Source

    An exported declaration exposes a module-private nominal type in its resolved type. The same rule covers annotated and inferred types after transparent alias expansion. The example exposes the private Count record in a return annotation.

    Правилоdiagnostics.tpz3014.rule

    Trigger and repair

    An exported declaration produces TPZ3014 when its resolved type exposes a private nominal type after transparent alias expansion. Annotated and inferred types follow the same rule.

    Response

    Ссылка

    Export the nominal type when it belongs in the public API, or return a value with an accessible type.

    Reproduction and verification

    Ссылка

    Rejected program

    Ссылка
    example.tpzRejected programОткрыть песочницу →
    1. import lib
    Ожидаемый выводНенулевой код завершения
    Нет стандартного вывода.
    $ topaz check example.tpz --format json · Целевой продукт 5.21.3
    lib.tpzRejected programОткрыть песочницу →
    1. record Count { value: int }
    2. export function count() -> Count { Count { value: 1 } }
    Ожидаемый результат

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

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

    The expected diagnostic, cause, source location, and accompanying diagnostics are specified below. The verification status records whether this program has been run.

    Corrected program

    Ссылка
    example.tpzCorrected programОткрыть песочницу →
    1. import lib
    Ожидаемый выводКод завершения 0
    Нет стандартного вывода.
    $ topaz check example.tpz --format json · Целевой продукт 5.21.3
    lib.tpzCorrected programОткрыть песочницу →
    1. export record Count { value: int }
    2. export function count() -> Count { Count { value: 1 } }
    Ожидаемый результат

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

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

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

    Меню

    Загрузка →