# PR-13.4 - Flow Body Analyzer Assignment Target Resolution Decomposition ## Briefing `resolveAssignmentTarget` e a logica correlata de assignment compatibility concentram um dos trechos mais densos e sensiveis de `PbsFlowBodyAnalyzer`. Esta PR extrai a resolucao de assignment target e as regras de acesso/leitura/escrita de campo para colaboradores dedicados, sem alterar funcionalidade. ## Motivation ### Dor atual que esta PR resolve 1. Assignment resolution mistura lookup de locals, `this`, singleton services, consts e navegação em campos de struct. 2. Regras de leitura e escrita de campo estao acopladas ao fluxo do statement analyzer. 3. A superficie e densa e merece um resolver proprio com foco em diagnósticos de assignability. ## Target Separar a camada de assignment semantics: 1. resolucao de assignment target, 2. assignability de roots conhecidos, 3. leitura/escrita de campos, 4. type compatibility por operador de atribuicao. ## Dependencies Prerequisitos diretos: 1. `PR-13.1` 2. `PR-13.2` 3. `PR-13.3` ## Scope 1. Extrair `analyzeAssignmentStatement`. 2. Extrair `resolveAssignmentTarget`, `assignmentCompatible`, `canReadStructField`, `canWriteStructField`, `isKnownNonAssignableRoot`. 3. Manter `AssignmentTargetResolution` ou mover para um modelo focado de assignment. ## Non-Goals 1. Nao alterar regras de mutabilidade/local const. 2. Nao alterar regras de acesso a campos privados/publicos. 3. Nao alterar o mapeamento de operadores compostos para inferencia binaria. ## Method ### O que deve ser feito explicitamente 1. Criar um resolver dedicado para assignment targets. 2. Preservar exatamente os mesmos erros emitidos para target nao resolvido, nao assignable ou field access denied. 3. Reusar `PbsFlowTypeOps` sem alterar sua logica. ## Acceptance Criteria 1. Assignment target resolution deixa de ficar centralizada em `PbsFlowBodyAnalyzer`. 2. Regras de assignability e field access permanecem equivalentes. 3. Nenhum teste de assignment ou control flow muda comportamento esperado. ## Tests 1. `:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*` 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. `AssignmentTargetResolution` deve permanecer como record local ou migrar para um modelo package-private dedicado. A recomendacao e mover para o resolver de assignment para reduzir acoplamento.