2.6 KiB
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
- Member access e callable resolution sao os clusters mais densos depois do dispatch principal.
- A classe mistura regras de acesso a tuple/struct/service/contract com overload resolution e bind matching.
- Qualquer ajuste nessas regras hoje exige tocar um arquivo muito central e com alta chance de regressao.
Target
Separar a analise de resolucao:
- member access,
- call/apply overload resolution,
- bind-to-callback matching,
- field access permission checks.
Dependencies
Prerequisitos diretos:
PR-12.1PR-12.2
Scope
- Extrair
analyzeCallExpression,analyzeApplyExpression,resolveCallableApplication. - Extrair
analyzeMemberExpressionecanReadStructField. - Mover a parte especifica de
BindExprpara o mesmo cluster de resolucao.
Non-Goals
- Nao alterar diagnosticos de overload ambiguous/unresolved.
- Nao alterar regras de leitura de campo privado/publico.
- Nao alterar a proibicao de bare method extraction.
Method
O que deve ser feito explicitamente
- Criar um resolver focado em call/member semantics.
- Preservar o mesmo uso de
TypeView,CallableSymboleExprResult. - Garantir que o order of checks permaneça equivalente, especialmente em erros e narrowing por
expectedType.
Acceptance Criteria
- Call/member resolution deixa de ficar concentrada em
PbsFlowExpressionAnalyzer. - Bare method extraction, field access e overload matching permanecem equivalentes.
- Suite semantica continua verde sem mudancas funcionais.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsApplyResolutionTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsFrontendCompilerTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
BindExprdeve compartilhar exatamente o mesmo narrowing path decall/applyou ficar em helper proprio. A recomendacao e helper proprio dentro do mesmo resolver, para evitar acoplamento artificial.