UNPKG

@designliquido/delegua

Version:

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

93 lines 4.25 kB
import { PropriedadeClasse } from '../../declaracoes'; import { InterpretadorInterface, SimboloInterface } from '../../interfaces'; import { Chamavel } from './chamavel'; import { DeleguaFuncao } from './delegua-funcao'; import { MetodoPolimorfico } from './metodo-polimorfico'; import { ObjetoDeleguaClasse } from './objeto-delegua-classe'; /** * Descritor de tipo de classe. Quando uma declaração de classe é visitada, o que * vai para a pilha de escopos de execução é esta estrutura. Quando uma nova instância * de classe é criada, a referência para a instância é implementada aqui. */ export declare class DescritorTipoClasse extends Chamavel { simboloOriginal: SimboloInterface | undefined; superClasses: DescritorTipoClasse[]; /** OReM (Ordem de Resolução de Métodos, ou _Method Resolution Order_) calculado via C3. * Inclui a própria classe como primeiro elemento. */ orem: DescritorTipoClasse[]; metodos: { [nome: string]: DeleguaFuncao | DeleguaFuncao[]; }; metodosEstaticos: { [nome: string]: DeleguaFuncao | DeleguaFuncao[]; }; membrosEstaticos: { [nome: string]: any; }; obtenedores: { [nome: string]: DeleguaFuncao; }; definidores: { [nome: string]: DeleguaFuncao; }; obtenedoresEstaticos: { [nome: string]: DeleguaFuncao; }; definidoresEstaticos: { [nome: string]: DeleguaFuncao; }; propriedades: PropriedadeClasse[]; dialetoRequerExpansaoPropriedadesEspacoMemoria: boolean; dialetoRequerDeclaracaoPropriedades: boolean; abstrata: boolean; estrangeira: boolean; classeEstatica: boolean; metodosAbstratos: string[]; acessoMetodos: { [nome: string]: 'privado' | 'protegido' | 'publico'; }; acessoPropriedades: { [nome: string]: 'privado' | 'protegido' | 'publico'; }; sombrearPropriedadesDeClasse: boolean; /** Obtenedor de compat: primeiro pai direto (usado por tradutores e partes do interpretador). */ get superClasse(): DescritorTipoClasse | null; /** Definidor de compat: atribui um único pai direto (usado pela atribuição implícita de OBJETO_BASE). */ set superClasse(v: DescritorTipoClasse | null); constructor(simboloOriginal?: SimboloInterface, superClasses?: DescritorTipoClasse | DescritorTipoClasse[], metodos?: { [nome: string]: DeleguaFuncao | DeleguaFuncao[]; }, propriedades?: PropriedadeClasse[]); private static mesclaC3; /** Calcula e armazena o OReM (linearização C3) para esta classe e retorna a lista resultante. */ static computarOReM(cls: DescritorTipoClasse): DescritorTipoClasse[]; /** * Verifica se todos os métodos abstratos da superclasse estão implementados * na subclasse fornecida. Lança erro em tempo de execução se algum faltar. */ verificarImplementacaoAbstrata(subclasse: DescritorTipoClasse): void; encontrarObtenedor(nome: string, estatico?: boolean): DeleguaFuncao | undefined; encontrarDefinidor(nome: string, estatico?: boolean): DeleguaFuncao | undefined; obterEstatico(nome: string, visitante?: InterpretadorInterface): Promise<any>; definirEstatico(nome: string, valor: any, visitante?: InterpretadorInterface): Promise<void>; /** * Mescla sobrecargas da classe atual com as de ancestrais (respeitando MRO). * Sobrecargas da subclasse com mesma assinatura substituem as do ancestral. */ private mesclarComSuperclasse; private obterSobrecargasDaSuperclasse; encontrarMetodo(nome: string): DeleguaFuncao | MetodoPolimorfico | undefined; encontrarPropriedade(nome: string): PropriedadeClasse | undefined; /** * Método utilizado por Delégua para representar esta classe quando impressa. * @returns {string} A representação da classe como texto. */ paraTexto(): string; /** * Método utilizado pelo VSCode para inspecionar esta classe em depuração. * @returns {string} A representação da classe como texto. */ toString(): string; aridade(): number; chamar(visitante: InterpretadorInterface, argumentos: any[]): Promise<ObjetoDeleguaClasse>; } //# sourceMappingURL=descritor-tipo-classe.d.ts.map