UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

38 lines 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SuperProxy = void 0; const chamavel_1 = require("./chamavel"); /** * Objeto retornado por `super()`. Carrega a instância atual e o ponto de partida * no OReM, permitindo herança cooperativa em chamadas do tipo `super().meuMetodo()`. * * Estende `Chamavel` para que `super()` seja resolvido pelo caminho normal de * chamada em `visitarExpressaoDeChamada`, retornando o próprio proxy para encadeamento. */ class SuperProxy extends chamavel_1.Chamavel { constructor(instancia, proximaClasse) { super(); this.instancia = instancia; this.proximaClasse = proximaClasse; } aridade() { const inicializador = this.proximaClasse.encontrarMetodo('construtor'); if (!inicializador) return 0; return inicializador.aridade(); } /** * `super()` executa o construtor da próxima classe no OReM e retorna * o próprio proxy para permitir encadeamento: `super().meuMetodo()`. */ async chamar(visitante, argumentos) { const inicializador = this.proximaClasse.encontrarMetodo('construtor'); if (inicializador) { const construtorVinculado = inicializador.funcaoPorMetodoDeClasse(this.instancia); await construtorVinculado.chamar(visitante, argumentos); } return this; } } exports.SuperProxy = SuperProxy; //# sourceMappingURL=super-proxy.js.map