2.5 KiB
2.5 KiB
PR-13.3 - Flow Body Analyzer Statement Analysis Splitting
Briefing
Depois de separar entry/completion, o maior hotspot restante em PbsFlowBodyAnalyzer passa a ser analyzeBlock e analyzeStatement, com tratamento de let, return, if, for, while, expression statement e delegacao para PbsFlowExpressionAnalyzer.
Esta PR extrai essa superficie para colaboradores menores, sem alterar funcionalidade.
Motivation
Dor atual que esta PR resolve
analyzeStatementconcentra varias formas de statement com regras semanticas distintas.- Loops,
ifereturnusam os mesmos parametros e diagnosticos, mas pertencem a clusters semanticos diferentes. - A manutencao dessa logica em um unico metodo torna a classe dificil de evoluir.
Target
Separar a analise de statements:
- blocos e escopos,
lete expression statements,returnflow,if/for/while.
Dependencies
Prerequisitos diretos:
PR-13.1PR-13.2
Scope
- Extrair
analyzeBlocke o dispatch deanalyzeStatement. - Extrair regras de
let,if,for,whilee expression statement para helpers/colaboradores dedicados. - Deixar
returnbootstrap pronto para corte proprio, sem ainda mexer em assignment target resolution.
Non-Goals
- Nao alterar mutabilidade de escopo local.
- Nao alterar validacao de tipos de condicao ou bounds de loop.
- Nao alterar assignment resolution.
Method
O que deve ser feito explicitamente
- Introduzir um statement analyzer ou divisao equivalente por familias.
- Reusar o contexto compartilhado da
PR-13.1. - Preservar a ordem atual de chamadas ao
expressionAnalyzer.
Acceptance Criteria
analyzeStatementdeixa de concentrar todas as formas de statement.- Scoping, condition checks e loop bound checks permanecem equivalentes.
- Suite semantica continua verde sem mudanca funcional.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
returndeve ficar no statement analyzer ou em um colaborador proprio de result flow. A recomendacao e deixar o corte final para a PR seguinte se isso simplificar mais a classe.