prometeu-studio/docs/pbs/pull-requests/PR-O4.1-callable-signature-identity-and-dense-symbol-table.md
2026-03-24 13:42:27 +00:00

33 lines
1.3 KiB
Markdown

# PR-O4.1 - Callable Signature Identity and Dense Symbol Table
## Briefing
Eliminar ambiguidade de callsites no backend substituindo resolucao por nome simples por identidade canônica de callable baseada em assinatura.
## Target
- Modelo `IRBackend`/`IRBackendExecutableFunction`.
- Lowering PBS para callsites `CALL_FUNC`.
- Backend `LowerToIRVM` no mapeamento de callee.
- Infra `source/tables` para simbolos de callable.
## Method
- Introduzir `CallableId` e `CallableSignatureRef` usando `DenseTable`/`InternTable` em `source/tables`.
- FE emite `calleeCallableId` para `CALL_FUNC` em vez de lookup textual por nome.
- Chave canônica de assinatura: `module + callable + arity + type-shape`.
- Backend resolve `CALL_FUNC` por id canônico, sem heuristica `putIfAbsent(name)`.
## Acceptance Criteria
- Overloads válidos com mesmo nome e assinaturas diferentes chamam alvo correto.
- Não há resolução de callee por nome simples no caminho executável.
- Mesmo grafo de entrada gera mesma tabela densa de callables.
- Falha de resolução gera erro determinístico de lowering.
## Tests
- Fixtures com overloads por aridade e por shape de tipo.
- Regressão negativa para callsite sem `CallableId` válido.
- Teste de determinismo de IDs de callable entre execuções.