33 lines
1.3 KiB
Markdown
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.
|