"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Extensao = void 0;
const declaracao_1 = require("./declaracao");
class Extensao extends declaracao_1.Declaracao {
    constructor(simboloTipo, metodos, ehGlobal, hashArquivo) {
        super(Number(simboloTipo.linha), hashArquivo);
        this.simboloTipo = simboloTipo;
        this.metodos = metodos;
        this.ehGlobal = ehGlobal;
    }
    async aceitar(visitante) {
        return await visitante.visitarDeclaracaoExtensao(this);
    }
    paraTexto() {
        const escopo = this.ehGlobal ? 'global ' : '';
        let resultado = `<extensao ${escopo}tipo=${this.simboloTipo.lexema}>`;
        for (const metodo of this.metodos) {
            resultado += metodo.paraTexto();
        }
        resultado += '</extensao>';
        return resultado;
    }
}
exports.Extensao = Extensao;
//# sourceMappingURL=extensao.js.map