prometeu-studio/docs/compiler/pbs/pull-requests/PR-13.2-flow-body-analyzer-callable-body-and-completion-decomposition.md
2026-03-24 13:42:37 +00:00

2.7 KiB

PR-13.2 - Flow Body Analyzer Callable Body and Completion Decomposition

Briefing

As regras de entrada de callable e de completion/fallthrough em PbsFlowBodyAnalyzer formam um cluster coeso, mas hoje ficam misturadas com statement analysis e assignment resolution.

Esta PR extrai essa superficie para colaboradores dedicados, sem alterar funcionalidade.

Motivation

Dor atual que esta PR resolve

  1. validateCallableBody, validateCallableCompletion, blockAlwaysReturns, statementAlwaysReturns, expressionAlwaysReturns, switchAlwaysReturns e handleAlwaysReturns concentram regras de completion com alto branching.
  2. Completion analysis e statement analysis sao preocupacoes diferentes e hoje dividem a mesma classe.
  3. Essa parte e muito sensivel e merece uma fronteira estrutural propria.

Target

Separar a camada de body entry/completion:

  1. bootstrap de callable body,
  2. validacao de fallthrough/completion,
  3. regras de always returns,
  4. exaustividade relevante para completion.

Dependencies

Prerequisito direto:

  1. PR-13.1

Scope

  1. Extrair validateCallableBody.
  2. Extrair validateCallableCompletion, blockAlwaysReturns, statementAlwaysReturns, expressionAlwaysReturns.
  3. Extrair switchAlwaysReturns, switchIsExhaustive, handleAlwaysReturns, handleArmAlwaysReturns, isKnownErrorPath.

Non-Goals

  1. Nao alterar as regras atuais de fallthrough para result/plain non-unit.
  2. Nao alterar a semantica de exaustividade usada apenas para completion.
  3. Nao alterar statement analysis ou assignment checks.

Method

O que deve ser feito explicitamente

  1. Introduzir um analisador de completion ou divisao equivalente.
  2. Manter PbsFlowBodyAnalyzer como orquestrador do processo.
  3. Preservar rigorosamente a ordem atual de checks e codigos de diagnostico.

Acceptance Criteria

  1. A logica de completion/fallthrough deixa de ficar centralizada em PbsFlowBodyAnalyzer.
  2. As regras de always returns permanecem equivalentes.
  3. Nenhum teste de fallthrough, control flow ou result flow muda comportamento esperado.

Tests

  1. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsFallthroughTest*
  2. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*
  3. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsResultFlowRulesTest*
  4. :prometeu-compiler:frontends:prometeu-frontend-pbs:test

Affected Documents

  1. Nenhum documento normativo.

Open Questions

  1. switch/handle completion deve ficar junto do completion analyzer ou reaproveitar colaboradores do expression analyzer. A recomendacao e manter local ao completion analyzer para evitar acoplamento indevido entre analise de tipo e analise de terminacao.