"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Var = void 0;
const declaracao_1 = require("./declaracao");
/**
 * Uma declaração de variável.
 */
class Var extends declaracao_1.Declaracao {
    constructor(simbolo, inicializador, tipo = 'qualquer', tipoExplicito = false, decoradores = []) {
        super(Number(simbolo.linha), simbolo.hashArquivo, decoradores);
        this.escopo = 'local';
        this.simbolo = simbolo;
        this.inicializador = inicializador;
        if (tipo !== 'qualquer') {
            this.tipo = tipo;
        }
        else {
            this.tipo = (inicializador === null || inicializador === void 0 ? void 0 : inicializador.tipo) || tipo;
        }
        this.tipoExplicito = tipoExplicito;
        this.referencia = false;
        this.desestruturacao = false;
    }
    async aceitar(visitante) {
        return await visitante.visitarDeclaracaoVar(this);
    }
    paraTexto() {
        return `<var nome=${this.simbolo.lexema} valor=${this.inicializador ? this.inicializador.paraTexto() : 'Nada'} />`;
    }
}
exports.Var = Var;
//# sourceMappingURL=var.js.map