68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
# PR-13.1 - Flow Body Analyzer Context and Entrypoint Foundation
|
|
|
|
## Briefing
|
|
|
|
`PbsFlowBodyAnalyzer` concentra montagem de contexto, iteracao de callables e delegacao recursiva de block/statement analysis em uma unica classe.
|
|
|
|
Esta PR introduz a base estrutural para decomposicao sem alterar funcionalidade: contexto compartilhado, encapsulamento dos argumentos recorrentes e uma fachada mais clara para a classe.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. A classe repassa muitos parametros repetidos entre `validate`, `validateCallableBody`, `analyzeBlock` e `analyzeStatement`.
|
|
2. Extracoes futuras ficam arriscadas sem um contexto comum explicito.
|
|
3. A fundacao estrutural reduz risco antes de mover regras de completion, statements e assignment resolution.
|
|
|
|
## Target
|
|
|
|
Estabelecer uma base segura para o refactor:
|
|
|
|
1. contexto compartilhado de body analysis,
|
|
2. encapsulamento de `returnType`, `resultErrorName`, `receiverType`, `model` e `diagnostics`,
|
|
3. fachada pequena para `validate(...)`.
|
|
|
|
## Dependencies
|
|
|
|
Nenhuma.
|
|
|
|
## Scope
|
|
|
|
1. Introduzir um contexto/request object para analise de corpo.
|
|
2. Reorganizar `validate` e `validateCallableBody` sem mover ainda regras complexas.
|
|
3. Preservar a relacao atual com `PbsFlowExpressionAnalyzer`.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao alterar inferencia de tipos ou diagnosticos.
|
|
2. Nao alterar `Model.from(...)`.
|
|
3. Nao mover ainda completion analysis ou assignment target resolution para classes separadas.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Criar um contexto pequeno e explicito para analise recursiva de blocos/callables.
|
|
2. Manter `PbsFlowBodyAnalyzer` como entrypoint package-private.
|
|
3. Preservar a ordem atual de validacao e emissao de erros.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `PbsFlowBodyAnalyzer` continua com o mesmo contrato observavel.
|
|
2. A quantidade de parametros repetidos nas chamadas internas e reduzida.
|
|
3. Nao ha mudanca funcional em flow analysis, completion ou diagnosticos.
|
|
|
|
## Tests
|
|
|
|
1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*`
|
|
2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*`
|
|
3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test`
|
|
|
|
## Affected Documents
|
|
|
|
1. Nenhum documento normativo.
|
|
|
|
## Open Questions
|
|
|
|
1. O contexto deve ser derivado imutavelmente por bloco ou mutado localmente. A recomendacao e derivacao leve para reduzir risco de vazamento entre branches.
|