# 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.