"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AcessoMetodoOuPropriedade = void 0;
/**
 * Chamado de `Get` em Égua Clássico, é o construto de acesso a métodos ou membros de
 * classe. Foi usado por Delégua até a versão 0.38.4, em que uma especialização maior
 * de tipos é necessária para o correto funcionamento da compilação por LLVM. Os demais
 * dialetos ainda a usam sem problemas.
 */
class AcessoMetodoOuPropriedade {
    constructor(hashArquivo, objeto, simbolo, tipo = 'qualquer') {
        this.linha = objeto.linha;
        this.hashArquivo = hashArquivo;
        this.objeto = objeto;
        this.simbolo = simbolo;
        this.tipo = tipo || objeto.tipo;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoAcessoMetodoOuPropriedade(this);
    }
    paraTexto() {
        return (`<acesso-método-ou-propriedade objeto=${this.objeto.paraTexto()} ` +
            `métodoOuPropriedade=${this.simbolo.lexema} ` +
            `/>`);
    }
    paraTextoSaida() {
        throw new Error('Método não implementado.');
    }
}
exports.AcessoMetodoOuPropriedade = AcessoMetodoOuPropriedade;
//# sourceMappingURL=acesso-metodo-ou-propriedade.js.map