2.5 KiB
2.5 KiB
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
- Assignment resolution mistura lookup de locals,
this, singleton services, consts e navegação em campos de struct. - Regras de leitura e escrita de campo estao acopladas ao fluxo do statement analyzer.
- A superficie e densa e merece um resolver proprio com foco em diagnósticos de assignability.
Target
Separar a camada de assignment semantics:
- resolucao de assignment target,
- assignability de roots conhecidos,
- leitura/escrita de campos,
- type compatibility por operador de atribuicao.
Dependencies
Prerequisitos diretos:
PR-13.1PR-13.2PR-13.3
Scope
- Extrair
analyzeAssignmentStatement. - Extrair
resolveAssignmentTarget,assignmentCompatible,canReadStructField,canWriteStructField,isKnownNonAssignableRoot. - Manter
AssignmentTargetResolutionou mover para um modelo focado de assignment.
Non-Goals
- Nao alterar regras de mutabilidade/local const.
- Nao alterar regras de acesso a campos privados/publicos.
- Nao alterar o mapeamento de operadores compostos para inferencia binaria.
Method
O que deve ser feito explicitamente
- Criar um resolver dedicado para assignment targets.
- Preservar exatamente os mesmos erros emitidos para target nao resolvido, nao assignable ou field access denied.
- Reusar
PbsFlowTypeOpssem alterar sua logica.
Acceptance Criteria
- Assignment target resolution deixa de ficar centralizada em
PbsFlowBodyAnalyzer. - Regras de assignability e field access permanecem equivalentes.
- Nenhum teste de assignment ou control flow muda comportamento esperado.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsAssignmentTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsDeclarationsTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
AssignmentTargetResolutiondeve permanecer como record local ou migrar para um modelo package-private dedicado. A recomendacao e mover para o resolver de assignment para reduzir acoplamento.