@designliquido/delegua 1.10.0 → 1.11.1

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 (252) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +2 -2
  2. package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
  3. package/analisador-semantico/analisador-semantico-base.js +14 -6
  4. package/analisador-semantico/analisador-semantico-base.js.map +1 -1
  5. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  6. package/analisador-semantico/analisador-semantico.js +56 -28
  7. package/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  9. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +41 -18
  10. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  11. package/analisador-semantico/funcao-hipotetica-interface.d.ts +1 -1
  12. package/analisador-semantico/gerenciador-escopos.d.ts +1 -1
  13. package/analisador-semantico/pilha-variaveis.d.ts.map +1 -1
  14. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  15. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  16. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  17. package/avaliador-sintatico/avaliador-sintatico.js +149 -42
  18. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  19. package/avaliador-sintatico/comum.d.ts.map +1 -1
  20. package/avaliador-sintatico/comum.js.map +1 -1
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts.map +1 -1
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js.map +1 -1
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts.map +1 -1
  24. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +1 -1
  25. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  26. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts.map +1 -1
  27. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +1 -1
  28. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  29. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  30. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +60 -50
  31. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  32. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.d.ts.map +1 -1
  33. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js +5 -5
  34. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js.map +1 -1
  35. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
  36. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +1 -1
  37. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
  38. package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts.map +1 -1
  39. package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js.map +1 -1
  40. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +18 -0
  41. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts.map +1 -1
  42. package/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -1
  43. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
  44. package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  45. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts.map +1 -1
  46. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js.map +1 -1
  47. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  48. package/bibliotecas/biblioteca-global.js +93 -31
  49. package/bibliotecas/biblioteca-global.js.map +1 -1
  50. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
  51. package/bibliotecas/dialetos/pitugues/biblioteca-global.js +12 -8
  52. package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
  53. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -1
  54. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -1
  55. package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts.map +1 -1
  56. package/bibliotecas/dialetos/pitugues/primitivas-numero.js.map +1 -1
  57. package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
  58. package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
  59. package/bibliotecas/dialetos/pitugues/primitivas-tupla.d.ts.map +1 -1
  60. package/bibliotecas/dialetos/pitugues/primitivas-tupla.js +3 -4
  61. package/bibliotecas/dialetos/pitugues/primitivas-tupla.js.map +1 -1
  62. package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts.map +1 -1
  63. package/bibliotecas/dialetos/pitugues/primitivas-vetor.js +9 -11
  64. package/bibliotecas/dialetos/pitugues/primitivas-vetor.js.map +1 -1
  65. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  66. package/bibliotecas/primitivas-dicionario.js +1 -1
  67. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  68. package/bibliotecas/primitivas-numero.d.ts.map +1 -1
  69. package/bibliotecas/primitivas-numero.js.map +1 -1
  70. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  71. package/bibliotecas/primitivas-texto.js +70 -1
  72. package/bibliotecas/primitivas-texto.js.map +1 -1
  73. package/bibliotecas/primitivas-tupla.d.ts.map +1 -1
  74. package/bibliotecas/primitivas-tupla.js +34 -14
  75. package/bibliotecas/primitivas-tupla.js.map +1 -1
  76. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  77. package/bibliotecas/primitivas-vetor.js +19 -1
  78. package/bibliotecas/primitivas-vetor.js.map +1 -1
  79. package/bin/package.json +1 -1
  80. package/construtos/ajuda-como-construto.d.ts +2 -2
  81. package/construtos/ajuda-como-construto.js +1 -1
  82. package/construtos/atribuir.d.ts.map +1 -1
  83. package/construtos/atribuir.js +5 -2
  84. package/construtos/atribuir.js.map +1 -1
  85. package/construtos/binario.d.ts.map +1 -1
  86. package/construtos/binario.js +1 -2
  87. package/construtos/binario.js.map +1 -1
  88. package/construtos/comentario-como-construto.d.ts.map +1 -1
  89. package/construtos/comentario-como-construto.js.map +1 -1
  90. package/construtos/decorador.d.ts.map +1 -1
  91. package/construtos/decorador.js +3 -1
  92. package/construtos/decorador.js.map +1 -1
  93. package/construtos/dicionario.d.ts.map +1 -1
  94. package/construtos/dicionario.js.map +1 -1
  95. package/construtos/tupla-n.d.ts +3 -3
  96. package/construtos/tupla-n.d.ts.map +1 -1
  97. package/construtos/tupla-n.js +4 -2
  98. package/construtos/tupla-n.js.map +1 -1
  99. package/declaracoes/ajuda.d.ts +3 -3
  100. package/declaracoes/classe.d.ts +5 -2
  101. package/declaracoes/classe.d.ts.map +1 -1
  102. package/declaracoes/classe.js +13 -4
  103. package/declaracoes/classe.js.map +1 -1
  104. package/declaracoes/interface.d.ts.map +1 -1
  105. package/declaracoes/interface.js.map +1 -1
  106. package/declaracoes/texto-documentacao.d.ts.map +1 -1
  107. package/declaracoes/texto-documentacao.js.map +1 -1
  108. package/estilizador/estilizador-delegua.d.ts.map +1 -1
  109. package/estilizador/estilizador-delegua.js +5 -1
  110. package/estilizador/estilizador-delegua.js.map +1 -1
  111. package/formatadores/formatador-delegua.d.ts.map +1 -1
  112. package/formatadores/formatador-delegua.js.map +1 -1
  113. package/formatadores/formatador-pitugues.d.ts.map +1 -1
  114. package/formatadores/formatador-pitugues.js +74 -29
  115. package/formatadores/formatador-pitugues.js.map +1 -1
  116. package/geracao-identificadores/index.js +2 -2
  117. package/geracao-identificadores/index.js.map +1 -1
  118. package/interfaces/componente-modulo-classe-interface.d.ts.map +1 -1
  119. package/interfaces/componente-modulo-funcao-interface.d.ts.map +1 -1
  120. package/interfaces/interpretador-com-depuracao-interface.d.ts.map +1 -1
  121. package/interfaces/modulo-interface.d.ts +2 -2
  122. package/interfaces/modulo-interface.d.ts.map +1 -1
  123. package/interfaces/visitante-comum-interface.d.ts.map +1 -1
  124. package/interpretador/comum.d.ts.map +1 -1
  125. package/interpretador/comum.js +65 -55
  126. package/interpretador/comum.js.map +1 -1
  127. package/interpretador/depuracao/avaliador-expressao-depuracao.d.ts.map +1 -1
  128. package/interpretador/depuracao/avaliador-expressao-depuracao.js.map +1 -1
  129. package/interpretador/depuracao/comum.d.ts.map +1 -1
  130. package/interpretador/depuracao/comum.js +8 -4
  131. package/interpretador/depuracao/comum.js.map +1 -1
  132. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  133. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +2 -3
  134. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  135. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
  136. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  137. package/interpretador/dialetos/pitugues/comum.d.ts +2 -2
  138. package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -1
  139. package/interpretador/dialetos/pitugues/comum.js +2 -3
  140. package/interpretador/dialetos/pitugues/comum.js.map +1 -1
  141. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts +2 -2
  142. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts.map +1 -1
  143. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js +1 -1
  144. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js.map +1 -1
  145. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +3 -3
  146. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
  147. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +3 -2
  148. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  149. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  150. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  151. package/interpretador/estruturas/classe-de-modulo.d.ts.map +1 -1
  152. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  153. package/interpretador/estruturas/delegua-funcao.js +3 -1
  154. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  155. package/interpretador/estruturas/descritor-tipo-classe.d.ts +14 -4
  156. package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
  157. package/interpretador/estruturas/descritor-tipo-classe.js +95 -35
  158. package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
  159. package/interpretador/estruturas/metodo-polimorfico.d.ts.map +1 -1
  160. package/interpretador/estruturas/metodo-polimorfico.js +13 -9
  161. package/interpretador/estruturas/metodo-polimorfico.js.map +1 -1
  162. package/interpretador/estruturas/metodo-primitiva.d.ts.map +1 -1
  163. package/interpretador/estruturas/metodo-primitiva.js.map +1 -1
  164. package/interpretador/estruturas/objeto-base.d.ts.map +1 -1
  165. package/interpretador/estruturas/objeto-base.js +8 -4
  166. package/interpretador/estruturas/objeto-base.js.map +1 -1
  167. package/interpretador/estruturas/objeto-delegua-classe.d.ts +1 -0
  168. package/interpretador/estruturas/objeto-delegua-classe.d.ts.map +1 -1
  169. package/interpretador/estruturas/objeto-delegua-classe.js +41 -23
  170. package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
  171. package/interpretador/interpretador-base.d.ts +4 -4
  172. package/interpretador/interpretador-base.d.ts.map +1 -1
  173. package/interpretador/interpretador-base.js +175 -62
  174. package/interpretador/interpretador-base.js.map +1 -1
  175. package/interpretador/interpretador.d.ts.map +1 -1
  176. package/interpretador/interpretador.js +14 -13
  177. package/interpretador/interpretador.js.map +1 -1
  178. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  179. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  180. package/lexador/dialetos/lexador-calango.d.ts.map +1 -1
  181. package/lexador/dialetos/lexador-calango.js.map +1 -1
  182. package/lexador/dialetos/lexador-egua-classico.d.ts.map +1 -1
  183. package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  184. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  185. package/lexador/dialetos/lexador-pitugues.js +3 -1
  186. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  187. package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
  188. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  189. package/lexador/dialetos/lexador-prisma.d.ts.map +1 -1
  190. package/lexador/dialetos/lexador-prisma.js +25 -3
  191. package/lexador/dialetos/lexador-prisma.js.map +1 -1
  192. package/lexador/dialetos/lexador-tenda.d.ts.map +1 -1
  193. package/lexador/dialetos/lexador-tenda.js.map +1 -1
  194. package/lexador/filtro-paradigma.d.ts.map +1 -1
  195. package/lexador/filtro-paradigma.js.map +1 -1
  196. package/lexador/lexador-base-linha-unica.d.ts.map +1 -1
  197. package/lexador/lexador-base-linha-unica.js.map +1 -1
  198. package/lexador/lexador-base.d.ts.map +1 -1
  199. package/lexador/lexador-base.js.map +1 -1
  200. package/lexador/lexador.d.ts.map +1 -1
  201. package/lexador/lexador.js.map +1 -1
  202. package/lexador/mapeamento-paradigmas.d.ts.map +1 -1
  203. package/lexador/mapeamento-paradigmas.js.map +1 -1
  204. package/lexador/palavras-reservadas.d.ts +1 -0
  205. package/lexador/palavras-reservadas.d.ts.map +1 -1
  206. package/lexador/palavras-reservadas.js +3 -2
  207. package/lexador/palavras-reservadas.js.map +1 -1
  208. package/lexador/simbolo.d.ts.map +1 -1
  209. package/lexador/simbolo.js.map +1 -1
  210. package/lexador/traducao/lexador-javascript.d.ts.map +1 -1
  211. package/package.json +1 -1
  212. package/tipos-de-simbolos/delegua.d.ts +1 -0
  213. package/tipos-de-simbolos/delegua.d.ts.map +1 -1
  214. package/tipos-de-simbolos/delegua.js +1 -0
  215. package/tipos-de-simbolos/delegua.js.map +1 -1
  216. package/tradutores/mermaid/aresta-fluxograma.d.ts +1 -1
  217. package/tradutores/mermaid/subgrafo-classe.d.ts +3 -3
  218. package/tradutores/mermaid/subgrafo-funcao.d.ts +2 -2
  219. package/tradutores/mermaid/subgrafo-funcao.d.ts.map +1 -1
  220. package/tradutores/mermaid/subgrafo-funcao.js.map +1 -1
  221. package/tradutores/mermaid/subgrafo-metodo.d.ts +2 -2
  222. package/tradutores/mermaid/vertice-fluxograma.d.ts +1 -1
  223. package/tradutores/tradutor-assembly-arm.d.ts.map +1 -1
  224. package/tradutores/tradutor-assembly-arm.js +164 -156
  225. package/tradutores/tradutor-assembly-arm.js.map +1 -1
  226. package/tradutores/tradutor-assembly-x64.d.ts.map +1 -1
  227. package/tradutores/tradutor-assembly-x64.js +136 -127
  228. package/tradutores/tradutor-assembly-x64.js.map +1 -1
  229. package/tradutores/tradutor-assemblyscript.d.ts.map +1 -1
  230. package/tradutores/tradutor-assemblyscript.js +10 -6
  231. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  232. package/tradutores/tradutor-calango.d.ts.map +1 -1
  233. package/tradutores/tradutor-calango.js.map +1 -1
  234. package/tradutores/tradutor-elixir.d.ts.map +1 -1
  235. package/tradutores/tradutor-elixir.js +9 -7
  236. package/tradutores/tradutor-elixir.js.map +1 -1
  237. package/tradutores/tradutor-javascript.d.ts.map +1 -1
  238. package/tradutores/tradutor-javascript.js +2 -1
  239. package/tradutores/tradutor-javascript.js.map +1 -1
  240. package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
  241. package/tradutores/tradutor-mermaidjs.js +4 -8
  242. package/tradutores/tradutor-mermaidjs.js.map +1 -1
  243. package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
  244. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  245. package/tradutores/tradutor-python.d.ts.map +1 -1
  246. package/tradutores/tradutor-python.js +1 -1
  247. package/tradutores/tradutor-python.js.map +1 -1
  248. package/tradutores/tradutor-reverso-javascript.d.ts.map +1 -1
  249. package/tradutores/tradutor-ruby.d.ts.map +1 -1
  250. package/tradutores/tradutor-ruby.js +1 -1
  251. package/tradutores/tradutor-ruby.js.map +1 -1
  252. package/umd/delegua.js +1353 -730
@@ -172,7 +172,7 @@ class InterpretadorBase {
172
172
  }
173
173
  // Se é array, resolve recursivamente todos os elementos
174
174
  if (Array.isArray(objeto)) {
175
- return objeto.map(elemento => this.resolverValorRecursivo(elemento));
175
+ return objeto.map((elemento) => this.resolverValorRecursivo(elemento));
176
176
  }
177
177
  // Se é objeto plano, resolve recursivamente todas as propriedades
178
178
  if (objeto && objeto.constructor && objeto.constructor === Object) {
@@ -215,8 +215,18 @@ class InterpretadorBase {
215
215
  async visitarExpressaoTupla(expressao) {
216
216
  // Lista de propriedades válidas para tuplas (ignorar propriedades de controle)
217
217
  const propriedadesValidas = [
218
- 'primeiro', 'segundo', 'terceiro', 'quarto', 'quinto',
219
- 'sexto', 'sétimo', 'setimo', 'oitavo', 'nono', 'décimo', 'decimo'
218
+ 'primeiro',
219
+ 'segundo',
220
+ 'terceiro',
221
+ 'quarto',
222
+ 'quinto',
223
+ 'sexto',
224
+ 'sétimo',
225
+ 'setimo',
226
+ 'oitavo',
227
+ 'nono',
228
+ 'décimo',
229
+ 'decimo',
220
230
  ];
221
231
  const valores = [];
222
232
  for (let propriedade of propriedadesValidas) {
@@ -233,7 +243,7 @@ class InterpretadorBase {
233
243
  const res = await this.avaliar(expressao.elementos[i]);
234
244
  elementos.push(this.resolverValor(res));
235
245
  }
236
- const elementosComoConstrutos = elementos.map(valor => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
246
+ const elementosComoConstrutos = elementos.map((valor) => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
237
247
  return new construtos_1.TuplaN(expressao.hashArquivo, expressao.linha, elementosComoConstrutos);
238
248
  }
239
249
  async visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
@@ -575,8 +585,12 @@ class InterpretadorBase {
575
585
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
576
586
  // Auto-promove para BigInt se qualquer operando for BigInt
577
587
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
578
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
579
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
588
+ const esq = typeof valorEsquerdo === 'bigint'
589
+ ? valorEsquerdo
590
+ : BigInt(Math.floor(Number(valorEsquerdo)));
591
+ const dir = typeof valorDireito === 'bigint'
592
+ ? valorDireito
593
+ : BigInt(Math.floor(Number(valorDireito)));
580
594
  return esq ** dir;
581
595
  }
582
596
  const resultadoExponenciacao = Math.pow(valorEsquerdo, valorDireito);
@@ -604,8 +618,12 @@ class InterpretadorBase {
604
618
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
605
619
  // Auto-promove para BigInt se qualquer operando for BigInt
606
620
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
607
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
608
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
621
+ const esq = typeof valorEsquerdo === 'bigint'
622
+ ? valorEsquerdo
623
+ : BigInt(Math.floor(Number(valorEsquerdo)));
624
+ const dir = typeof valorDireito === 'bigint'
625
+ ? valorDireito
626
+ : BigInt(Math.floor(Number(valorDireito)));
609
627
  return esq - dir;
610
628
  }
611
629
  return Number(valorEsquerdo) - Number(valorDireito);
@@ -617,8 +635,12 @@ class InterpretadorBase {
617
635
  }
618
636
  // Auto-promove para BigInt se qualquer operando for BigInt
619
637
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
620
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
621
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
638
+ const esq = typeof valorEsquerdo === 'bigint'
639
+ ? valorEsquerdo
640
+ : BigInt(Math.floor(Number(valorEsquerdo)));
641
+ const dir = typeof valorDireito === 'bigint'
642
+ ? valorDireito
643
+ : BigInt(Math.floor(Number(valorDireito)));
622
644
  return esq + dir;
623
645
  }
624
646
  if (this.tiposNumericos.includes(tipoEsquerdo) &&
@@ -648,8 +670,12 @@ class InterpretadorBase {
648
670
  }
649
671
  // Retorna BigInt se qualquer operando for BigInt
650
672
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
651
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
652
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
673
+ const esq = typeof valorEsquerdo === 'bigint'
674
+ ? valorEsquerdo
675
+ : BigInt(Math.floor(Number(valorEsquerdo)));
676
+ const dir = typeof valorDireito === 'bigint'
677
+ ? valorDireito
678
+ : BigInt(Math.floor(Number(valorDireito)));
653
679
  return esq / dir; // Trunca automaticamente
654
680
  }
655
681
  return Math.floor(Number(valorEsquerdo) / Number(valorDireito));
@@ -659,8 +685,12 @@ class InterpretadorBase {
659
685
  if ((typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') &&
660
686
  tipoEsquerdo !== delegua_2.default.TEXTO &&
661
687
  tipoDireito !== delegua_2.default.TEXTO) {
662
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
663
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
688
+ const esq = typeof valorEsquerdo === 'bigint'
689
+ ? valorEsquerdo
690
+ : BigInt(Math.floor(Number(valorEsquerdo)));
691
+ const dir = typeof valorDireito === 'bigint'
692
+ ? valorDireito
693
+ : BigInt(Math.floor(Number(valorDireito)));
664
694
  return esq * dir;
665
695
  }
666
696
  if (tipoEsquerdo === delegua_2.default.TEXTO ||
@@ -693,7 +723,8 @@ class InterpretadorBase {
693
723
  case delegua_1.default.MODULO:
694
724
  case delegua_1.default.MODULO_IGUAL:
695
725
  // Se o operando esquerdo é uma string, usar formatação de string
696
- if (tipoEsquerdo === delegua_2.default.TEXTO || typeof valorEsquerdo === 'string') {
726
+ if (tipoEsquerdo === delegua_2.default.TEXTO ||
727
+ typeof valorEsquerdo === 'string') {
697
728
  return this.formatarStringComOperadorPorcentagem(String(valorEsquerdo), direita, // Passar 'direita' ao invés de 'valorDireito' para preservar arrays de tuplas
698
729
  expressao.operador);
699
730
  }
@@ -707,8 +738,12 @@ class InterpretadorBase {
707
738
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
708
739
  // Auto-promove para BigInt se qualquer operando for BigInt
709
740
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
710
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
711
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
741
+ const esq = typeof valorEsquerdo === 'bigint'
742
+ ? valorEsquerdo
743
+ : BigInt(Math.floor(Number(valorEsquerdo)));
744
+ const dir = typeof valorDireito === 'bigint'
745
+ ? valorDireito
746
+ : BigInt(Math.floor(Number(valorDireito)));
712
747
  return esq & dir;
713
748
  }
714
749
  return Number(valorEsquerdo) & Number(valorDireito);
@@ -719,8 +754,12 @@ class InterpretadorBase {
719
754
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
720
755
  // Auto-promove para BigInt se qualquer operando for BigInt
721
756
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
722
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
723
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
757
+ const esq = typeof valorEsquerdo === 'bigint'
758
+ ? valorEsquerdo
759
+ : BigInt(Math.floor(Number(valorEsquerdo)));
760
+ const dir = typeof valorDireito === 'bigint'
761
+ ? valorDireito
762
+ : BigInt(Math.floor(Number(valorDireito)));
724
763
  return esq ^ dir;
725
764
  }
726
765
  return Number(valorEsquerdo) ^ Number(valorDireito);
@@ -731,8 +770,12 @@ class InterpretadorBase {
731
770
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
732
771
  // Auto-promove para BigInt se qualquer operando for BigInt
733
772
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
734
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
735
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
773
+ const esq = typeof valorEsquerdo === 'bigint'
774
+ ? valorEsquerdo
775
+ : BigInt(Math.floor(Number(valorEsquerdo)));
776
+ const dir = typeof valorDireito === 'bigint'
777
+ ? valorDireito
778
+ : BigInt(Math.floor(Number(valorDireito)));
736
779
  return esq | dir;
737
780
  }
738
781
  return Number(valorEsquerdo) | Number(valorDireito);
@@ -740,9 +783,15 @@ class InterpretadorBase {
740
783
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
741
784
  // Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
742
785
  const tamanhoDeslocamentoEsquerda = Number(valorDireito);
743
- if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint' || tamanhoDeslocamentoEsquerda >= 32) {
744
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
745
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
786
+ if (typeof valorEsquerdo === 'bigint' ||
787
+ typeof valorDireito === 'bigint' ||
788
+ tamanhoDeslocamentoEsquerda >= 32) {
789
+ const esq = typeof valorEsquerdo === 'bigint'
790
+ ? valorEsquerdo
791
+ : BigInt(Math.floor(Number(valorEsquerdo)));
792
+ const dir = typeof valorDireito === 'bigint'
793
+ ? valorDireito
794
+ : BigInt(Math.floor(Number(valorDireito)));
746
795
  return esq << dir;
747
796
  }
748
797
  return Number(valorEsquerdo) << Number(valorDireito);
@@ -750,9 +799,15 @@ class InterpretadorBase {
750
799
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
751
800
  // Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
752
801
  const tamanhoDeslocamentoDireita = Number(valorDireito);
753
- if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint' || tamanhoDeslocamentoDireita >= 32) {
754
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
755
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
802
+ if (typeof valorEsquerdo === 'bigint' ||
803
+ typeof valorDireito === 'bigint' ||
804
+ tamanhoDeslocamentoDireita >= 32) {
805
+ const esq = typeof valorEsquerdo === 'bigint'
806
+ ? valorEsquerdo
807
+ : BigInt(Math.floor(Number(valorEsquerdo)));
808
+ const dir = typeof valorDireito === 'bigint'
809
+ ? valorDireito
810
+ : BigInt(Math.floor(Number(valorDireito)));
756
811
  return esq >> dir;
757
812
  }
758
813
  return Number(valorEsquerdo) >> Number(valorDireito);
@@ -873,7 +928,8 @@ class InterpretadorBase {
873
928
  // Casos que passam aqui: chamadas a métodos de bibliotecas de Delégua.
874
929
  if (typeof entidadeChamada === primitivos_1.default.FUNCAO) {
875
930
  let objeto = null;
876
- if (expressao.entidadeChamada.objeto) { // TODO: Qual o tipo certo aqui?
931
+ if (expressao.entidadeChamada.objeto) {
932
+ // TODO: Qual o tipo certo aqui?
877
933
  objeto = await this.avaliar(expressao.entidadeChamada.objeto);
878
934
  }
879
935
  return entidadeChamada.apply(this.resolverValor(objeto), argumentos);
@@ -932,7 +988,8 @@ class InterpretadorBase {
932
988
  }
933
989
  logicaContemOuEm(esquerda, direita, expressao) {
934
990
  const valorDireitoResolvido = this.resolverValor(direita);
935
- if (Array.isArray(valorDireitoResolvido) || typeof valorDireitoResolvido === primitivos_1.default.TEXTO) {
991
+ if (Array.isArray(valorDireitoResolvido) ||
992
+ typeof valorDireitoResolvido === primitivos_1.default.TEXTO) {
936
993
  const avaliacao = valorDireitoResolvido.includes(esquerda);
937
994
  return expressao.negado ? !avaliacao : avaliacao;
938
995
  }
@@ -964,13 +1021,19 @@ class InterpretadorBase {
964
1021
  const valorDireito = this.resolverValor(direita);
965
1022
  if (typeof valorDireito === 'number' || typeof valorDireito === 'bigint') {
966
1023
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
967
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
968
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
969
- return expressao.operador.tipo === delegua_1.default.E ? (esq & dir) : (esq | dir);
1024
+ const esq = typeof valorEsquerdo === 'bigint'
1025
+ ? valorEsquerdo
1026
+ : BigInt(Math.floor(Number(valorEsquerdo)));
1027
+ const dir = typeof valorDireito === 'bigint'
1028
+ ? valorDireito
1029
+ : BigInt(Math.floor(Number(valorDireito)));
1030
+ return expressao.operador.tipo === delegua_1.default.E
1031
+ ? esq & dir
1032
+ : esq | dir;
970
1033
  }
971
1034
  return expressao.operador.tipo === delegua_1.default.E
972
- ? (Number(valorEsquerdo) & Number(valorDireito))
973
- : (Number(valorEsquerdo) | Number(valorDireito));
1035
+ ? Number(valorEsquerdo) & Number(valorDireito)
1036
+ : Number(valorEsquerdo) | Number(valorDireito);
974
1037
  }
975
1038
  // Demais casos sem diferença de tipos
976
1039
  if (expressao.operador.tipo === delegua_1.default.OU) {
@@ -1064,7 +1127,7 @@ class InterpretadorBase {
1064
1127
  const valorComoDupla = valorVetorResolvido[declaracao.posicaoAtual];
1065
1128
  const promises = await Promise.all([
1066
1129
  this.avaliar(declaracao.variavelIteracao.primeiro),
1067
- this.avaliar(declaracao.variavelIteracao.segundo)
1130
+ this.avaliar(declaracao.variavelIteracao.segundo),
1068
1131
  ]);
1069
1132
  // TODO: O que fazer quando não forem literais?
1070
1133
  this.pilhaEscoposExecucao.definirVariavel(String(promises[0].valor), valorComoDupla.primeiro);
@@ -1244,7 +1307,9 @@ class InterpretadorBase {
1244
1307
  let formatoTexto = '';
1245
1308
  for (const argumento of argumentos) {
1246
1309
  let resultadoAvaliacao = await this.avaliar(argumento);
1247
- if (resultadoAvaliacao && resultadoAvaliacao.hasOwnProperty && resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
1310
+ if (resultadoAvaliacao &&
1311
+ resultadoAvaliacao.hasOwnProperty &&
1312
+ resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
1248
1313
  resultadoAvaliacao = resultadoAvaliacao.valorRetornado;
1249
1314
  }
1250
1315
  let valor = this.resolverValor(resultadoAvaliacao);
@@ -1485,12 +1550,12 @@ class InterpretadorBase {
1485
1550
  }, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
1486
1551
  }
1487
1552
  /**
1488
- * Método base para acesso a intervalo.
1489
- * Por padrão lança erro, pois a maioria dos dialetos (como Delégua padrão)
1490
- * ainda não suporta isso nativamente, apenas Pituguês.
1491
- */
1553
+ * Método base para acesso a intervalo.
1554
+ * Por padrão lança erro, pois a maioria dos dialetos (como Delégua padrão)
1555
+ * ainda não suporta isso nativamente, apenas Pituguês.
1556
+ */
1492
1557
  visitarExpressaoAcessoIntervaloVariavel(expressao) {
1493
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, "Acesso por intervalo não implementado para este dialeto.", expressao.linha));
1558
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Acesso por intervalo não implementado para este dialeto.', expressao.linha));
1494
1559
  }
1495
1560
  async visitarExpressaoDefinirValor(expressao) {
1496
1561
  const variavelObjeto = await this.avaliar(expressao.objeto);
@@ -1523,18 +1588,30 @@ class InterpretadorBase {
1523
1588
  * @returns Sempre retorna nulo, por ser requerido pelo contrato de visita.
1524
1589
  */
1525
1590
  async visitarDeclaracaoClasse(declaracao) {
1526
- let superClasse = null;
1527
- if (declaracao.superClasse !== null && declaracao.superClasse !== undefined) {
1528
- const variavelSuperClasse = await this.avaliar(declaracao.superClasse);
1529
- superClasse = variavelSuperClasse.valor;
1591
+ // Resolver cada superclasse listada em `herda A, B, ...`
1592
+ const superClassesResolvidas = [];
1593
+ for (const superClasseVariavel of declaracao.superClasses) {
1594
+ const variavelSuperClasse = await this.avaliar(superClasseVariavel);
1595
+ const superClasse = variavelSuperClasse.valor;
1530
1596
  if (!(superClasse instanceof estruturas_1.DescritorTipoClasse)) {
1531
- throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.superClasse.nome, 'Superclasse precisa ser uma classe.', declaracao.linha);
1597
+ throw new excecoes_1.ErroEmTempoDeExecucao(superClasseVariavel.nome, 'Superclasse precisa ser uma classe.', declaracao.linha);
1532
1598
  }
1599
+ superClassesResolvidas.push(superClasse);
1600
+ }
1601
+ // Resolver cada misturável listado em `mescla X, Y, ...`
1602
+ const mesclaResolvidas = [];
1603
+ for (const mesclaVariavel of declaracao.mesclas) {
1604
+ const variavelMisturavel = await this.avaliar(mesclaVariavel);
1605
+ const misturável = variavelMisturavel.valor;
1606
+ if (!(misturável instanceof estruturas_1.DescritorTipoClasse)) {
1607
+ throw new excecoes_1.ErroEmTempoDeExecucao(mesclaVariavel.nome, 'Misturável precisa ser uma classe.', declaracao.linha);
1608
+ }
1609
+ mesclaResolvidas.push(misturável);
1533
1610
  }
1534
1611
  // TODO: Precisamos disso?
1535
1612
  this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, declaracao);
1536
- if (declaracao.superClasse !== null && declaracao.superClasse !== undefined) {
1537
- this.pilhaEscoposExecucao.definirVariavel('super', superClasse);
1613
+ if (superClassesResolvidas.length > 0) {
1614
+ this.pilhaEscoposExecucao.definirVariavel('super', superClassesResolvidas[0]);
1538
1615
  }
1539
1616
  const metodos = {};
1540
1617
  const metodosEstaticos = {};
@@ -1562,9 +1639,7 @@ class InterpretadorBase {
1562
1639
  const funcao = new estruturas_1.DeleguaFuncao(nomeMetodo, metodoAtual.funcao, undefined, eInicializador);
1563
1640
  funcao.documentacao = metodoAtual.documentacao;
1564
1641
  // Numa classe estática, todos os métodos (exceto construtor) são estáticos.
1565
- const ehEstatico = declaracao.classeEstatica
1566
- ? !eInicializador
1567
- : metodoAtual.estatico;
1642
+ const ehEstatico = declaracao.classeEstatica ? !eInicializador : metodoAtual.estatico;
1568
1643
  if (metodoAtual.eObtenedor) {
1569
1644
  if (ehEstatico) {
1570
1645
  obtenedoresEstaticos[nomeMetodo] = funcao;
@@ -1605,7 +1680,7 @@ class InterpretadorBase {
1605
1680
  acessoPropriedades[prop.nome.lexema] = prop.acesso;
1606
1681
  }
1607
1682
  }
1608
- const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClasse, metodos, declaracao.propriedades);
1683
+ const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClassesResolvidas, metodos, declaracao.propriedades);
1609
1684
  descritorTipoClasse.metodosEstaticos = metodosEstaticos;
1610
1685
  descritorTipoClasse.membrosEstaticos = membrosEstaticos;
1611
1686
  descritorTipoClasse.obtenedores = obtenedores;
@@ -1620,13 +1695,45 @@ class InterpretadorBase {
1620
1695
  // Toda classe sem superclasse explícita herda implicitamente de `Objeto`.
1621
1696
  // Isso só deve acontecer quando OBJETO_BASE já estiver inicializado e a classe
1622
1697
  // atual não for o próprio OBJETO_BASE, para evitar cadeias de herança recursivas.
1623
- if (!descritorTipoClasse.superClasse && estruturas_1.OBJETO_BASE && descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1624
- descritorTipoClasse.superClasse = estruturas_1.OBJETO_BASE;
1698
+ if (descritorTipoClasse.superClasses.length === 0 &&
1699
+ estruturas_1.OBJETO_BASE &&
1700
+ descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1701
+ descritorTipoClasse.superClasses = [estruturas_1.OBJETO_BASE];
1702
+ }
1703
+ // Calcular o OReM (linearização C3) após os pais estarem definidos.
1704
+ descritorTipoClasse.orem = estruturas_1.DescritorTipoClasse.computarOReM(descritorTipoClasse);
1705
+ // Mesclar métodos e propriedades dos misturávels (primeiro misturável ganha se não definido na classe).
1706
+ for (const misturável of mesclaResolvidas) {
1707
+ for (const [nome, funcao] of Object.entries(misturável.metodos)) {
1708
+ if (!descritorTipoClasse.metodos.hasOwnProperty(nome)) {
1709
+ descritorTipoClasse.metodos[nome] = funcao;
1710
+ }
1711
+ }
1712
+ for (const [nome, funcao] of Object.entries(misturável.obtenedores)) {
1713
+ if (!descritorTipoClasse.obtenedores.hasOwnProperty(nome)) {
1714
+ descritorTipoClasse.obtenedores[nome] = funcao;
1715
+ }
1716
+ }
1717
+ for (const [nome, funcao] of Object.entries(misturável.definidores)) {
1718
+ if (!descritorTipoClasse.definidores.hasOwnProperty(nome)) {
1719
+ descritorTipoClasse.definidores[nome] = funcao;
1720
+ }
1721
+ }
1722
+ for (const prop of misturável.propriedades) {
1723
+ const jaDeclarada = descritorTipoClasse.propriedades.some((p) => p.nome.lexema === prop.nome.lexema);
1724
+ if (!jaDeclarada) {
1725
+ descritorTipoClasse.propriedades.push(prop);
1726
+ }
1727
+ }
1625
1728
  }
1626
1729
  // Verifica se a subclasse concreta implementa todos os métodos abstratos
1627
- // da superclasse abstrata.
1628
- if (!declaracao.abstrata && superClasse && superClasse.abstrata) {
1629
- superClasse.verificarImplementacaoAbstrata(descritorTipoClasse);
1730
+ // da(s) superclasse(s) abstrata(s).
1731
+ if (!declaracao.abstrata) {
1732
+ for (const superClasse of superClassesResolvidas) {
1733
+ if (superClasse.abstrata) {
1734
+ superClasse.verificarImplementacaoAbstrata(descritorTipoClasse);
1735
+ }
1736
+ }
1630
1737
  }
1631
1738
  // TODO: Até então, a única exceção a isso é Égua Clássico.
1632
1739
  // Por enquanto, tudo bem deixar isso aqui.
@@ -1853,21 +1960,25 @@ class InterpretadorBase {
1853
1960
  let valoresArray;
1854
1961
  // Verificar se é uma TuplaN (verifica instanceof OU propriedade elementos/tipo para maior compatibilidade)
1855
1962
  if (valores instanceof construtos_1.TuplaN ||
1856
- (valores && valores.tipo === 'tupla' && valores.elementos && Array.isArray(valores.elementos))) {
1963
+ (valores &&
1964
+ valores.tipo === 'tupla' &&
1965
+ valores.elementos &&
1966
+ Array.isArray(valores.elementos))) {
1857
1967
  valoresArray = valores.elementos.map((elem) => {
1858
- if (elem instanceof construtos_1.Literal || (elem && typeof elem === 'object' && elem.hasOwnProperty('valor'))) {
1968
+ if (elem instanceof construtos_1.Literal ||
1969
+ (elem && typeof elem === 'object' && elem.hasOwnProperty('valor'))) {
1859
1970
  return this.resolverValor(elem.valor);
1860
1971
  }
1861
1972
  return this.resolverValor(elem);
1862
1973
  });
1863
1974
  }
1864
1975
  else if (Array.isArray(valores)) {
1865
- valoresArray = valores.map(v => this.resolverValor(v));
1976
+ valoresArray = valores.map((v) => this.resolverValor(v));
1866
1977
  }
1867
1978
  else {
1868
1979
  const valorResolvido = this.resolverValor(valores);
1869
1980
  if (Array.isArray(valorResolvido)) {
1870
- valoresArray = valorResolvido.map(v => this.resolverValor(v));
1981
+ valoresArray = valorResolvido.map((v) => this.resolverValor(v));
1871
1982
  }
1872
1983
  else {
1873
1984
  valoresArray = [valorResolvido];
@@ -1989,7 +2100,9 @@ class InterpretadorBase {
1989
2100
  return objeto.valor.paraTexto();
1990
2101
  if (objeto instanceof construtos_1.Literal)
1991
2102
  return this.paraTexto(objeto.valor);
1992
- if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao)
2103
+ if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
2104
+ objeto instanceof estruturas_1.DeleguaFuncao ||
2105
+ objeto instanceof estruturas_1.DescritorTipoClasse)
1993
2106
  return objeto.paraTexto();
1994
2107
  if (objeto instanceof quebras_1.RetornoQuebra) {
1995
2108
  if (typeof objeto.valor === 'boolean')