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

2.4 KiB

PR-13.1 - Flow Body Analyzer Context and Entrypoint Foundation

Briefing

PbsFlowBodyAnalyzer concentra montagem de contexto, iteracao de callables e delegacao recursiva de block/statement analysis em uma unica classe.

Esta PR introduz a base estrutural para decomposicao sem alterar funcionalidade: contexto compartilhado, encapsulamento dos argumentos recorrentes e uma fachada mais clara para a classe.

Motivation

Dor atual que esta PR resolve

  1. A classe repassa muitos parametros repetidos entre validate, validateCallableBody, analyzeBlock e analyzeStatement.
  2. Extracoes futuras ficam arriscadas sem um contexto comum explicito.
  3. A fundacao estrutural reduz risco antes de mover regras de completion, statements e assignment resolution.

Target

Estabelecer uma base segura para o refactor:

  1. contexto compartilhado de body analysis,
  2. encapsulamento de returnType, resultErrorName, receiverType, model e diagnostics,
  3. fachada pequena para validate(...).

Dependencies

Nenhuma.

Scope

  1. Introduzir um contexto/request object para analise de corpo.
  2. Reorganizar validate e validateCallableBody sem mover ainda regras complexas.
  3. Preservar a relacao atual com PbsFlowExpressionAnalyzer.

Non-Goals

  1. Nao alterar inferencia de tipos ou diagnosticos.
  2. Nao alterar Model.from(...).
  3. Nao mover ainda completion analysis ou assignment target resolution para classes separadas.

Method

O que deve ser feito explicitamente

  1. Criar um contexto pequeno e explicito para analise recursiva de blocos/callables.
  2. Manter PbsFlowBodyAnalyzer como entrypoint package-private.
  3. Preservar a ordem atual de validacao e emissao de erros.

Acceptance Criteria

  1. PbsFlowBodyAnalyzer continua com o mesmo contrato observavel.
  2. A quantidade de parametros repetidos nas chamadas internas e reduzida.
  3. Nao ha mudanca funcional em flow analysis, completion ou diagnosticos.

Tests

  1. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*
  2. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*
  3. :prometeu-compiler:frontends:prometeu-frontend-pbs:test

Affected Documents

  1. Nenhum documento normativo.

Open Questions

  1. O contexto deve ser derivado imutavelmente por bloco ou mutado localmente. A recomendacao e derivacao leve para reduzir risco de vazamento entre branches.