prometeu-studio/docs/compiler/pbs/pull-requests/PR-12.3-flow-expression-analyzer-call-and-member-resolution-decomposition.md
2026-03-24 13:42:37 +00:00

2.6 KiB

PR-12.3 - Flow Expression Analyzer Call and Member Resolution Decomposition

Briefing

analyzeCallExpression, analyzeApplyExpression, resolveCallableApplication, analyzeMemberExpression e parte de BindExpr concentram a logica de resolucao mais sensivel do analisador.

Esta PR extrai essa superficie para colaboradores menores, sem alterar regras de overload, bare method extraction, acesso a campos ou matching de callback.

Motivation

Dor atual que esta PR resolve

  1. Member access e callable resolution sao os clusters mais densos depois do dispatch principal.
  2. A classe mistura regras de acesso a tuple/struct/service/contract com overload resolution e bind matching.
  3. Qualquer ajuste nessas regras hoje exige tocar um arquivo muito central e com alta chance de regressao.

Target

Separar a analise de resolucao:

  1. member access,
  2. call/apply overload resolution,
  3. bind-to-callback matching,
  4. field access permission checks.

Dependencies

Prerequisitos diretos:

  1. PR-12.1
  2. PR-12.2

Scope

  1. Extrair analyzeCallExpression, analyzeApplyExpression, resolveCallableApplication.
  2. Extrair analyzeMemberExpression e canReadStructField.
  3. Mover a parte especifica de BindExpr para o mesmo cluster de resolucao.

Non-Goals

  1. Nao alterar diagnosticos de overload ambiguous/unresolved.
  2. Nao alterar regras de leitura de campo privado/publico.
  3. Nao alterar a proibicao de bare method extraction.

Method

O que deve ser feito explicitamente

  1. Criar um resolver focado em call/member semantics.
  2. Preservar o mesmo uso de TypeView, CallableSymbol e ExprResult.
  3. Garantir que o order of checks permaneça equivalente, especialmente em erros e narrowing por expectedType.

Acceptance Criteria

  1. Call/member resolution deixa de ficar concentrada em PbsFlowExpressionAnalyzer.
  2. Bare method extraction, field access e overload matching permanecem equivalentes.
  3. Suite semantica continua verde sem mudancas funcionais.

Tests

  1. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsApplyResolutionTest*
  2. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*
  3. :prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsFrontendCompilerTest*
  4. :prometeu-compiler:frontends:prometeu-frontend-pbs:test

Affected Documents

  1. Nenhum documento normativo.

Open Questions

  1. BindExpr deve compartilhar exatamente o mesmo narrowing path de call/apply ou ficar em helper proprio. A recomendacao e helper proprio dentro do mesmo resolver, para evitar acoplamento artificial.