2.4 KiB
2.4 KiB
PR-12.2 - Flow Expression Analyzer Literal and Structural Expression Splitting
Briefing
Grande parte do dispatch de PbsFlowExpressionAnalyzer cobre formas literais e estruturais de expressao: literais, this, identificadores, grupos, tuplas, blocos, unarios, binarios, none/some, new, as, ok/err.
Esta PR extrai essas familias para componentes menores, sem alterar funcionalidade.
Motivation
Dor atual que esta PR resolve
- O dispatch principal mistura casos triviais com regras mais complexas de call/member/switch/handle.
- Formas estruturais simples podem ser separadas com risco baixo e alta reducao de complexidade.
- Sem esse corte, o dispatch central continua inchado mesmo com contexto compartilhado.
Target
Separar a analise de expressoes literais e estruturais:
- literais e identificadores,
- grupos, tuplas e blocos,
- unario/binario,
none/some,new,bind-independent simple forms,as,ok/err.
Dependencies
Prerequisito direto:
PR-12.1
Scope
- Extrair casos simples de
analyzeExpressionInternalpara helpers/colaboradores dedicados. - Manter o resultado em
ExprResultexatamente como hoje. - Preservar todas as chamadas a
typeOpseblockAnalyzer.
Non-Goals
- Nao alterar regras de callback/bind.
- Nao alterar member access ou overload resolution.
- Nao alterar switch/handle/result propagation.
Method
O que deve ser feito explicitamente
- Mover primeiro os casos com menor acoplamento semantico.
- Manter o dispatch principal apenas como roteador.
- Preservar a ordem atual de recursion para evitar mudanca em diagnosticos acumulados.
Acceptance Criteria
- Casos literais e estruturais deixam de ficar todos dentro do dispatch principal.
- AST/semantics observados pela suite permanecem equivalentes.
- O hotspot principal da classe reduz tamanho e branching sem alterar comportamento.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsExprParserTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsOptionalResultTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
BindExprdeve entrar aqui ou junto de call resolution. A recomendacao e mantê-lo paraPR-12.3, porque ele depende de matching de callback/callable.