2.5 KiB
2.5 KiB
PR-12.4 - Flow Expression Analyzer Switch and Handle Decomposition
Briefing
switch e handle sao as maiores superfices especializadas restantes em PbsFlowExpressionAnalyzer, com regras de exaustividade, pattern typing, matching de erro e arm typing.
Esta PR separa essas construcoes em analisadores dedicados, mantendo exatamente o comportamento atual.
Motivation
Dor atual que esta PR resolve
analyzeSwitchExpressioneanalyzeHandleExpressionconcentram regras de alto branching e recovery semantico.- Essas regras sao semanticamente coesas e merecem fronteiras proprias.
- Sem esse corte, a classe principal continua com os hotspots mais caros de manutencao.
Target
Extrair a analise especializada de:
switch expression,switch pattern typing/keying,handle expression,handle block arme matching de error targets.
Dependencies
Prerequisitos diretos:
PR-12.1PR-12.2PR-12.3
Scope
- Extrair
analyzeSwitchExpression,switchPatternKey,switchPatternType. - Extrair
analyzeHandleExpression,analyzeHandleBlockArm,matchesTargetError,unwrapGroup. - Preservar a interacao com
blockAnalyzer,typeOpsemodel.
Non-Goals
- Nao alterar regras de exaustividade de switch em value position.
- Nao alterar regras de wildcard/default duplication.
- Nao alterar regras de
handleparaok(...)/err(...)terminais.
Method
O que deve ser feito explicitamente
- Criar analisadores especializados por construcao.
- Preservar ordem de validacoes e diagnosticos.
- Reusar o contexto compartilhado para evitar nova explosao de parametros.
Acceptance Criteria
switchehandledeixam de ficar implementados diretamente na classe principal.- Exaustividade, arm typing e error matching permanecem equivalentes.
- Nenhum teste de result flow, control flow ou optional/result muda comportamento esperado.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsResultFlowRulesTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsOptionalResultTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsSemanticsControlFlowTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test
Affected Documents
- Nenhum documento normativo.
Open Questions
switchPatternKeyeswitchPatternTypedevem ficar juntos no mesmo colaborador. A recomendacao e sim, porque ambos definem a semantica da superficie de pattern.