prometeu-studio/docs/compiler/pbs/pull-requests/PR-05.2-irbackend-callsite-classification-by-semantic-identity.md
2026-03-24 13:42:37 +00:00

2.7 KiB

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.