2.3 KiB
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:
[Init],[Frame],- ordenacao por arquivo/modulo/projeto,
- e admissibilidade de host calls via
[InitAllowed].
Target
Implementar a validacao de:
- signatures de
[Init]e[Frame], - unicidade e colocacao de
[Frame], - um
[Init]por arquivo, - elevacao do
[Init]co-localizado com[Frame]para project init, - restricao de host calls durante init.
Dependencies
Prerequisitos diretos:
PR-19.3PR-19.5
Scope
- Validar
fn name() -> voidpara[Init]e[Frame]. - Validar unicidade de
[Frame]por projeto executavel. - Validar que project init e o
[Init]no mesmo arquivo do[Frame]. - Validar que arquivos podem ter no maximo um
[Init]. - Validar host call em init apenas quando o target SDK carregar
[InitAllowed].
Non-Goals
- Nao implementar ainda wrapper publicado.
- Nao implementar ainda callables sinteticos de lowering.
- Nao produzir ainda artifacts de conformance finais.
Method
- Construir a semantica de lifecycle em cima do ordering ja definido para globals.
- Tratar module init e project init como diferenca de ordenacao e papel, nao de syntax.
- Validar
[InitAllowed]somente em host methods da SDK.
Acceptance Criteria
[Init]e[Frame]exigemfn name() -> void.- Existe exatamente um
[Frame]por projeto executavel. project inite identificado apenas no arquivo do[Frame].- Um arquivo nao pode declarar mais de um
[Init]. - Host calls em init sem
[InitAllowed]sao rejeitadas. - Uso invalido de
[InitAllowed]e rejeitado.
Tests
- Fixtures positivas para:
- file
[Init], - project
[Init], [Frame],- loops em init,
- host call admissivel com
[InitAllowed].
- file
- 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
- validadores semanticos/lifecycle PBS
- admission de host methods em init
- testes de lifecycle e diagnostics
Open Questions
- Nenhuma. O passo seguinte e lowering.