2.6 KiB
2.6 KiB
PR-12.1 - Flow Expression Analyzer Context and Dispatch Foundation
Briefing
PbsFlowExpressionAnalyzer concentra estado compartilhado e um dispatch grande de Expression -> semantic analysis em uma unica classe.
Esta PR introduz a base estrutural para decomposicao sem alterar funcionalidade: contexto compartilhado, helpers comuns e uma fronteira clara entre fachada e implementacoes especializadas.
Motivation
Dor atual que esta PR resolve
- A classe combina orquestracao, recursion, block delegation e regras semanticas detalhadas.
- Extracoes futuras ficam arriscadas sem um contexto compartilhado explicito.
- O maior hotspot da classe e o dispatch principal de
analyzeExpressionInternal, que hoje depende de muitos parametros repetidos.
Target
Estabelecer uma fundacao segura para o refactor:
- contexto compartilhado para analise de expressao,
- encapsulamento de argumentos recorrentes,
- fachada pequena em
PbsFlowExpressionAnalyzer.
Dependencies
Nenhuma.
Scope
- Introduzir um contexto/request object para
scope,expectedType,returnType,resultErrorName,receiverType,model,diagnostics,useevalueContext. - Encapsular a dependencia de
BlockAnalyzernessa camada. - Reorganizar o dispatch principal sem mover ainda regras complexas para outras classes.
Non-Goals
- Nao alterar inferencia de tipos.
- Nao alterar diagnosticos ou spans.
- Nao reescrever
PbsFlowTypeOpsouPbsFlowBodyAnalyzer.
Method
O que deve ser feito explicitamente
- Criar um contexto pequeno e explicito para a analise recursiva.
- Manter
PbsFlowExpressionAnalyzercomo entrypoint package-private. - Preservar a ordem atual de recursion e emissao de diagnosticos.
- Garantir que esta PR seja puramente estrutural.
Acceptance Criteria
PbsFlowExpressionAnalyzercontinua com o mesmo contrato observavel.- A quantidade de parametros repetidos no dispatch recursivo e reduzida.
- Nao ha mudanca funcional em inferencia, erros ou comportamento da suite.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsApplyResolutionTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
- O contexto deve ser imutavel por chamada recursiva ou permitir derivacao incremental. A recomendacao e usar derivacao imutavel leve para reduzir risco de regressao.