prometeu-studio/docs/compiler/pbs/pull-requests/PR-12.1-flow-expression-analyzer-context-and-dispatch-foundation.md
2026-03-24 13:42:37 +00:00

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

  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.