74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown
# PR-05.2 - IRBackend Callsite Classification by Semantic Identity
|
|
|
|
## Briefing
|
|
|
|
A classificação de callsites no frontend executável ainda depende de heurística textual de callee.
|
|
|
|
Esta PR torna obrigatória a classificação por identidade semântica resolvida no binding, eliminando inferência por nome/forma textual.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Risco de classificar callsite no bucket errado (`CALL_FUNC`, `CALL_HOST`, `CALL_INTRINSIC`).
|
|
2. Ambiguidade em member/bind/group callee com nome coincidente.
|
|
3. Falta de robustez em evolução de sintaxe semântica do FE.
|
|
|
|
## Target
|
|
|
|
Fronteira `PBS FE -> IRBackend` com identidade de callsite estável e sem heurística textual para decisão de categoria.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-05.0.1` (NameTable compartilhada).
|
|
2. `PR-05.0.2` (ModuleId no FE).
|
|
3. `PR-05.0.3` (CallableId/IntrinsicId tipados no contrato).
|
|
4. `PR-05.0.4` (shape/signature internadas).
|
|
|
|
## Scope
|
|
|
|
1. Resultado de resolução semântica para chamadas.
|
|
2. Estrutura de lowering para carregar identidade resolvida.
|
|
3. Diagnósticos quando identidade não estiver resolvida no ponto exigido.
|
|
|
|
## Non-Goals
|
|
|
|
1. Não muda política de overload além do já definido em semântica.
|
|
2. Não introduz novas categorias de callsite.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Propagar do analisador semântico para lowering um descritor explícito de destino de chamada.
|
|
2. O descritor deve carregar identidade canônica tipada (ao menos categoria + id alvo), sem depender de nome textual.
|
|
3. Remover dependência de `extractSimpleCalleeName` para classificação.
|
|
4. Exigir que cada callsite emitido em `IRBackend` esteja em exatamente uma categoria válida.
|
|
5. Emitir erro determinístico quando o FE não possuir identidade semântica suficiente para classificar o callsite.
|
|
6. Validar compatibilidade de metadados obrigatórios por categoria no ato de emissão.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Classificação de callsite não depende de parsing textual de callee.
|
|
2. Cada callsite em `IRBackend` possui categoria única e metadados obrigatórios.
|
|
3. Casos ambíguos geram diagnóstico estável em fase correta, sem fallback heurístico.
|
|
4. Não há regressão em casos já válidos.
|
|
5. O payload de callsite no contrato executável é tipado por ID, não por inferência textual.
|
|
|
|
## Tests
|
|
|
|
1. Testes positivos para chamadas de função, host e intrínseco com diferentes formas sintáticas.
|
|
2. Testes negativos de ambiguidade e callee não resolvido.
|
|
3. Testes de estabilidade diagnóstica (code/phase/span).
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/pbs/specs/13. Lowering IRBackend Specification.md`
|
|
2. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais.
|