@designliquido/delegua 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
  2. package/analisador-semantico/analisador-semantico-base.js +6 -0
  3. package/analisador-semantico/analisador-semantico-base.js.map +1 -1
  4. package/analisador-semantico/analisador-semantico.d.ts +11 -3
  5. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  6. package/analisador-semantico/analisador-semantico.js +109 -8
  7. package/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/avaliador-sintatico/avaliador-sintatico.d.ts +8 -1
  9. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  10. package/avaliador-sintatico/avaliador-sintatico.js +274 -115
  11. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +1 -1
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js +1 -1
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js.map +1 -1
  18. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  19. package/bibliotecas/primitivas-texto.js +69 -0
  20. package/bibliotecas/primitivas-texto.js.map +1 -1
  21. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  22. package/bibliotecas/primitivas-vetor.js +18 -0
  23. package/bibliotecas/primitivas-vetor.js.map +1 -1
  24. package/bin/package.json +2 -2
  25. package/construtos/isto.d.ts +1 -0
  26. package/construtos/isto.d.ts.map +1 -1
  27. package/construtos/isto.js +1 -0
  28. package/construtos/isto.js.map +1 -1
  29. package/declaracoes/classe.d.ts +5 -2
  30. package/declaracoes/classe.d.ts.map +1 -1
  31. package/declaracoes/classe.js +13 -4
  32. package/declaracoes/classe.js.map +1 -1
  33. package/declaracoes/extensao.d.ts +13 -0
  34. package/declaracoes/extensao.d.ts.map +1 -0
  35. package/declaracoes/extensao.js +26 -0
  36. package/declaracoes/extensao.js.map +1 -0
  37. package/declaracoes/index.d.ts +1 -0
  38. package/declaracoes/index.d.ts.map +1 -1
  39. package/declaracoes/index.js +1 -0
  40. package/declaracoes/index.js.map +1 -1
  41. package/interfaces/visitante-delegua-interface.d.ts +2 -1
  42. package/interfaces/visitante-delegua-interface.d.ts.map +1 -1
  43. package/interpretador/comum.d.ts.map +1 -1
  44. package/interpretador/comum.js +10 -0
  45. package/interpretador/comum.js.map +1 -1
  46. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  47. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +1 -0
  48. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  49. package/interpretador/estruturas/delegua-funcao.d.ts +3 -2
  50. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  51. package/interpretador/estruturas/delegua-funcao.js +26 -2
  52. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  53. package/interpretador/estruturas/descritor-tipo-classe.d.ts +14 -4
  54. package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
  55. package/interpretador/estruturas/descritor-tipo-classe.js +89 -29
  56. package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
  57. package/interpretador/estruturas/objeto-base.d.ts.map +1 -1
  58. package/interpretador/estruturas/objeto-base.js +8 -4
  59. package/interpretador/estruturas/objeto-base.js.map +1 -1
  60. package/interpretador/estruturas/objeto-delegua-classe.d.ts +1 -0
  61. package/interpretador/estruturas/objeto-delegua-classe.d.ts.map +1 -1
  62. package/interpretador/estruturas/objeto-delegua-classe.js +35 -21
  63. package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
  64. package/interpretador/interpretador-base.d.ts +13 -1
  65. package/interpretador/interpretador-base.d.ts.map +1 -1
  66. package/interpretador/interpretador-base.js +146 -29
  67. package/interpretador/interpretador-base.js.map +1 -1
  68. package/interpretador/interpretador.d.ts.map +1 -1
  69. package/interpretador/interpretador.js +77 -15
  70. package/interpretador/interpretador.js.map +1 -1
  71. package/lexador/palavras-reservadas.d.ts +3 -0
  72. package/lexador/palavras-reservadas.d.ts.map +1 -1
  73. package/lexador/palavras-reservadas.js +3 -0
  74. package/lexador/palavras-reservadas.js.map +1 -1
  75. package/package.json +2 -2
  76. package/tipos-de-simbolos/delegua.d.ts +2 -0
  77. package/tipos-de-simbolos/delegua.d.ts.map +1 -1
  78. package/tipos-de-simbolos/delegua.js +2 -0
  79. package/tipos-de-simbolos/delegua.js.map +1 -1
  80. package/umd/delegua.js +1296 -609
@@ -8,55 +8,69 @@ const excecoes_1 = require("../../excecoes");
8
8
  * Métodos são extraídos do descritor da classe, uma `DeleguaClasse`.
9
9
  */
10
10
  class ObjetoDeleguaClasse {
11
+ valorPadraoParaTipo(tipo) {
12
+ switch (tipo) {
13
+ case 'numero': return 0;
14
+ case 'texto': return '';
15
+ case 'logico': return false;
16
+ default: return undefined;
17
+ }
18
+ }
11
19
  constructor(classe) {
12
20
  this.classe = classe;
13
21
  this.propriedades = {};
14
- if (this.classe.superClasse) {
15
- for (let propriedade of this.classe.superClasse.propriedades) {
22
+ // Inicializar propriedades herdadas do OReM (do mais genérico ao mais específico)
23
+ // para que ancestrais mais próximos sobrescrevam os mais distantes.
24
+ const ancestrais = classe.orem.slice(1).reverse();
25
+ for (const ancestral of ancestrais) {
26
+ for (const propriedade of ancestral.propriedades) {
16
27
  if (propriedade.estatico)
17
28
  continue;
18
29
  if (propriedade.autoObter || propriedade.autoDefinir) {
19
- this.propriedades['_' + propriedade.nome.lexema] = undefined;
30
+ this.propriedades['_' + propriedade.nome.lexema] = this.valorPadraoParaTipo(propriedade.tipo);
20
31
  }
21
32
  else {
22
- this.propriedades[propriedade.nome.lexema] = undefined;
33
+ this.propriedades[propriedade.nome.lexema] = this.valorPadraoParaTipo(propriedade.tipo);
23
34
  }
24
35
  }
25
36
  }
26
- for (let propriedade of classe.propriedades) {
37
+ // Propriedades da própria classe (têm prioridade máxima no valor padrão)
38
+ for (const propriedade of classe.propriedades) {
27
39
  if (propriedade.estatico)
28
40
  continue;
29
41
  if (propriedade.autoObter || propriedade.autoDefinir) {
30
- this.propriedades['_' + propriedade.nome.lexema] = undefined;
42
+ this.propriedades['_' + propriedade.nome.lexema] = this.valorPadraoParaTipo(propriedade.tipo);
31
43
  }
32
44
  else {
33
- this.propriedades[propriedade.nome.lexema] = undefined;
45
+ this.propriedades[propriedade.nome.lexema] = this.valorPadraoParaTipo(propriedade.tipo);
34
46
  }
35
47
  }
36
48
  }
37
49
  verificarAcessoLeitura(nome, simbolo, visitante) {
38
- var _a, _b, _c, _d, _e;
39
- const acesso = (_b = (_a = this.classe.acessoPropriedades) === null || _a === void 0 ? void 0 : _a[nome]) !== null && _b !== void 0 ? _b : (_c = this.classe.acessoMetodos) === null || _c === void 0 ? void 0 : _c[nome];
50
+ var _a, _b, _c, _d, _e, _f, _g;
51
+ // Percorre o OReM para encontrar a classe que declarou o membro com um modificador de acesso.
52
+ let declaradorClasse = undefined;
53
+ let acesso = undefined;
54
+ for (const cls of this.classe.orem) {
55
+ const acessoCls = (_b = (_a = cls.acessoPropriedades) === null || _a === void 0 ? void 0 : _a[nome]) !== null && _b !== void 0 ? _b : (_c = cls.acessoMetodos) === null || _c === void 0 ? void 0 : _c[nome];
56
+ if (acessoCls) {
57
+ acesso = acessoCls;
58
+ declaradorClasse = cls;
59
+ break;
60
+ }
61
+ }
40
62
  if (!acesso || acesso === 'publico')
41
63
  return;
42
64
  const classeAtual = visitante === null || visitante === void 0 ? void 0 : visitante.classeAtualEmExecucao;
43
65
  if (acesso === 'privado') {
44
- if (classeAtual !== this.classe) {
45
- throw new excecoes_1.ErroEmTempoDeExecucao(simbolo, `Membro '${nome}' é privado e não pode ser acessado fora da classe '${(_d = this.classe.simboloOriginal) === null || _d === void 0 ? void 0 : _d.lexema}'.`);
66
+ if (classeAtual !== declaradorClasse) {
67
+ throw new excecoes_1.ErroEmTempoDeExecucao(simbolo, `Membro '${nome}' é privado e não pode ser acessado fora da classe '${(_d = declaradorClasse.simboloOriginal) === null || _d === void 0 ? void 0 : _d.lexema}'.`);
46
68
  }
47
69
  }
48
70
  else if (acesso === 'protegido') {
49
- let cls = classeAtual;
50
- let eAcessivel = false;
51
- while (cls) {
52
- if (cls === this.classe) {
53
- eAcessivel = true;
54
- break;
55
- }
56
- cls = cls.superClasse;
57
- }
71
+ const eAcessivel = (_f = (_e = classeAtual === null || classeAtual === void 0 ? void 0 : classeAtual.orem) === null || _e === void 0 ? void 0 : _e.includes(declaradorClasse)) !== null && _f !== void 0 ? _f : false;
58
72
  if (!eAcessivel) {
59
- throw new excecoes_1.ErroEmTempoDeExecucao(simbolo, `Membro '${nome}' é protegido e não pode ser acessado fora da hierarquia da classe '${(_e = this.classe.simboloOriginal) === null || _e === void 0 ? void 0 : _e.lexema}'.`);
73
+ throw new excecoes_1.ErroEmTempoDeExecucao(simbolo, `Membro '${nome}' é protegido e não pode ser acessado fora da hierarquia da classe '${(_g = declaradorClasse.simboloOriginal) === null || _g === void 0 ? void 0 : _g.lexema}'.`);
60
74
  }
61
75
  }
62
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"objeto-delegua-classe.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-delegua-classe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"objeto-delegua-classe.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-delegua-classe.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Bloco, CabecalhoPrograma, Classe, Comentario, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Falhar, Fazer, FuncaoDeclaracao, Importar, InicioAlgoritmo, InterfaceDeclaracao, Para, ParaCada, Retorna, Se, TendoComo, Tente, TextoDocumentacao, Var, VarMultiplo } from '../declaracoes';
1
+ import { Bloco, CabecalhoPrograma, Classe, Comentario, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Extensao, Falhar, Fazer, FuncaoDeclaracao, Importar, InicioAlgoritmo, InterfaceDeclaracao, Para, ParaCada, Retorna, Se, TendoComo, Tente, TextoDocumentacao, Var, VarMultiplo } from '../declaracoes';
2
2
  import { DescritorTipoClasse, DeleguaFuncao, DeleguaModulo } from './estruturas';
3
3
  import { AcessoIndiceVariavel, AcessoIntervaloVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Chamada, ComentarioComoConstruto, Construto, DefinirValor, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, Leia, Literal, Logico, ReferenciaFuncao, Separador, Super, TipoDe, Tupla, TuplaN, Unario, Variavel, Vetor, Isto, Binario } from '../construtos';
4
4
  import { ErroInterpretadorInterface } from '../interfaces/erros/erro-interpretador-interface';
@@ -37,6 +37,8 @@ export declare class InterpretadorBase implements InterpretadorInterface {
37
37
  interfaceEntradaSaida: any;
38
38
  emDeclaracaoTente: boolean;
39
39
  pilhaEscoposExecucao: PilhaEscoposExecucaoInterface;
40
+ extensoesGlobais: Map<string, Map<string, DeleguaFuncao>>;
41
+ extensoesModulo: Map<number, Map<string, Map<string, DeleguaFuncao>>>;
40
42
  microLexador: MicroLexador;
41
43
  microAvaliadorSintatico: MicroAvaliadorSintaticoBase;
42
44
  regexInterpolacao: RegExp;
@@ -271,6 +273,16 @@ export declare class InterpretadorBase implements InterpretadorInterface {
271
273
  * o nome para possíveis verificações futuras (ex: `eInstanciaDe`).
272
274
  */
273
275
  visitarDeclaracaoInterface(_declaracao: InterfaceDeclaracao): Promise<void>;
276
+ /**
277
+ * Procura um método de extensão nos registros de módulo e global,
278
+ * percorrendo os tipos na ordem indicada (específico antes de base).
279
+ */
280
+ encontrarMetodoExtensao(tiposParaVerificar: string[], nomeMetodo: string, hashArquivo: number): DeleguaFuncao | undefined;
281
+ /**
282
+ * Registra os métodos de uma declaração de extensão nos registros
283
+ * de extensão do interpretador.
284
+ */
285
+ visitarDeclaracaoExtensao(declaracao: Extensao): Promise<void>;
274
286
  /**
275
287
  * Executa um acesso a método, normalmente de um objeto de classe.
276
288
  * @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso.
@@ -1 +1 @@
1
- {"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,10 @@ class InterpretadorBase {
38
38
  this.interfaceDeEntrada = null; // Originalmente é `readline.Interface`
39
39
  this.interfaceEntradaSaida = null;
40
40
  this.emDeclaracaoTente = false;
41
+ // typeName → methodName → DeleguaFuncao
42
+ this.extensoesGlobais = new Map();
43
+ // hashArquivo → typeName → methodName → DeleguaFuncao
44
+ this.extensoesModulo = new Map();
41
45
  this.microLexador = new lexador_1.MicroLexador();
42
46
  this.microAvaliadorSintatico = new avaliador_sintatico_1.MicroAvaliadorSintatico();
43
47
  this.regexInterpolacao = /\${(.*?)}/g;
@@ -327,22 +331,43 @@ class InterpretadorBase {
327
331
  */
328
332
  async resolverInterpolacoes(textoOriginal, linha) {
329
333
  const variaveis = textoOriginal.match(this.regexInterpolacao);
330
- let resultadosAvaliacaoSintatica = variaveis.map((s) => {
334
+ return await Promise.all(variaveis.map(async (s) => {
335
+ var _a, _b, _c, _d;
331
336
  const expressaoInterpolacao = s.replace(/[\$\{\}]*/gm, '');
332
- let microLexador = this.microLexador.mapear(expressaoInterpolacao);
333
- const resultadoMicroAvaliadorSintatico = this.microAvaliadorSintatico.analisar(microLexador, linha);
334
- return {
335
- expressaoInterpolacao,
336
- resultadoMicroAvaliadorSintatico,
337
- };
338
- });
339
- // TODO: Verificar erros do `resultadosAvaliacaoSintatica`.
340
- const resolucoesPromises = await Promise.all(resultadosAvaliacaoSintatica
341
- .flatMap((r) => r.resultadoMicroAvaliadorSintatico.declaracoes)
342
- .map((d) => this.avaliar(d)));
343
- return resolucoesPromises.map((item, indice) => ({
344
- expressaoInterpolacao: resultadosAvaliacaoSintatica[indice].expressaoInterpolacao,
345
- valor: item,
337
+ const microLexador = this.microLexador.mapear(expressaoInterpolacao);
338
+ let declaracoes = [];
339
+ try {
340
+ const resultadoMicroAvaliadorSintatico = this.microAvaliadorSintatico.analisar(microLexador, linha);
341
+ for (const erro of resultadoMicroAvaliadorSintatico.erros) {
342
+ this.erros.push({
343
+ erroInterno: erro,
344
+ linha: (_a = erro.linha) !== null && _a !== void 0 ? _a : linha,
345
+ hashArquivo: (_b = erro.hashArquivo) !== null && _b !== void 0 ? _b : -1,
346
+ });
347
+ }
348
+ declaracoes = resultadoMicroAvaliadorSintatico.declaracoes;
349
+ }
350
+ catch (erroAvaliador) {
351
+ this.erros.push({
352
+ erroInterno: erroAvaliador,
353
+ linha: (_c = erroAvaliador.linha) !== null && _c !== void 0 ? _c : linha,
354
+ hashArquivo: (_d = erroAvaliador.hashArquivo) !== null && _d !== void 0 ? _d : -1,
355
+ });
356
+ }
357
+ let valor = declaracoes.length > 0 ? await this.avaliar(declaracoes[0]) : '';
358
+ const instancia = valor instanceof estruturas_1.ObjetoDeleguaClasse
359
+ ? valor
360
+ : (valor === null || valor === void 0 ? void 0 : valor.valor) instanceof estruturas_1.ObjetoDeleguaClasse
361
+ ? valor.valor
362
+ : null;
363
+ if (instancia) {
364
+ const metodoParaTexto = instancia.classe.encontrarMetodo('paraTexto');
365
+ if (metodoParaTexto) {
366
+ const funcaoBound = metodoParaTexto.funcaoPorMetodoDeClasse(instancia);
367
+ valor = await funcaoBound.chamar(this, []);
368
+ }
369
+ }
370
+ return { expressaoInterpolacao, valor };
346
371
  }));
347
372
  }
348
373
  async visitarExpressaoLiteral(expressao) {
@@ -1498,18 +1523,30 @@ class InterpretadorBase {
1498
1523
  * @returns Sempre retorna nulo, por ser requerido pelo contrato de visita.
1499
1524
  */
1500
1525
  async visitarDeclaracaoClasse(declaracao) {
1501
- let superClasse = null;
1502
- if (declaracao.superClasse !== null && declaracao.superClasse !== undefined) {
1503
- const variavelSuperClasse = await this.avaliar(declaracao.superClasse);
1504
- superClasse = variavelSuperClasse.valor;
1526
+ // Resolver cada superclasse listada em `herda A, B, ...`
1527
+ const superClassesResolvidas = [];
1528
+ for (const superClasseVariavel of declaracao.superClasses) {
1529
+ const variavelSuperClasse = await this.avaliar(superClasseVariavel);
1530
+ const superClasse = variavelSuperClasse.valor;
1505
1531
  if (!(superClasse instanceof estruturas_1.DescritorTipoClasse)) {
1506
- throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.superClasse.nome, 'Superclasse precisa ser uma classe.', declaracao.linha);
1532
+ throw new excecoes_1.ErroEmTempoDeExecucao(superClasseVariavel.nome, 'Superclasse precisa ser uma classe.', declaracao.linha);
1507
1533
  }
1534
+ superClassesResolvidas.push(superClasse);
1535
+ }
1536
+ // Resolver cada misturável listado em `mescla X, Y, ...`
1537
+ const mesclaResolvidas = [];
1538
+ for (const mesclaVariavel of declaracao.mesclas) {
1539
+ const variavelMisturavel = await this.avaliar(mesclaVariavel);
1540
+ const misturável = variavelMisturavel.valor;
1541
+ if (!(misturável instanceof estruturas_1.DescritorTipoClasse)) {
1542
+ throw new excecoes_1.ErroEmTempoDeExecucao(mesclaVariavel.nome, 'Misturável precisa ser uma classe.', declaracao.linha);
1543
+ }
1544
+ mesclaResolvidas.push(misturável);
1508
1545
  }
1509
1546
  // TODO: Precisamos disso?
1510
1547
  this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, declaracao);
1511
- if (declaracao.superClasse !== null && declaracao.superClasse !== undefined) {
1512
- this.pilhaEscoposExecucao.definirVariavel('super', superClasse);
1548
+ if (superClassesResolvidas.length > 0) {
1549
+ this.pilhaEscoposExecucao.definirVariavel('super', superClassesResolvidas[0]);
1513
1550
  }
1514
1551
  const metodos = {};
1515
1552
  const metodosEstaticos = {};
@@ -1580,7 +1617,7 @@ class InterpretadorBase {
1580
1617
  acessoPropriedades[prop.nome.lexema] = prop.acesso;
1581
1618
  }
1582
1619
  }
1583
- const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClasse, metodos, declaracao.propriedades);
1620
+ const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClassesResolvidas, metodos, declaracao.propriedades);
1584
1621
  descritorTipoClasse.metodosEstaticos = metodosEstaticos;
1585
1622
  descritorTipoClasse.membrosEstaticos = membrosEstaticos;
1586
1623
  descritorTipoClasse.obtenedores = obtenedores;
@@ -1595,13 +1632,43 @@ class InterpretadorBase {
1595
1632
  // Toda classe sem superclasse explícita herda implicitamente de `Objeto`.
1596
1633
  // Isso só deve acontecer quando OBJETO_BASE já estiver inicializado e a classe
1597
1634
  // atual não for o próprio OBJETO_BASE, para evitar cadeias de herança recursivas.
1598
- if (!descritorTipoClasse.superClasse && estruturas_1.OBJETO_BASE && descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1599
- descritorTipoClasse.superClasse = estruturas_1.OBJETO_BASE;
1635
+ if (descritorTipoClasse.superClasses.length === 0 && estruturas_1.OBJETO_BASE && descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1636
+ descritorTipoClasse.superClasses = [estruturas_1.OBJETO_BASE];
1637
+ }
1638
+ // Calcular o OReM (linearização C3) após os pais estarem definidos.
1639
+ descritorTipoClasse.orem = estruturas_1.DescritorTipoClasse.computarOReM(descritorTipoClasse);
1640
+ // Mesclar métodos e propriedades dos misturávels (primeiro misturável ganha se não definido na classe).
1641
+ for (const misturável of mesclaResolvidas) {
1642
+ for (const [nome, funcao] of Object.entries(misturável.metodos)) {
1643
+ if (!descritorTipoClasse.metodos.hasOwnProperty(nome)) {
1644
+ descritorTipoClasse.metodos[nome] = funcao;
1645
+ }
1646
+ }
1647
+ for (const [nome, funcao] of Object.entries(misturável.obtenedores)) {
1648
+ if (!descritorTipoClasse.obtenedores.hasOwnProperty(nome)) {
1649
+ descritorTipoClasse.obtenedores[nome] = funcao;
1650
+ }
1651
+ }
1652
+ for (const [nome, funcao] of Object.entries(misturável.definidores)) {
1653
+ if (!descritorTipoClasse.definidores.hasOwnProperty(nome)) {
1654
+ descritorTipoClasse.definidores[nome] = funcao;
1655
+ }
1656
+ }
1657
+ for (const prop of misturável.propriedades) {
1658
+ const jaDeclarada = descritorTipoClasse.propriedades.some((p) => p.nome.lexema === prop.nome.lexema);
1659
+ if (!jaDeclarada) {
1660
+ descritorTipoClasse.propriedades.push(prop);
1661
+ }
1662
+ }
1600
1663
  }
1601
1664
  // Verifica se a subclasse concreta implementa todos os métodos abstratos
1602
- // da superclasse abstrata.
1603
- if (!declaracao.abstrata && superClasse && superClasse.abstrata) {
1604
- superClasse.verificarImplementacaoAbstrata(descritorTipoClasse);
1665
+ // da(s) superclasse(s) abstrata(s).
1666
+ if (!declaracao.abstrata) {
1667
+ for (const superClasse of superClassesResolvidas) {
1668
+ if (superClasse.abstrata) {
1669
+ superClasse.verificarImplementacaoAbstrata(descritorTipoClasse);
1670
+ }
1671
+ }
1605
1672
  }
1606
1673
  // TODO: Até então, a única exceção a isso é Égua Clássico.
1607
1674
  // Por enquanto, tudo bem deixar isso aqui.
@@ -1619,6 +1686,56 @@ class InterpretadorBase {
1619
1686
  // São contratos verificados em tempo de análise sintática.
1620
1687
  return Promise.resolve();
1621
1688
  }
1689
+ /**
1690
+ * Procura um método de extensão nos registros de módulo e global,
1691
+ * percorrendo os tipos na ordem indicada (específico antes de base).
1692
+ */
1693
+ encontrarMetodoExtensao(tiposParaVerificar, nomeMetodo, hashArquivo) {
1694
+ var _a, _b;
1695
+ // Extensões module-scoped têm prioridade sobre as globais.
1696
+ const extensoesDoModulo = this.extensoesModulo.get(hashArquivo);
1697
+ if (extensoesDoModulo) {
1698
+ for (const tipo of tiposParaVerificar) {
1699
+ const metodo = (_a = extensoesDoModulo.get(tipo)) === null || _a === void 0 ? void 0 : _a.get(nomeMetodo);
1700
+ if (metodo)
1701
+ return metodo;
1702
+ }
1703
+ }
1704
+ for (const tipo of tiposParaVerificar) {
1705
+ const metodo = (_b = this.extensoesGlobais.get(tipo)) === null || _b === void 0 ? void 0 : _b.get(nomeMetodo);
1706
+ if (metodo)
1707
+ return metodo;
1708
+ }
1709
+ return undefined;
1710
+ }
1711
+ /**
1712
+ * Registra os métodos de uma declaração de extensão nos registros
1713
+ * de extensão do interpretador.
1714
+ */
1715
+ async visitarDeclaracaoExtensao(declaracao) {
1716
+ const tipoNome = declaracao.simboloTipo.lexema;
1717
+ for (const metodoDeclarado of declaracao.metodos) {
1718
+ const nomeMetodo = metodoDeclarado.simbolo.lexema;
1719
+ const funcao = new estruturas_1.DeleguaFuncao(nomeMetodo, metodoDeclarado.funcao);
1720
+ if (declaracao.ehGlobal) {
1721
+ if (!this.extensoesGlobais.has(tipoNome)) {
1722
+ this.extensoesGlobais.set(tipoNome, new Map());
1723
+ }
1724
+ this.extensoesGlobais.get(tipoNome).set(nomeMetodo, funcao);
1725
+ }
1726
+ else {
1727
+ const hash = declaracao.hashArquivo;
1728
+ if (!this.extensoesModulo.has(hash)) {
1729
+ this.extensoesModulo.set(hash, new Map());
1730
+ }
1731
+ const mapa = this.extensoesModulo.get(hash);
1732
+ if (!mapa.has(tipoNome)) {
1733
+ mapa.set(tipoNome, new Map());
1734
+ }
1735
+ mapa.get(tipoNome).set(nomeMetodo, funcao);
1736
+ }
1737
+ }
1738
+ }
1622
1739
  /**
1623
1740
  * Executa um acesso a método, normalmente de um objeto de classe.
1624
1741
  * @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso.
@@ -1914,7 +2031,7 @@ class InterpretadorBase {
1914
2031
  return objeto.valor.paraTexto();
1915
2032
  if (objeto instanceof construtos_1.Literal)
1916
2033
  return this.paraTexto(objeto.valor);
1917
- if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao)
2034
+ if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao || objeto instanceof estruturas_1.DescritorTipoClasse)
1918
2035
  return objeto.paraTexto();
1919
2036
  if (objeto instanceof quebras_1.RetornoQuebra) {
1920
2037
  if (typeof objeto.valor === 'boolean')