2.7 KiB
2.7 KiB
PR-13.2 - Flow Body Analyzer Callable Body and Completion Decomposition
Briefing
As regras de entrada de callable e de completion/fallthrough em PbsFlowBodyAnalyzer formam um cluster coeso, mas hoje ficam misturadas com statement analysis e assignment resolution.
Esta PR extrai essa superficie para colaboradores dedicados, sem alterar funcionalidade.
Motivation
Dor atual que esta PR resolve
validateCallableBody,validateCallableCompletion,blockAlwaysReturns,statementAlwaysReturns,expressionAlwaysReturns,switchAlwaysReturnsehandleAlwaysReturnsconcentram regras de completion com alto branching.- Completion analysis e statement analysis sao preocupacoes diferentes e hoje dividem a mesma classe.
- Essa parte e muito sensivel e merece uma fronteira estrutural propria.
Target
Separar a camada de body entry/completion:
- bootstrap de callable body,
- validacao de fallthrough/completion,
- regras de
always returns, - exaustividade relevante para completion.
Dependencies
Prerequisito direto:
PR-13.1
Scope
- Extrair
validateCallableBody. - Extrair
validateCallableCompletion,blockAlwaysReturns,statementAlwaysReturns,expressionAlwaysReturns. - Extrair
switchAlwaysReturns,switchIsExhaustive,handleAlwaysReturns,handleArmAlwaysReturns,isKnownErrorPath.
Non-Goals
- Nao alterar as regras atuais de fallthrough para result/plain non-unit.
- Nao alterar a semantica de exaustividade usada apenas para completion.
- Nao alterar statement analysis ou assignment checks.
Method
O que deve ser feito explicitamente
- Introduzir um analisador de completion ou divisao equivalente.
- Manter
PbsFlowBodyAnalyzercomo orquestrador do processo. - Preservar rigorosamente a ordem atual de checks e codigos de diagnostico.
Acceptance Criteria
- A logica de completion/fallthrough deixa de ficar centralizada em
PbsFlowBodyAnalyzer. - As regras de
always returnspermanecem equivalentes. - Nenhum teste de fallthrough, control flow ou result flow muda comportamento esperado.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsFallthroughTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsResultFlowRulesTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
switch/handlecompletion deve ficar junto do completion analyzer ou reaproveitar colaboradores do expression analyzer. A recomendacao e manter local ao completion analyzer para evitar acoplamento indevido entre analise de tipo e analise de terminacao.