# 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 1. A classe combina orquestracao, recursion, block delegation e regras semanticas detalhadas. 2. Extracoes futuras ficam arriscadas sem um contexto compartilhado explicito. 3. 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: 1. contexto compartilhado para analise de expressao, 2. encapsulamento de argumentos recorrentes, 3. fachada pequena em `PbsFlowExpressionAnalyzer`. ## Dependencies Nenhuma. ## Scope 1. Introduzir um contexto/request object para `scope`, `expectedType`, `returnType`, `resultErrorName`, `receiverType`, `model`, `diagnostics`, `use` e `valueContext`. 2. Encapsular a dependencia de `BlockAnalyzer` nessa camada. 3. Reorganizar o dispatch principal sem mover ainda regras complexas para outras classes. ## Non-Goals 1. Nao alterar inferencia de tipos. 2. Nao alterar diagnosticos ou spans. 3. Nao reescrever `PbsFlowTypeOps` ou `PbsFlowBodyAnalyzer`. ## Method ### O que deve ser feito explicitamente 1. Criar um contexto pequeno e explicito para a analise recursiva. 2. Manter `PbsFlowExpressionAnalyzer` como entrypoint package-private. 3. Preservar a ordem atual de recursion e emissao de diagnosticos. 4. Garantir que esta PR seja puramente estrutural. ## Acceptance Criteria 1. `PbsFlowExpressionAnalyzer` continua com o mesmo contrato observavel. 2. A quantidade de parametros repetidos no dispatch recursivo e reduzida. 3. Nao ha mudanca funcional em inferencia, erros ou comportamento da suite. ## Tests 1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*` 2. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*` 3. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsApplyResolutionTest*` 4. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test` ## Affected Documents 1. Nenhum documento normativo. ## Open Questions 1. O contexto deve ser imutavel por chamada recursiva ou permitir derivacao incremental. A recomendacao e usar derivacao imutavel leve para reduzir risco de regressao.