prometeu-studio/docs/compiler/pbs/pull-requests/PR-19.6-pbs-semantics-lifecycle-init-frame-and-initallowed-validation.md

2.3 KiB

PR-19.6 - PBS Semantics for Lifecycle Markers, Init Ordering, and InitAllowed Validation

Briefing

Com globals e seu dependency graph fechados, a ultima frente semantica da familia 19 precisa validar a camada de lifecycle:

  1. [Init],
  2. [Frame],
  3. ordenacao por arquivo/modulo/projeto,
  4. e admissibilidade de host calls via [InitAllowed].

Target

Implementar a validacao de:

  1. signatures de [Init] e [Frame],
  2. unicidade e colocacao de [Frame],
  3. um [Init] por arquivo,
  4. elevacao do [Init] co-localizado com [Frame] para project init,
  5. restricao de host calls durante init.

Dependencies

Prerequisitos diretos:

  1. PR-19.3
  2. PR-19.5

Scope

  1. Validar fn name() -> void para [Init] e [Frame].
  2. Validar unicidade de [Frame] por projeto executavel.
  3. Validar que project init e o [Init] no mesmo arquivo do [Frame].
  4. Validar que arquivos podem ter no maximo um [Init].
  5. Validar host call em init apenas quando o target SDK carregar [InitAllowed].

Non-Goals

  1. Nao implementar ainda wrapper publicado.
  2. Nao implementar ainda callables sinteticos de lowering.
  3. Nao produzir ainda artifacts de conformance finais.

Method

  1. Construir a semantica de lifecycle em cima do ordering ja definido para globals.
  2. Tratar module init e project init como diferenca de ordenacao e papel, nao de syntax.
  3. Validar [InitAllowed] somente em host methods da SDK.

Acceptance Criteria

  1. [Init] e [Frame] exigem fn name() -> void.
  2. Existe exatamente um [Frame] por projeto executavel.
  3. project init e identificado apenas no arquivo do [Frame].
  4. Um arquivo nao pode declarar mais de um [Init].
  5. Host calls em init sem [InitAllowed] sao rejeitadas.
  6. Uso invalido de [InitAllowed] e rejeitado.

Tests

  1. Fixtures positivas para:
    • file [Init],
    • project [Init],
    • [Frame],
    • loops em init,
    • host call admissivel com [InitAllowed].
  2. Fixtures negativas para:
    • assinatura invalida,
    • multiplos [Frame],
    • project init fora do arquivo do [Frame],
    • multiplos [Init] no arquivo,
    • host call sem [InitAllowed],
    • [InitAllowed] em target invalido.

Affected Artifacts

  1. validadores semanticos/lifecycle PBS
  2. admission de host methods em init
  3. testes de lifecycle e diagnostics

Open Questions

  1. Nenhuma. O passo seguinte e lowering.