@harmoniclabs/pebble 0.1.0-dev5 → 0.1.0-dev6

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 (307) hide show
  1. package/dist/IR/IRHash.d.ts +3 -3
  2. package/dist/IR/IRHash.js +47 -52
  3. package/dist/IR/IRNodes/IRApp.d.ts +12 -8
  4. package/dist/IR/IRNodes/IRApp.js +34 -20
  5. package/dist/IR/IRNodes/IRCase.d.ts +11 -7
  6. package/dist/IR/IRNodes/IRCase.js +33 -32
  7. package/dist/IR/IRNodes/IRConst.d.ts +7 -5
  8. package/dist/IR/IRNodes/IRConst.js +23 -13
  9. package/dist/IR/IRNodes/IRConstr.d.ts +11 -7
  10. package/dist/IR/IRNodes/IRConstr.js +34 -37
  11. package/dist/IR/IRNodes/IRDelayed.d.ts +12 -9
  12. package/dist/IR/IRNodes/IRDelayed.js +22 -18
  13. package/dist/IR/IRNodes/IRError.d.ts +9 -6
  14. package/dist/IR/IRNodes/IRError.js +12 -5
  15. package/dist/IR/IRNodes/IRForced.d.ts +9 -6
  16. package/dist/IR/IRNodes/IRForced.js +22 -18
  17. package/dist/IR/IRNodes/IRFunc.d.ts +14 -10
  18. package/dist/IR/IRNodes/IRFunc.js +35 -38
  19. package/dist/IR/IRNodes/IRHoisted.d.ts +16 -9
  20. package/dist/IR/IRNodes/IRHoisted.js +36 -18
  21. package/dist/IR/IRNodes/IRLetted.d.ts +14 -34
  22. package/dist/IR/IRNodes/IRLetted.js +65 -297
  23. package/dist/IR/IRNodes/IRNative/IRNativeTag.d.ts +0 -2
  24. package/dist/IR/IRNodes/IRNative/IRNativeTag.js +0 -4
  25. package/dist/IR/IRNodes/IRNative/index.d.ts +9 -8
  26. package/dist/IR/IRNodes/IRNative/index.js +55 -18
  27. package/dist/IR/IRNodes/IRNative/isForcedNative.d.ts +2 -0
  28. package/dist/IR/IRNodes/IRNative/isForcedNative.js +1 -1
  29. package/dist/IR/IRNodes/IRRecursive.d.ts +18 -10
  30. package/dist/IR/IRNodes/IRRecursive.js +36 -44
  31. package/dist/IR/IRNodes/IRSelfCall.d.ts +10 -24
  32. package/dist/IR/IRNodes/IRSelfCall.js +25 -87
  33. package/dist/IR/IRNodes/IRVar.d.ts +11 -19
  34. package/dist/IR/IRNodes/IRVar.js +26 -54
  35. package/dist/IR/IRNodes/utils/dependsByDbns.d.ts +1 -1
  36. package/dist/IR/IRNodes/utils/dependsByDbns.js +5 -11
  37. package/dist/IR/IRNodes/utils/hashVarSym.d.ts +1 -0
  38. package/dist/IR/IRNodes/utils/hashVarSym.js +37 -0
  39. package/dist/IR/IRNodes/utils/makeArrayLikeProxy.d.ts +2 -1
  40. package/dist/IR/IRTerm.d.ts +7 -0
  41. package/dist/IR/toUPLC/_internal/_modifyChildFromTo.js +3 -0
  42. package/dist/IR/toUPLC/_internal/findAll.js +2 -73
  43. package/dist/IR/toUPLC/_internal/getDebruijnInTerm.js +7 -34
  44. package/dist/IR/toUPLC/_internal/iterTree.js +3 -17
  45. package/dist/IR/toUPLC/common_hoisted.d.ts +2 -0
  46. package/dist/IR/toUPLC/common_hoisted.js +4 -0
  47. package/dist/IR/toUPLC/compileIRToUPLC.d.ts +1 -1
  48. package/dist/IR/toUPLC/compileIRToUPLC.js +91 -14
  49. package/dist/IR/toUPLC/ctx/ToUplcCtx.d.ts +16 -0
  50. package/dist/IR/toUPLC/ctx/ToUplcCtx.js +75 -0
  51. package/dist/IR/toUPLC/subRoutines/_comptimeDropN.d.ts +8 -0
  52. package/dist/IR/toUPLC/subRoutines/_comptimeDropN.js +95 -0
  53. package/dist/IR/toUPLC/subRoutines/handleHoistedAndReturnRoot/index.js +7 -54
  54. package/dist/IR/toUPLC/subRoutines/handleLetted/groupByScope.d.ts +6 -13
  55. package/dist/IR/toUPLC/subRoutines/handleLetted/groupByScope.js +67 -71
  56. package/dist/IR/toUPLC/subRoutines/handleLetted/index.js +44 -170
  57. package/dist/IR/toUPLC/subRoutines/handleRecursiveTerms.js +7 -3
  58. package/dist/IR/toUPLC/subRoutines/hoistForcedNatives.js +3 -2
  59. package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/InlineSingleUseCtx.d.ts +22 -0
  60. package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/InlineSingleUseCtx.js +59 -0
  61. package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/inlineSingleUseAndReturnRoot.d.ts +0 -0
  62. package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/inlineSingleUseAndReturnRoot.js +217 -0
  63. package/dist/IR/toUPLC/subRoutines/markRecursiveHoistsAsForced.js +12 -49
  64. package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/expandFuncsAndReturnRoot.d.ts +1 -1
  65. package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/expandFuncsAndReturnRoot.js +11 -14
  66. package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/{index.d.ts → performUplcOptimizationsAndReturnRoot.d.ts} +0 -2
  67. package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/performUplcOptimizationsAndReturnRoot.js +151 -0
  68. package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/RemoveUnusedVarsCtx.d.ts +11 -0
  69. package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/RemoveUnusedVarsCtx.js +46 -0
  70. package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/removeUnusuedVarsAndReturnRoot.d.ts +2 -0
  71. package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/removeUnusuedVarsAndReturnRoot.js +80 -0
  72. package/dist/IR/toUPLC/subRoutines/replaceHoistedWithLetted.js +18 -11
  73. package/dist/IR/toUPLC/subRoutines/replaceNatives/nativeToIR.d.ts +43 -0
  74. package/dist/IR/toUPLC/subRoutines/replaceNatives/nativeToIR.js +255 -478
  75. package/dist/IR/toUPLC/subRoutines/rewriteNativesAppliedToConstantsAndReturnRoot.d.ts +2 -0
  76. package/dist/IR/toUPLC/subRoutines/rewriteNativesAppliedToConstantsAndReturnRoot.js +85 -0
  77. package/dist/IR/toUPLC/subRoutines/sanifyTree.js +1 -0
  78. package/dist/IR/toUPLC/utils/getApplicationTerms.d.ts +6 -0
  79. package/dist/IR/toUPLC/utils/getApplicationTerms.js +37 -0
  80. package/dist/IR/tree_utils/_ir_lazyChooseList.d.ts +2 -2
  81. package/dist/IR/tree_utils/_ir_lazyChooseList.js +4 -2
  82. package/dist/IR/tree_utils/_ir_lazyIfThenElse.d.ts +1 -1
  83. package/dist/IR/tree_utils/_ir_lazyIfThenElse.js +4 -2
  84. package/dist/IR/tree_utils/_ir_let.d.ts +2 -1
  85. package/dist/IR/tree_utils/_ir_let.js +6 -2
  86. package/dist/IR/utils/isClosedIRTerm.d.ts +1 -0
  87. package/dist/IR/utils/isClosedIRTerm.js +39 -25
  88. package/dist/IR/utils/positiveIntAsBytes.d.ts +1 -0
  89. package/dist/IR/utils/positiveIntAsBytes.js +4 -0
  90. package/dist/IR/utils/showIR.d.ts +10 -21
  91. package/dist/IR/utils/showIR.js +66 -64
  92. package/dist/ast/nodes/common/Identifier.d.ts +1 -0
  93. package/dist/ast/nodes/common/Identifier.js +3 -0
  94. package/dist/ast/nodes/expr/CaseExpr.d.ts +5 -5
  95. package/dist/ast/nodes/expr/ElemAccessExpr.d.ts +2 -2
  96. package/dist/ast/nodes/expr/ParentesizedExpr.d.ts +1 -1
  97. package/dist/ast/nodes/expr/PebbleExpr.d.ts +2 -1
  98. package/dist/ast/nodes/expr/PropAccessExpr.d.ts +3 -3
  99. package/dist/ast/nodes/expr/TernaryExpr.d.ts +3 -3
  100. package/dist/ast/nodes/expr/TypeConversionExpr.d.ts +2 -1
  101. package/dist/ast/nodes/expr/TypeConversionExpr.js +2 -0
  102. package/dist/ast/nodes/expr/binary/BinaryExpr.d.ts +42 -42
  103. package/dist/ast/nodes/expr/functions/CallExpr.d.ts +1 -1
  104. package/dist/ast/nodes/expr/functions/FuncExpr.d.ts +2 -1
  105. package/dist/ast/nodes/expr/functions/FuncExpr.js +6 -0
  106. package/dist/ast/nodes/expr/litteral/LitContextExpr.d.ts +6 -0
  107. package/dist/ast/nodes/expr/litteral/LitContextExpr.js +6 -0
  108. package/dist/ast/nodes/expr/litteral/LitFailExpr.d.ts +6 -0
  109. package/dist/ast/nodes/expr/litteral/LitFailExpr.js +6 -0
  110. package/dist/ast/nodes/expr/litteral/LitteralExpr.d.ts +3 -1
  111. package/dist/ast/nodes/expr/litteral/LitteralExpr.js +5 -1
  112. package/dist/ast/nodes/statements/AssertStmt.d.ts +2 -2
  113. package/dist/ast/nodes/statements/AssignmentStmt.d.ts +1 -1
  114. package/dist/ast/nodes/statements/BlockStmt.d.ts +1 -1
  115. package/dist/ast/nodes/statements/FailStmt.d.ts +1 -1
  116. package/dist/ast/nodes/statements/ForOfStmt.d.ts +4 -2
  117. package/dist/ast/nodes/statements/ForOfStmt.js +6 -0
  118. package/dist/ast/nodes/statements/ForStmt.d.ts +6 -4
  119. package/dist/ast/nodes/statements/ForStmt.js +6 -0
  120. package/dist/ast/nodes/statements/IfStmt.d.ts +8 -5
  121. package/dist/ast/nodes/statements/IfStmt.js +13 -0
  122. package/dist/ast/nodes/statements/MatchStmt.d.ts +13 -4
  123. package/dist/ast/nodes/statements/MatchStmt.js +22 -1
  124. package/dist/ast/nodes/statements/PebbleStmt.d.ts +2 -1
  125. package/dist/ast/nodes/statements/PebbleStmt.js +3 -1
  126. package/dist/ast/nodes/statements/ReturnStmt.d.ts +1 -1
  127. package/dist/ast/nodes/statements/WhileStmt.d.ts +4 -2
  128. package/dist/ast/nodes/statements/WhileStmt.js +6 -0
  129. package/dist/ast/nodes/statements/declarations/ContractDecl.d.ts +17 -0
  130. package/dist/ast/nodes/statements/declarations/ContractDecl.js +22 -0
  131. package/dist/ast/nodes/statements/declarations/VarDecl/ArrayLikeDeconstr.d.ts +1 -1
  132. package/dist/ast/nodes/statements/declarations/VarDecl/HasInit.d.ts +1 -1
  133. package/dist/ast/nodes/statements/declarations/VarDecl/NamedDeconstructVarDecl.d.ts +1 -1
  134. package/dist/ast/nodes/statements/declarations/VarDecl/SimpleVarDecl.d.ts +2 -1
  135. package/dist/ast/nodes/statements/declarations/VarDecl/SimpleVarDecl.js +6 -0
  136. package/dist/ast/nodes/statements/declarations/VarDecl/SingleDeconstructVarDecl.d.ts +1 -1
  137. package/dist/compiler/AstCompiler/AstCompiler.d.ts +6 -2
  138. package/dist/compiler/AstCompiler/AstCompiler.js +91 -24
  139. package/dist/compiler/AstCompiler/internal/_deriveContractBody/_deriveContractBody.d.ts +10 -0
  140. package/dist/compiler/AstCompiler/internal/_deriveContractBody/_deriveContractBody.js +777 -0
  141. package/dist/compiler/AstCompiler/internal/exprs/_compileBinaryExpr.js +1 -1
  142. package/dist/compiler/AstCompiler/internal/exprs/_compileExpr.js +1 -1
  143. package/dist/compiler/AstCompiler/internal/exprs/_compileLitteralExpr.js +8 -2
  144. package/dist/compiler/AstCompiler/internal/exprs/_compilePropAccessExpr.js +1 -1
  145. package/dist/compiler/AstCompiler/internal/exprs/_compileTypeConversionExpr.js +3 -1
  146. package/dist/compiler/AstCompiler/internal/exprs/_compileUnaryPrefixExpr.js +1 -1
  147. package/dist/compiler/AstCompiler/internal/statements/_compileAssignmentStmt.js +2 -2
  148. package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.d.ts +2 -2
  149. package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.js +48 -24
  150. package/dist/compiler/AstCompiler/internal/statements/_compileStatement.js +4 -1
  151. package/dist/compiler/AstCompiler/internal/statements/_compileVarStmt.js +2 -2
  152. package/dist/compiler/AstCompiler/internal/types/_compileDataEncodedConcreteType.js +1 -1
  153. package/dist/compiler/AstCompiler/internal/types/_compileSopEncodedConcreteType.js +4 -1
  154. package/dist/compiler/AstCompiler/scope/AstScope.js +4 -3
  155. package/dist/compiler/AstCompiler/utils/getPropAccessReturnType.js +6 -4
  156. package/dist/compiler/Compiler.js +3 -1
  157. package/dist/compiler/TirCompiler/compileTirProgram.js +3 -1
  158. package/dist/compiler/TirCompiler/expressify/ExpressifyCtx.d.ts +13 -3
  159. package/dist/compiler/TirCompiler/expressify/ExpressifyCtx.js +41 -37
  160. package/dist/compiler/TirCompiler/expressify/determineReassignedVariablesAndReturn.js +11 -2
  161. package/dist/compiler/TirCompiler/expressify/expressify.d.ts +2 -1
  162. package/dist/compiler/TirCompiler/expressify/expressify.js +82 -36
  163. package/dist/compiler/TirCompiler/expressify/expressifyForStmt.d.ts +2 -1
  164. package/dist/compiler/TirCompiler/expressify/expressifyForStmt.js +57 -8
  165. package/dist/compiler/TirCompiler/expressify/expressifyIfBranch.js +1 -1
  166. package/dist/compiler/TirCompiler/expressify/expressifyVarAssignmentStmt.js +1 -1
  167. package/dist/compiler/TirCompiler/expressify/expressifyVarDecl.js +1 -0
  168. package/dist/compiler/TirCompiler/expressify/expressifyVars.js +131 -9
  169. package/dist/compiler/TirCompiler/internal/_compileHoistedDeps.js +3 -1
  170. package/dist/compiler/io/IOutputStream.d.ts +1 -0
  171. package/dist/compiler/io/IOutputStream.js +18 -3
  172. package/dist/compiler/path/getAbsolutePath.js +4 -6
  173. package/dist/compiler/tir/expressions/ITirExpr.d.ts +2 -0
  174. package/dist/compiler/tir/expressions/TirAssertAndContinueExpr.d.ts +4 -2
  175. package/dist/compiler/tir/expressions/TirAssertAndContinueExpr.js +16 -2
  176. package/dist/compiler/tir/expressions/TirCallExpr.d.ts +3 -1
  177. package/dist/compiler/tir/expressions/TirCallExpr.js +16 -1
  178. package/dist/compiler/tir/expressions/TirCaseExpr.d.ts +6 -1
  179. package/dist/compiler/tir/expressions/TirCaseExpr.js +103 -60
  180. package/dist/compiler/tir/expressions/TirElemAccessExpr.d.ts +3 -1
  181. package/dist/compiler/tir/expressions/TirElemAccessExpr.js +9 -1
  182. package/dist/compiler/tir/expressions/TirFailExpr.d.ts +3 -1
  183. package/dist/compiler/tir/expressions/TirFailExpr.js +9 -1
  184. package/dist/compiler/tir/expressions/TirFromDataExpr.d.ts +3 -2
  185. package/dist/compiler/tir/expressions/TirFromDataExpr.js +85 -56
  186. package/dist/compiler/tir/expressions/TirFuncExpr.d.ts +4 -10
  187. package/dist/compiler/tir/expressions/TirFuncExpr.js +30 -13
  188. package/dist/compiler/tir/expressions/TirHoistedExpr.d.ts +3 -1
  189. package/dist/compiler/tir/expressions/TirHoistedExpr.js +8 -0
  190. package/dist/compiler/tir/expressions/TirInlineClosedIR.d.ts +4 -1
  191. package/dist/compiler/tir/expressions/TirInlineClosedIR.js +8 -0
  192. package/dist/compiler/tir/expressions/TirLettedExpr.d.ts +5 -2
  193. package/dist/compiler/tir/expressions/TirLettedExpr.js +19 -4
  194. package/dist/compiler/tir/expressions/TirNativeFunc.d.ts +8 -5
  195. package/dist/compiler/tir/expressions/TirNativeFunc.js +50 -22
  196. package/dist/compiler/tir/expressions/TirParentesizedExpr.d.ts +3 -1
  197. package/dist/compiler/tir/expressions/TirParentesizedExpr.js +6 -0
  198. package/dist/compiler/tir/expressions/TirPropAccessExpr.d.ts +3 -1
  199. package/dist/compiler/tir/expressions/TirPropAccessExpr.js +9 -0
  200. package/dist/compiler/tir/expressions/TirTernaryExpr.d.ts +3 -1
  201. package/dist/compiler/tir/expressions/TirTernaryExpr.js +16 -5
  202. package/dist/compiler/tir/expressions/TirToDataExpr.d.ts +3 -1
  203. package/dist/compiler/tir/expressions/TirToDataExpr.js +56 -25
  204. package/dist/compiler/tir/expressions/TirTraceIfFalseExpr.d.ts +3 -1
  205. package/dist/compiler/tir/expressions/TirTraceIfFalseExpr.js +21 -4
  206. package/dist/compiler/tir/expressions/TirTypeConversionExpr.d.ts +3 -1
  207. package/dist/compiler/tir/expressions/TirTypeConversionExpr.js +9 -1
  208. package/dist/compiler/tir/expressions/TirVariableAccessExpr.d.ts +7 -3
  209. package/dist/compiler/tir/expressions/TirVariableAccessExpr.js +17 -7
  210. package/dist/compiler/tir/expressions/ToIRTermCtx.d.ts +16 -20
  211. package/dist/compiler/tir/expressions/ToIRTermCtx.js +67 -50
  212. package/dist/compiler/tir/expressions/binary/TirBinaryExpr.d.ts +40 -0
  213. package/dist/compiler/tir/expressions/binary/TirBinaryExpr.js +174 -3
  214. package/dist/compiler/tir/expressions/litteral/TirLitArrExpr.d.ts +4 -2
  215. package/dist/compiler/tir/expressions/litteral/TirLitArrExpr.js +8 -2
  216. package/dist/compiler/tir/expressions/litteral/TirLitFailExpr.d.ts +17 -0
  217. package/dist/compiler/tir/expressions/litteral/TirLitFailExpr.js +21 -0
  218. package/dist/compiler/tir/expressions/litteral/TirLitFalseExpr.d.ts +4 -1
  219. package/dist/compiler/tir/expressions/litteral/TirLitFalseExpr.js +4 -0
  220. package/dist/compiler/tir/expressions/litteral/TirLitHexBytesExpr.d.ts +4 -1
  221. package/dist/compiler/tir/expressions/litteral/TirLitHexBytesExpr.js +5 -0
  222. package/dist/compiler/tir/expressions/litteral/TirLitIntExpr.d.ts +4 -1
  223. package/dist/compiler/tir/expressions/litteral/TirLitIntExpr.js +4 -0
  224. package/dist/compiler/tir/expressions/litteral/TirLitNamedObjExpr.d.ts +3 -1
  225. package/dist/compiler/tir/expressions/litteral/TirLitNamedObjExpr.js +5 -0
  226. package/dist/compiler/tir/expressions/litteral/TirLitObjExpr.d.ts +3 -1
  227. package/dist/compiler/tir/expressions/litteral/TirLitObjExpr.js +5 -0
  228. package/dist/compiler/tir/expressions/litteral/TirLitStrExpr.d.ts +4 -1
  229. package/dist/compiler/tir/expressions/litteral/TirLitStrExpr.js +4 -0
  230. package/dist/compiler/tir/expressions/litteral/TirLitThisExpr.d.ts +4 -1
  231. package/dist/compiler/tir/expressions/litteral/TirLitThisExpr.js +7 -3
  232. package/dist/compiler/tir/expressions/litteral/TirLitTrueExpr.d.ts +4 -1
  233. package/dist/compiler/tir/expressions/litteral/TirLitTrueExpr.js +4 -0
  234. package/dist/compiler/tir/expressions/litteral/TirLitUndefExpr.d.ts +4 -1
  235. package/dist/compiler/tir/expressions/litteral/TirLitUndefExpr.js +4 -0
  236. package/dist/compiler/tir/expressions/litteral/TirLitVoidExpr.d.ts +4 -1
  237. package/dist/compiler/tir/expressions/litteral/TirLitVoidExpr.js +4 -0
  238. package/dist/compiler/tir/expressions/litteral/TirLitteralExpr.d.ts +2 -1
  239. package/dist/compiler/tir/expressions/litteral/TirLitteralExpr.js +3 -1
  240. package/dist/compiler/tir/expressions/unary/TirUnaryExclamation.d.ts +4 -2
  241. package/dist/compiler/tir/expressions/unary/TirUnaryExclamation.js +8 -3
  242. package/dist/compiler/tir/expressions/unary/TirUnaryMinus.d.ts +4 -2
  243. package/dist/compiler/tir/expressions/unary/TirUnaryMinus.js +8 -2
  244. package/dist/compiler/tir/expressions/unary/TirUnaryPlus.d.ts +3 -1
  245. package/dist/compiler/tir/expressions/unary/TirUnaryPlus.js +6 -0
  246. package/dist/compiler/tir/expressions/unary/TirUnaryTilde.d.ts +4 -2
  247. package/dist/compiler/tir/expressions/unary/TirUnaryTilde.js +8 -2
  248. package/dist/compiler/tir/program/TypedProgram.d.ts +1 -0
  249. package/dist/compiler/tir/program/TypedProgram.js +9 -0
  250. package/dist/compiler/tir/program/stdScope/stdScope.js +126 -126
  251. package/dist/compiler/tir/statements/TirAssertStmt.d.ts +2 -0
  252. package/dist/compiler/tir/statements/TirAssertStmt.js +10 -0
  253. package/dist/compiler/tir/statements/TirAssignmentStmt.d.ts +2 -0
  254. package/dist/compiler/tir/statements/TirAssignmentStmt.js +8 -0
  255. package/dist/compiler/tir/statements/TirBlockStmt.d.ts +2 -0
  256. package/dist/compiler/tir/statements/TirBlockStmt.js +16 -0
  257. package/dist/compiler/tir/statements/TirBreakStmt.d.ts +2 -0
  258. package/dist/compiler/tir/statements/TirBreakStmt.js +8 -0
  259. package/dist/compiler/tir/statements/TirContinueStmt.d.ts +2 -0
  260. package/dist/compiler/tir/statements/TirContinueStmt.js +8 -0
  261. package/dist/compiler/tir/statements/TirFailStmt.d.ts +2 -0
  262. package/dist/compiler/tir/statements/TirFailStmt.js +8 -0
  263. package/dist/compiler/tir/statements/TirForOfStmt.d.ts +2 -0
  264. package/dist/compiler/tir/statements/TirForOfStmt.js +14 -0
  265. package/dist/compiler/tir/statements/TirForStmt.d.ts +2 -0
  266. package/dist/compiler/tir/statements/TirForStmt.js +21 -0
  267. package/dist/compiler/tir/statements/TirIfStmt.d.ts +3 -0
  268. package/dist/compiler/tir/statements/TirIfStmt.js +19 -0
  269. package/dist/compiler/tir/statements/TirMatchStmt.d.ts +2 -0
  270. package/dist/compiler/tir/statements/TirMatchStmt.js +30 -0
  271. package/dist/compiler/tir/statements/TirReturnStmt.d.ts +2 -0
  272. package/dist/compiler/tir/statements/TirReturnStmt.js +8 -0
  273. package/dist/compiler/tir/statements/TirStmt.d.ts +2 -0
  274. package/dist/compiler/tir/statements/TirVarDecl/TirArrayLikeDeconstr.d.ts +2 -0
  275. package/dist/compiler/tir/statements/TirVarDecl/TirArrayLikeDeconstr.js +30 -0
  276. package/dist/compiler/tir/statements/TirVarDecl/TirNamedDeconstructVarDecl.d.ts +3 -1
  277. package/dist/compiler/tir/statements/TirVarDecl/TirNamedDeconstructVarDecl.js +28 -0
  278. package/dist/compiler/tir/statements/TirVarDecl/TirSimpleVarDecl.d.ts +3 -0
  279. package/dist/compiler/tir/statements/TirVarDecl/TirSimpleVarDecl.js +13 -0
  280. package/dist/compiler/tir/statements/TirVarDecl/TirSingleDeconstructVarDecl.d.ts +3 -1
  281. package/dist/compiler/tir/statements/TirVarDecl/TirSingleDeconstructVarDecl.js +28 -0
  282. package/dist/compiler/tir/statements/TirWhileStmt.d.ts +2 -0
  283. package/dist/compiler/tir/statements/TirWhileStmt.js +14 -0
  284. package/dist/compiler/tir/types/utils/canAssignTo.js +1 -1
  285. package/dist/diagnostics/DiagnosticEmitter.js +1 -1
  286. package/dist/diagnostics/diagnosticMessages.generated.d.ts +10 -1
  287. package/dist/diagnostics/diagnosticMessages.generated.js +20 -2
  288. package/dist/parser/Parser.d.ts +8 -3
  289. package/dist/parser/Parser.js +162 -30
  290. package/dist/tokenizer/Token.d.ts +81 -72
  291. package/dist/tokenizer/Token.js +82 -72
  292. package/dist/tokenizer/utils/tokenFromKeyword.js +32 -10
  293. package/dist/tokenizer/utils/tokenIsAlsoIdentifier.js +10 -0
  294. package/dist/utils/BitUtils/index.js +1 -1
  295. package/dist/utils/UPLCFlatUtils/index.js +1 -1
  296. package/package.json +2 -1
  297. package/dist/IR/IRNodes/utils/isClosedAtDbn.d.ts +0 -2
  298. package/dist/IR/IRNodes/utils/isClosedAtDbn.js +0 -22
  299. package/dist/IR/toUPLC/_internal/_irToUplc.d.ts +0 -9
  300. package/dist/IR/toUPLC/_internal/_irToUplc.js +0 -156
  301. package/dist/IR/toUPLC/subRoutines/handleLetted/incrementUnboundDbns.d.ts +0 -9
  302. package/dist/IR/toUPLC/subRoutines/handleLetted/incrementUnboundDbns.js +0 -73
  303. package/dist/IR/toUPLC/subRoutines/inlineSingleUseApplications.d.ts +0 -1
  304. package/dist/IR/toUPLC/subRoutines/inlineSingleUseApplications.js +0 -12
  305. package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/index.js +0 -227
  306. package/dist/IR/tree_utils/_ir_apps.d.ts +0 -3
  307. package/dist/IR/tree_utils/_ir_apps.js +0 -8
@@ -16,6 +16,8 @@ export declare class TirExponentiationExpr implements ITirBinaryExpr {
16
16
  readonly range: SourceRange;
17
17
  readonly type: TirType;
18
18
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
19
+ toString(): string;
20
+ pretty(indent: number): string;
19
21
  clone(): TirExpr;
20
22
  get isConstant(): boolean;
21
23
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -27,6 +29,8 @@ export declare class TirLessThanExpr implements ITirBinaryExpr {
27
29
  readonly range: SourceRange;
28
30
  readonly type: TirType;
29
31
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
32
+ toString(): string;
33
+ pretty(indent: number): string;
30
34
  clone(): TirExpr;
31
35
  get isConstant(): boolean;
32
36
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -38,6 +42,8 @@ export declare class TirGreaterThanExpr implements ITirBinaryExpr {
38
42
  readonly range: SourceRange;
39
43
  readonly type: TirType;
40
44
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
45
+ toString(): string;
46
+ pretty(indent: number): string;
41
47
  clone(): TirExpr;
42
48
  get isConstant(): boolean;
43
49
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -49,6 +55,8 @@ export declare class TirLessThanEqualExpr implements ITirBinaryExpr {
49
55
  readonly range: SourceRange;
50
56
  readonly type: TirType;
51
57
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
58
+ toString(): string;
59
+ pretty(indent: number): string;
52
60
  clone(): TirExpr;
53
61
  get isConstant(): boolean;
54
62
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -60,6 +68,8 @@ export declare class TirGreaterThanEqualExpr implements ITirBinaryExpr {
60
68
  readonly range: SourceRange;
61
69
  readonly type: TirType;
62
70
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
71
+ toString(): string;
72
+ pretty(indent: number): string;
63
73
  clone(): TirExpr;
64
74
  get isConstant(): boolean;
65
75
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -71,6 +81,8 @@ export declare class TirEqualExpr implements ITirBinaryExpr {
71
81
  readonly range: SourceRange;
72
82
  readonly type: TirType;
73
83
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
84
+ toString(): string;
85
+ pretty(indent: number): string;
74
86
  clone(): TirExpr;
75
87
  get isConstant(): boolean;
76
88
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -82,6 +94,8 @@ export declare class TirNotEqualExpr implements ITirBinaryExpr {
82
94
  readonly range: SourceRange;
83
95
  readonly type: TirType;
84
96
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
97
+ toString(): string;
98
+ pretty(indent: number): string;
85
99
  clone(): TirExpr;
86
100
  get isConstant(): boolean;
87
101
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -93,6 +107,8 @@ export declare class TirAddExpr implements ITirBinaryExpr {
93
107
  readonly range: SourceRange;
94
108
  get type(): TirType;
95
109
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
110
+ toString(): string;
111
+ pretty(indent: number): string;
96
112
  clone(): TirExpr;
97
113
  get isConstant(): boolean;
98
114
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -104,6 +120,8 @@ export declare class TirSubExpr implements ITirBinaryExpr {
104
120
  readonly range: SourceRange;
105
121
  readonly type: TirType;
106
122
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
123
+ toString(): string;
124
+ pretty(indent: number): string;
107
125
  clone(): TirExpr;
108
126
  get isConstant(): boolean;
109
127
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -115,6 +133,8 @@ export declare class TirMultExpr implements ITirBinaryExpr {
115
133
  readonly range: SourceRange;
116
134
  readonly type: TirType;
117
135
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
136
+ toString(): string;
137
+ pretty(indent: number): string;
118
138
  clone(): TirExpr;
119
139
  get isConstant(): boolean;
120
140
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -126,6 +146,8 @@ export declare class TirDivExpr implements ITirBinaryExpr {
126
146
  readonly range: SourceRange;
127
147
  readonly type: TirType;
128
148
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
149
+ toString(): string;
150
+ pretty(indent: number): string;
129
151
  clone(): TirExpr;
130
152
  get isConstant(): boolean;
131
153
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -137,6 +159,8 @@ export declare class TirModuloExpr implements ITirBinaryExpr {
137
159
  readonly range: SourceRange;
138
160
  readonly type: TirType;
139
161
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
162
+ toString(): string;
163
+ pretty(indent: number): string;
140
164
  clone(): TirExpr;
141
165
  get isConstant(): boolean;
142
166
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -148,6 +172,8 @@ export declare class TirShiftLeftExpr implements ITirBinaryExpr {
148
172
  readonly range: SourceRange;
149
173
  readonly type: TirType;
150
174
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
175
+ toString(): string;
176
+ pretty(indent: number): string;
151
177
  clone(): TirExpr;
152
178
  get isConstant(): boolean;
153
179
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -159,6 +185,8 @@ export declare class TirShiftRightExpr implements ITirBinaryExpr {
159
185
  readonly range: SourceRange;
160
186
  readonly type: TirType;
161
187
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
188
+ toString(): string;
189
+ pretty(indent: number): string;
162
190
  clone(): TirExpr;
163
191
  get isConstant(): boolean;
164
192
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -170,6 +198,8 @@ export declare class TirBitwiseAndExpr implements ITirBinaryExpr {
170
198
  readonly range: SourceRange;
171
199
  readonly type: TirType;
172
200
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
201
+ toString(): string;
202
+ pretty(indent: number): string;
173
203
  clone(): TirExpr;
174
204
  get isConstant(): boolean;
175
205
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -181,6 +211,8 @@ export declare class TirBitwiseXorExpr implements ITirBinaryExpr {
181
211
  readonly range: SourceRange;
182
212
  readonly type: TirType;
183
213
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
214
+ toString(): string;
215
+ pretty(indent: number): string;
184
216
  clone(): TirExpr;
185
217
  get isConstant(): boolean;
186
218
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -192,6 +224,8 @@ export declare class TirBitwiseOrExpr implements ITirBinaryExpr {
192
224
  readonly range: SourceRange;
193
225
  readonly type: TirType;
194
226
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
227
+ toString(): string;
228
+ pretty(indent: number): string;
195
229
  clone(): TirExpr;
196
230
  get isConstant(): boolean;
197
231
  toIR(ctx: ToIRTermCtx): IRTerm;
@@ -203,19 +237,25 @@ export declare class TirLogicalAndExpr implements ITirBinaryExpr {
203
237
  readonly range: SourceRange;
204
238
  readonly type: TirType;
205
239
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
240
+ toString(): string;
241
+ pretty(indent: number): string;
206
242
  clone(): TirExpr;
207
243
  get isConstant(): boolean;
208
244
  toIR(ctx: ToIRTermCtx): IRTerm;
209
245
  deps(): string[];
210
246
  }
247
+ export declare function _ir_and(left: IRTerm, right: IRTerm): IRTerm;
211
248
  export declare class TirLogicalOrExpr implements ITirBinaryExpr {
212
249
  left: TirExpr;
213
250
  right: TirExpr;
214
251
  readonly range: SourceRange;
215
252
  readonly type: TirType;
216
253
  constructor(left: TirExpr, right: TirExpr, range: SourceRange);
254
+ toString(): string;
255
+ pretty(indent: number): string;
217
256
  clone(): TirExpr;
218
257
  get isConstant(): boolean;
219
258
  toIR(ctx: ToIRTermCtx): IRTerm;
220
259
  deps(): string[];
221
260
  }
261
+ export declare function _ir_or(left: IRTerm, right: IRTerm): IRTerm;
@@ -1,7 +1,6 @@
1
1
  import { isObject } from "@harmoniclabs/obj-utils";
2
2
  import { bool_t, bytes_t, int_t } from "../../program/stdScope/stdScope.js";
3
3
  import { mergeSortedStrArrInplace } from "../../../../utils/array/mergeSortedStrArrInplace.js";
4
- import { _ir_apps } from "../../../../IR/tree_utils/_ir_apps.js";
5
4
  import { getUnaliased } from "../../types/utils/getUnaliased.js";
6
5
  import { CEKConst, Machine } from "@harmoniclabs/plutus-machine";
7
6
  import { TirBytesT } from "../../types/TirNativeType/native/bytes.js";
@@ -9,6 +8,8 @@ import { TirIntT } from "../../types/TirNativeType/native/int.js";
9
8
  import { IRNative } from "../../../../IR/IRNodes/IRNative/index.js";
10
9
  import { IRConst } from "../../../../IR/IRNodes/IRConst.js";
11
10
  import { compileIRToUPLC } from "../../../../IR/toUPLC/compileIRToUPLC.js";
11
+ import { _ir_apps } from "../../../../IR/IRNodes/IRApp.js";
12
+ import { _ir_lazyIfThenElse } from "../../../../IR/tree_utils/_ir_lazyIfThenElse.js";
12
13
  export function isTirBinaryExpr(thing) {
13
14
  return isObject(thing) && (thing instanceof TirExponentiationExpr // int
14
15
  || thing instanceof TirLessThanExpr // bool
@@ -41,6 +42,14 @@ export class TirExponentiationExpr {
41
42
  this.right = right;
42
43
  this.range = range;
43
44
  }
45
+ toString() {
46
+ return `(${this.left.toString()} ** ${this.right.toString()})`;
47
+ }
48
+ pretty(indent) {
49
+ const singleIndent = " ";
50
+ const indent_base = singleIndent.repeat(indent);
51
+ return `(${this.left.pretty(indent)} ** ${this.right.pretty(indent)})`;
52
+ }
44
53
  clone() {
45
54
  return new TirExponentiationExpr(this.left.clone(), this.right.clone(), this.range.clone());
46
55
  }
@@ -64,6 +73,14 @@ export class TirLessThanExpr {
64
73
  this.right = right;
65
74
  this.range = range;
66
75
  }
76
+ toString() {
77
+ return `(${this.left.toString()} < ${this.right.toString()})`;
78
+ }
79
+ pretty(indent) {
80
+ const singleIndent = " ";
81
+ const indent_base = singleIndent.repeat(indent);
82
+ return `(${this.left.pretty(indent)} < ${this.right.pretty(indent)})`;
83
+ }
67
84
  clone() {
68
85
  return new TirLessThanExpr(this.left.clone(), this.right.clone(), this.range.clone());
69
86
  }
@@ -93,6 +110,14 @@ export class TirGreaterThanExpr {
93
110
  this.right = right;
94
111
  this.range = range;
95
112
  }
113
+ toString() {
114
+ return `(${this.left.toString()} > ${this.right.toString()})`;
115
+ }
116
+ pretty(indent) {
117
+ const singleIndent = " ";
118
+ const indent_base = singleIndent.repeat(indent);
119
+ return `(${this.left.pretty(indent)} > ${this.right.pretty(indent)})`;
120
+ }
96
121
  clone() {
97
122
  return new TirGreaterThanExpr(this.left.clone(), this.right.clone(), this.range.clone());
98
123
  }
@@ -124,6 +149,14 @@ export class TirLessThanEqualExpr {
124
149
  this.right = right;
125
150
  this.range = range;
126
151
  }
152
+ toString() {
153
+ return `(${this.left.toString()} <= ${this.right.toString()})`;
154
+ }
155
+ pretty(indent) {
156
+ const singleIndent = " ";
157
+ const indent_base = singleIndent.repeat(indent);
158
+ return `(${this.left.pretty(indent)} <= ${this.right.pretty(indent)})`;
159
+ }
127
160
  clone() {
128
161
  return new TirLessThanEqualExpr(this.left.clone(), this.right.clone(), this.range.clone());
129
162
  }
@@ -153,6 +186,14 @@ export class TirGreaterThanEqualExpr {
153
186
  this.right = right;
154
187
  this.range = range;
155
188
  }
189
+ toString() {
190
+ return `(${this.left.toString()} >= ${this.right.toString()})`;
191
+ }
192
+ pretty(indent) {
193
+ const singleIndent = " ";
194
+ const indent_base = singleIndent.repeat(indent);
195
+ return `(${this.left.pretty(indent)} >= ${this.right.pretty(indent)})`;
196
+ }
156
197
  clone() {
157
198
  return new TirGreaterThanEqualExpr(this.left.clone(), this.right.clone(), this.range.clone());
158
199
  }
@@ -184,6 +225,14 @@ export class TirEqualExpr {
184
225
  this.right = right;
185
226
  this.range = range;
186
227
  }
228
+ toString() {
229
+ return `(${this.left.toString()} === ${this.right.toString()})`;
230
+ }
231
+ pretty(indent) {
232
+ const singleIndent = " ";
233
+ const indent_base = singleIndent.repeat(indent);
234
+ return `(${this.left.pretty(indent)} === ${this.right.pretty(indent)})`;
235
+ }
187
236
  clone() {
188
237
  return new TirEqualExpr(this.left.clone(), this.right.clone(), this.range.clone());
189
238
  }
@@ -207,6 +256,14 @@ export class TirNotEqualExpr {
207
256
  this.right = right;
208
257
  this.range = range;
209
258
  }
259
+ toString() {
260
+ return `(${this.left.toString()} !== ${this.right.toString()})`;
261
+ }
262
+ pretty(indent) {
263
+ const singleIndent = " ";
264
+ const indent_base = singleIndent.repeat(indent);
265
+ return `(${this.left.pretty(indent)} !== ${this.right.pretty(indent)})`;
266
+ }
210
267
  clone() {
211
268
  return new TirNotEqualExpr(this.left.clone(), this.right.clone(), this.range.clone());
212
269
  }
@@ -236,6 +293,14 @@ export class TirAddExpr {
236
293
  this.right = right;
237
294
  this.range = range;
238
295
  }
296
+ toString() {
297
+ return `(${this.left.toString()} + ${this.right.toString()})`;
298
+ }
299
+ pretty(indent) {
300
+ const singleIndent = " ";
301
+ const indent_base = singleIndent.repeat(indent);
302
+ return `(${this.left.pretty(indent)} + ${this.right.pretty(indent)})`;
303
+ }
239
304
  clone() {
240
305
  return new TirAddExpr(this.left.clone(), this.right.clone(), this.range.clone());
241
306
  }
@@ -265,6 +330,14 @@ export class TirSubExpr {
265
330
  this.right = right;
266
331
  this.range = range;
267
332
  }
333
+ toString() {
334
+ return `(${this.left.toString()} - ${this.right.toString()})`;
335
+ }
336
+ pretty(indent) {
337
+ const singleIndent = " ";
338
+ const indent_base = singleIndent.repeat(indent);
339
+ return `(${this.left.pretty(indent)} - ${this.right.pretty(indent)})`;
340
+ }
268
341
  clone() {
269
342
  return new TirSubExpr(this.left.clone(), this.right.clone(), this.range.clone());
270
343
  }
@@ -288,6 +361,14 @@ export class TirMultExpr {
288
361
  this.right = right;
289
362
  this.range = range;
290
363
  }
364
+ toString() {
365
+ return `(${this.left.toString()} * ${this.right.toString()})`;
366
+ }
367
+ pretty(indent) {
368
+ const singleIndent = " ";
369
+ const indent_base = singleIndent.repeat(indent);
370
+ return `(${this.left.pretty(indent)} * ${this.right.pretty(indent)})`;
371
+ }
291
372
  clone() {
292
373
  return new TirMultExpr(this.left.clone(), this.right.clone(), this.range.clone());
293
374
  }
@@ -311,6 +392,14 @@ export class TirDivExpr {
311
392
  this.right = right;
312
393
  this.range = range;
313
394
  }
395
+ toString() {
396
+ return `(${this.left.toString()} / ${this.right.toString()})`;
397
+ }
398
+ pretty(indent) {
399
+ const singleIndent = " ";
400
+ const indent_base = singleIndent.repeat(indent);
401
+ return `(${this.left.pretty(indent)} / ${this.right.pretty(indent)})`;
402
+ }
314
403
  clone() {
315
404
  return new TirDivExpr(this.left.clone(), this.right.clone(), this.range.clone());
316
405
  }
@@ -334,6 +423,14 @@ export class TirModuloExpr {
334
423
  this.right = right;
335
424
  this.range = range;
336
425
  }
426
+ toString() {
427
+ return `(${this.left.toString()} % ${this.right.toString()})`;
428
+ }
429
+ pretty(indent) {
430
+ const singleIndent = " ";
431
+ const indent_base = singleIndent.repeat(indent);
432
+ return `(${this.left.pretty(indent)} % ${this.right.pretty(indent)})`;
433
+ }
337
434
  clone() {
338
435
  return new TirModuloExpr(this.left.clone(), this.right.clone(), this.range.clone());
339
436
  }
@@ -357,6 +454,14 @@ export class TirShiftLeftExpr {
357
454
  this.right = right;
358
455
  this.range = range;
359
456
  }
457
+ toString() {
458
+ return `(${this.left.toString()} << ${this.right.toString()})`;
459
+ }
460
+ pretty(indent) {
461
+ const singleIndent = " ";
462
+ const indent_base = singleIndent.repeat(indent);
463
+ return `(${this.left.pretty(indent)} << ${this.right.pretty(indent)})`;
464
+ }
360
465
  clone() {
361
466
  return new TirShiftLeftExpr(this.left.clone(), this.right.clone(), this.range.clone());
362
467
  }
@@ -382,6 +487,14 @@ export class TirShiftRightExpr {
382
487
  this.right = right;
383
488
  this.range = range;
384
489
  }
490
+ toString() {
491
+ return `(${this.left.toString()} >> ${this.right.toString()})`;
492
+ }
493
+ pretty(indent) {
494
+ const singleIndent = " ";
495
+ const indent_base = singleIndent.repeat(indent);
496
+ return `(${this.left.pretty(indent)} >> ${this.right.pretty(indent)})`;
497
+ }
385
498
  clone() {
386
499
  return new TirShiftRightExpr(this.left.clone(), this.right.clone(), this.range.clone());
387
500
  }
@@ -425,6 +538,14 @@ export class TirBitwiseAndExpr {
425
538
  this.right = right;
426
539
  this.range = range;
427
540
  }
541
+ toString() {
542
+ return `(${this.left.toString()} & ${this.right.toString()})`;
543
+ }
544
+ pretty(indent) {
545
+ const singleIndent = " ";
546
+ const indent_base = singleIndent.repeat(indent);
547
+ return `(${this.left.pretty(indent)} & ${this.right.pretty(indent)})`;
548
+ }
428
549
  clone() {
429
550
  return new TirBitwiseAndExpr(this.left.clone(), this.right.clone(), this.range.clone());
430
551
  }
@@ -448,6 +569,14 @@ export class TirBitwiseXorExpr {
448
569
  this.right = right;
449
570
  this.range = range;
450
571
  }
572
+ toString() {
573
+ return `(${this.left.toString()} ^ ${this.right.toString()})`;
574
+ }
575
+ pretty(indent) {
576
+ const singleIndent = " ";
577
+ const indent_base = singleIndent.repeat(indent);
578
+ return `(${this.left.pretty(indent)} ^ ${this.right.pretty(indent)})`;
579
+ }
451
580
  clone() {
452
581
  return new TirBitwiseXorExpr(this.left.clone(), this.right.clone(), this.range.clone());
453
582
  }
@@ -471,6 +600,14 @@ export class TirBitwiseOrExpr {
471
600
  this.right = right;
472
601
  this.range = range;
473
602
  }
603
+ toString() {
604
+ return `(${this.left.toString()} | ${this.right.toString()})`;
605
+ }
606
+ pretty(indent) {
607
+ const singleIndent = " ";
608
+ const indent_base = singleIndent.repeat(indent);
609
+ return `(${this.left.pretty(indent)} | ${this.right.pretty(indent)})`;
610
+ }
474
611
  clone() {
475
612
  return new TirBitwiseOrExpr(this.left.clone(), this.right.clone(), this.range.clone());
476
613
  }
@@ -494,12 +631,20 @@ export class TirLogicalAndExpr {
494
631
  this.right = right;
495
632
  this.range = range;
496
633
  }
634
+ toString() {
635
+ return `(${this.left.toString()} && ${this.right.toString()})`;
636
+ }
637
+ pretty(indent) {
638
+ const singleIndent = " ";
639
+ const indent_base = singleIndent.repeat(indent);
640
+ return `(${this.left.pretty(indent)} && ${this.right.pretty(indent)})`;
641
+ }
497
642
  clone() {
498
643
  return new TirLogicalAndExpr(this.left.clone(), this.right.clone(), this.range.clone());
499
644
  }
500
645
  get isConstant() { return this.left.isConstant && this.right.isConstant; }
501
646
  toIR(ctx) {
502
- return _ir_apps(IRNative._and, this.left.toIR(ctx), this.right.toIR(ctx));
647
+ return _ir_and(this.left.toIR(ctx), this.right.toIR(ctx));
503
648
  }
504
649
  deps() {
505
650
  const deps = this.left.deps();
@@ -507,6 +652,15 @@ export class TirLogicalAndExpr {
507
652
  return deps;
508
653
  }
509
654
  }
655
+ export function _ir_and(left, right) {
656
+ return _ir_lazyIfThenElse(
657
+ // condition
658
+ left,
659
+ // then
660
+ right,
661
+ // else
662
+ IRConst.bool(false));
663
+ }
510
664
  export class TirLogicalOrExpr {
511
665
  left;
512
666
  right;
@@ -517,12 +671,20 @@ export class TirLogicalOrExpr {
517
671
  this.right = right;
518
672
  this.range = range;
519
673
  }
674
+ toString() {
675
+ return `(${this.left.toString()} || ${this.right.toString()})`;
676
+ }
677
+ pretty(indent) {
678
+ const singleIndent = " ";
679
+ const indent_base = singleIndent.repeat(indent);
680
+ return `(${this.left.pretty(indent)} || ${this.right.pretty(indent)})`;
681
+ }
520
682
  clone() {
521
683
  return new TirLogicalOrExpr(this.left.clone(), this.right.clone(), this.range.clone());
522
684
  }
523
685
  get isConstant() { return this.left.isConstant && this.right.isConstant; }
524
686
  toIR(ctx) {
525
- return _ir_apps(IRNative._or, this.left.toIR(ctx), this.right.toIR(ctx));
687
+ return _ir_or(this.left.toIR(ctx), this.right.toIR(ctx));
526
688
  }
527
689
  deps() {
528
690
  const deps = this.left.deps();
@@ -530,3 +692,12 @@ export class TirLogicalOrExpr {
530
692
  return deps;
531
693
  }
532
694
  }
695
+ export function _ir_or(left, right) {
696
+ return _ir_lazyIfThenElse(
697
+ // condition
698
+ left,
699
+ // then
700
+ IRConst.bool(true),
701
+ // else
702
+ right);
703
+ }
@@ -1,16 +1,18 @@
1
1
  import { SourceRange } from "../../../../ast/Source/SourceRange.js";
2
- import { IRTerm } from "../../../../IR/index.js";
3
2
  import { TirType } from "../../types/TirType.js";
4
3
  import { ITirExpr } from "../ITirExpr.js";
5
4
  import { TirExpr } from "../TirExpr.js";
6
5
  import { ToIRTermCtx } from "../ToIRTermCtx.js";
6
+ import type { IRTerm } from "../../../../IR/IRTerm.js";
7
7
  export declare class TirLitArrExpr implements ITirExpr {
8
8
  readonly elems: TirExpr[];
9
9
  readonly type: TirType;
10
10
  readonly range: SourceRange;
11
11
  get isConstant(): boolean;
12
12
  constructor(elems: TirExpr[], type: TirType, range: SourceRange);
13
- clone(): TirLitArrExpr;
13
+ pretty(): string;
14
+ toString(): string;
15
+ clone(): TirExpr;
14
16
  deps(): string[];
15
17
  toIR(ctx: ToIRTermCtx): IRTerm;
16
18
  }
@@ -1,9 +1,11 @@
1
1
  import { Machine, CEKConst } from "@harmoniclabs/plutus-machine";
2
- import { compileIRToUPLC, IRConst, IRNative } from "../../../../IR/index.js";
3
2
  import { mergeSortedStrArrInplace } from "../../../../utils/array/mergeSortedStrArrInplace.js";
4
3
  import { getListTypeArg } from "../../types/utils/getListTypeArg.js";
5
4
  import { getUnaliased } from "../../types/utils/getUnaliased.js";
6
- import { _ir_apps } from "../../../../IR/tree_utils/_ir_apps.js";
5
+ import { _ir_apps } from "../../../../IR/IRNodes/IRApp.js";
6
+ import { IRNative } from "../../../../IR/IRNodes/IRNative/index.js";
7
+ import { IRConst } from "../../../../IR/IRNodes/IRConst.js";
8
+ import { compileIRToUPLC } from "../../../../IR/toUPLC/compileIRToUPLC.js";
7
9
  export class TirLitArrExpr {
8
10
  elems;
9
11
  type;
@@ -16,6 +18,10 @@ export class TirLitArrExpr {
16
18
  this.type = type;
17
19
  this.range = range;
18
20
  }
21
+ pretty() { return this.toString(); }
22
+ toString() {
23
+ return `[ ${this.elems.map(e => e.toString()).join(", ")} ]`;
24
+ }
19
25
  clone() {
20
26
  return new TirLitArrExpr(this.elems.map(e => e.clone()), this.type.clone(), this.range.clone());
21
27
  }
@@ -0,0 +1,17 @@
1
+ import { SourceRange } from "../../../../ast/Source/SourceRange.js";
2
+ import { IRTerm } from "../../../../IR/index.js";
3
+ import { TirType } from "../../types/TirType.js";
4
+ import { ITirExpr } from "../ITirExpr.js";
5
+ import { TirExpr } from "../TirExpr.js";
6
+ import { ToIRTermCtx } from "../ToIRTermCtx.js";
7
+ export declare class TirLitFailExpr implements ITirExpr {
8
+ readonly range: SourceRange;
9
+ readonly type: TirType;
10
+ readonly isConstant: boolean;
11
+ constructor(range: SourceRange);
12
+ pretty(): string;
13
+ toString(): string;
14
+ clone(): TirExpr;
15
+ deps(): string[];
16
+ toIR(ctx: ToIRTermCtx): IRTerm;
17
+ }
@@ -0,0 +1,21 @@
1
+ import { IRError } from "../../../../IR/index.js";
2
+ import { void_t } from "../../program/stdScope/stdScope.js";
3
+ export class TirLitFailExpr {
4
+ range;
5
+ type = void_t;
6
+ isConstant = true;
7
+ constructor(range) {
8
+ this.range = range;
9
+ }
10
+ pretty() { return this.toString(); }
11
+ toString() {
12
+ return "fail";
13
+ }
14
+ clone() {
15
+ return new TirLitFailExpr(this.range.clone());
16
+ }
17
+ deps() { return []; }
18
+ toIR(ctx) {
19
+ return new IRError();
20
+ }
21
+ }
@@ -3,12 +3,15 @@ import { SourceRange } from "../../../../ast/Source/SourceRange.js";
3
3
  import { TirType } from "../../types/TirType.js";
4
4
  import { IRTerm } from "../../../../IR/index.js";
5
5
  import { ToIRTermCtx } from "../ToIRTermCtx.js";
6
+ import { TirExpr } from "../TirExpr.js";
6
7
  export declare class TirLitFalseExpr implements ITirExpr {
7
8
  readonly range: SourceRange;
8
9
  readonly type: TirType;
9
10
  readonly isConstant: boolean;
10
11
  constructor(range: SourceRange);
11
- clone(): TirLitFalseExpr;
12
+ pretty(): string;
13
+ toString(): string;
14
+ clone(): TirExpr;
12
15
  deps(): string[];
13
16
  toIR(ctx: ToIRTermCtx): IRTerm;
14
17
  }
@@ -7,6 +7,10 @@ export class TirLitFalseExpr {
7
7
  constructor(range) {
8
8
  this.range = range;
9
9
  }
10
+ pretty() { return this.toString(); }
11
+ toString() {
12
+ return "false";
13
+ }
10
14
  clone() {
11
15
  return new TirLitFalseExpr(this.range.clone());
12
16
  }
@@ -3,13 +3,16 @@ import { SourceRange } from "../../../../ast/Source/SourceRange.js";
3
3
  import { TirType } from "../../types/TirType.js";
4
4
  import { IRTerm } from "../../../../IR/index.js";
5
5
  import { ToIRTermCtx } from "../ToIRTermCtx.js";
6
+ import { TirExpr } from "../TirExpr.js";
6
7
  export declare class TirLitHexBytesExpr implements ITirExpr {
7
8
  readonly bytes: Uint8Array;
8
9
  readonly range: SourceRange;
9
10
  readonly type: TirType;
10
11
  readonly isConstant: boolean;
11
12
  constructor(bytes: Uint8Array, range: SourceRange);
12
- clone(): TirLitHexBytesExpr;
13
+ pretty(): string;
14
+ toString(): string;
15
+ clone(): TirExpr;
13
16
  deps(): string[];
14
17
  toIR(ctx: ToIRTermCtx): IRTerm;
15
18
  }
@@ -1,5 +1,6 @@
1
1
  import { bytes_t } from "../../program/stdScope/stdScope.js";
2
2
  import { IRConst } from "../../../../IR/index.js";
3
+ import { toHex } from "@harmoniclabs/uint8array-utils";
3
4
  export class TirLitHexBytesExpr {
4
5
  bytes;
5
6
  range;
@@ -9,6 +10,10 @@ export class TirLitHexBytesExpr {
9
10
  this.bytes = bytes;
10
11
  this.range = range;
11
12
  }
13
+ pretty() { return this.toString(); }
14
+ toString() {
15
+ return `#${toHex(this.bytes)}`;
16
+ }
12
17
  clone() {
13
18
  return new TirLitHexBytesExpr(new Uint8Array(this.bytes), this.range.clone());
14
19
  }
@@ -3,13 +3,16 @@ import { SourceRange } from "../../../../ast/Source/SourceRange.js";
3
3
  import { TirType } from "../../types/TirType.js";
4
4
  import { ToIRTermCtx } from "../ToIRTermCtx.js";
5
5
  import { IRTerm } from "../../../../IR/index.js";
6
+ import type { TirExpr } from "../TirExpr.js";
6
7
  export declare class TirLitIntExpr implements ITirExpr {
7
8
  readonly integer: bigint;
8
9
  readonly range: SourceRange;
9
10
  readonly type: TirType;
10
11
  readonly isConstant: boolean;
11
12
  constructor(integer: bigint, range: SourceRange);
12
- clone(): TirLitIntExpr;
13
+ pretty(): string;
14
+ toString(): string;
15
+ clone(): TirExpr;
13
16
  deps(): string[];
14
17
  toIR(ctx: ToIRTermCtx): IRTerm;
15
18
  }