@harmoniclabs/pebble 0.1.0-dev4 → 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.
- package/dist/IR/IRHash.d.ts +3 -3
- package/dist/IR/IRHash.js +47 -52
- package/dist/IR/IRNodes/IRApp.d.ts +12 -8
- package/dist/IR/IRNodes/IRApp.js +34 -20
- package/dist/IR/IRNodes/IRCase.d.ts +11 -7
- package/dist/IR/IRNodes/IRCase.js +33 -32
- package/dist/IR/IRNodes/IRConst.d.ts +7 -5
- package/dist/IR/IRNodes/IRConst.js +23 -13
- package/dist/IR/IRNodes/IRConstr.d.ts +11 -7
- package/dist/IR/IRNodes/IRConstr.js +34 -37
- package/dist/IR/IRNodes/IRDelayed.d.ts +12 -9
- package/dist/IR/IRNodes/IRDelayed.js +22 -18
- package/dist/IR/IRNodes/IRError.d.ts +9 -6
- package/dist/IR/IRNodes/IRError.js +12 -5
- package/dist/IR/IRNodes/IRForced.d.ts +9 -6
- package/dist/IR/IRNodes/IRForced.js +22 -18
- package/dist/IR/IRNodes/IRFunc.d.ts +14 -10
- package/dist/IR/IRNodes/IRFunc.js +35 -38
- package/dist/IR/IRNodes/IRHoisted.d.ts +16 -9
- package/dist/IR/IRNodes/IRHoisted.js +36 -18
- package/dist/IR/IRNodes/IRLetted.d.ts +14 -34
- package/dist/IR/IRNodes/IRLetted.js +65 -297
- package/dist/IR/IRNodes/IRNative/IRNativeTag.d.ts +0 -2
- package/dist/IR/IRNodes/IRNative/IRNativeTag.js +0 -4
- package/dist/IR/IRNodes/IRNative/index.d.ts +9 -8
- package/dist/IR/IRNodes/IRNative/index.js +55 -18
- package/dist/IR/IRNodes/IRNative/isForcedNative.d.ts +2 -0
- package/dist/IR/IRNodes/IRNative/isForcedNative.js +1 -1
- package/dist/IR/IRNodes/IRRecursive.d.ts +18 -10
- package/dist/IR/IRNodes/IRRecursive.js +36 -44
- package/dist/IR/IRNodes/IRSelfCall.d.ts +10 -24
- package/dist/IR/IRNodes/IRSelfCall.js +25 -87
- package/dist/IR/IRNodes/IRVar.d.ts +11 -19
- package/dist/IR/IRNodes/IRVar.js +26 -54
- package/dist/IR/IRNodes/utils/dependsByDbns.d.ts +1 -1
- package/dist/IR/IRNodes/utils/dependsByDbns.js +5 -11
- package/dist/IR/IRNodes/utils/hashVarSym.d.ts +1 -0
- package/dist/IR/IRNodes/utils/hashVarSym.js +37 -0
- package/dist/IR/IRNodes/utils/makeArrayLikeProxy.d.ts +2 -1
- package/dist/IR/IRTerm.d.ts +7 -0
- package/dist/IR/toUPLC/_internal/_modifyChildFromTo.js +3 -0
- package/dist/IR/toUPLC/_internal/findAll.js +2 -73
- package/dist/IR/toUPLC/_internal/getDebruijnInTerm.js +7 -34
- package/dist/IR/toUPLC/_internal/iterTree.js +3 -17
- package/dist/IR/toUPLC/common_hoisted.d.ts +2 -0
- package/dist/IR/toUPLC/common_hoisted.js +4 -0
- package/dist/IR/toUPLC/compileIRToUPLC.d.ts +1 -1
- package/dist/IR/toUPLC/compileIRToUPLC.js +91 -14
- package/dist/IR/toUPLC/ctx/ToUplcCtx.d.ts +16 -0
- package/dist/IR/toUPLC/ctx/ToUplcCtx.js +75 -0
- package/dist/IR/toUPLC/subRoutines/_comptimeDropN.d.ts +8 -0
- package/dist/IR/toUPLC/subRoutines/_comptimeDropN.js +95 -0
- package/dist/IR/toUPLC/subRoutines/handleHoistedAndReturnRoot/index.js +7 -54
- package/dist/IR/toUPLC/subRoutines/handleLetted/groupByScope.d.ts +6 -13
- package/dist/IR/toUPLC/subRoutines/handleLetted/groupByScope.js +67 -71
- package/dist/IR/toUPLC/subRoutines/handleLetted/index.js +44 -170
- package/dist/IR/toUPLC/subRoutines/handleRecursiveTerms.js +7 -3
- package/dist/IR/toUPLC/subRoutines/hoistForcedNatives.js +3 -2
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/InlineSingleUseCtx.d.ts +22 -0
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/InlineSingleUseCtx.js +59 -0
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/inlineSingleUseAndReturnRoot.d.ts +0 -0
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseAndReturnRoot/inlineSingleUseAndReturnRoot.js +217 -0
- package/dist/IR/toUPLC/subRoutines/markRecursiveHoistsAsForced.js +12 -49
- package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/expandFuncsAndReturnRoot.d.ts +1 -1
- package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/expandFuncsAndReturnRoot.js +11 -14
- package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/{index.d.ts → performUplcOptimizationsAndReturnRoot.d.ts} +0 -2
- package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/performUplcOptimizationsAndReturnRoot.js +151 -0
- package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/RemoveUnusedVarsCtx.d.ts +11 -0
- package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/RemoveUnusedVarsCtx.js +46 -0
- package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/removeUnusuedVarsAndReturnRoot.d.ts +2 -0
- package/dist/IR/toUPLC/subRoutines/removeUnusuedVarsAndReturnRoot/removeUnusuedVarsAndReturnRoot.js +80 -0
- package/dist/IR/toUPLC/subRoutines/replaceHoistedWithLetted.js +18 -11
- package/dist/IR/toUPLC/subRoutines/replaceNatives/nativeToIR.d.ts +43 -0
- package/dist/IR/toUPLC/subRoutines/replaceNatives/nativeToIR.js +255 -478
- package/dist/IR/toUPLC/subRoutines/rewriteNativesAppliedToConstantsAndReturnRoot.d.ts +2 -0
- package/dist/IR/toUPLC/subRoutines/rewriteNativesAppliedToConstantsAndReturnRoot.js +85 -0
- package/dist/IR/toUPLC/subRoutines/sanifyTree.js +1 -0
- package/dist/IR/toUPLC/utils/getApplicationTerms.d.ts +6 -0
- package/dist/IR/toUPLC/utils/getApplicationTerms.js +37 -0
- package/dist/IR/tree_utils/_ir_lazyChooseList.d.ts +2 -2
- package/dist/IR/tree_utils/_ir_lazyChooseList.js +4 -2
- package/dist/IR/tree_utils/_ir_lazyIfThenElse.d.ts +1 -1
- package/dist/IR/tree_utils/_ir_lazyIfThenElse.js +4 -2
- package/dist/IR/tree_utils/_ir_let.d.ts +2 -1
- package/dist/IR/tree_utils/_ir_let.js +6 -2
- package/dist/IR/utils/isClosedIRTerm.d.ts +1 -0
- package/dist/IR/utils/isClosedIRTerm.js +39 -25
- package/dist/IR/utils/positiveIntAsBytes.d.ts +1 -0
- package/dist/IR/utils/positiveIntAsBytes.js +4 -0
- package/dist/IR/utils/showIR.d.ts +10 -21
- package/dist/IR/utils/showIR.js +66 -64
- package/dist/ast/nodes/common/Identifier.d.ts +1 -0
- package/dist/ast/nodes/common/Identifier.js +3 -0
- package/dist/ast/nodes/expr/CaseExpr.d.ts +5 -5
- package/dist/ast/nodes/expr/ElemAccessExpr.d.ts +2 -2
- package/dist/ast/nodes/expr/ParentesizedExpr.d.ts +1 -1
- package/dist/ast/nodes/expr/PebbleExpr.d.ts +2 -1
- package/dist/ast/nodes/expr/PropAccessExpr.d.ts +3 -3
- package/dist/ast/nodes/expr/TernaryExpr.d.ts +3 -3
- package/dist/ast/nodes/expr/TypeConversionExpr.d.ts +2 -1
- package/dist/ast/nodes/expr/TypeConversionExpr.js +2 -0
- package/dist/ast/nodes/expr/binary/BinaryExpr.d.ts +42 -42
- package/dist/ast/nodes/expr/functions/CallExpr.d.ts +1 -1
- package/dist/ast/nodes/expr/functions/FuncExpr.d.ts +2 -1
- package/dist/ast/nodes/expr/functions/FuncExpr.js +6 -0
- package/dist/ast/nodes/expr/litteral/LitContextExpr.d.ts +6 -0
- package/dist/ast/nodes/expr/litteral/LitContextExpr.js +6 -0
- package/dist/ast/nodes/expr/litteral/LitFailExpr.d.ts +6 -0
- package/dist/ast/nodes/expr/litteral/LitFailExpr.js +6 -0
- package/dist/ast/nodes/expr/litteral/LitteralExpr.d.ts +3 -1
- package/dist/ast/nodes/expr/litteral/LitteralExpr.js +5 -1
- package/dist/ast/nodes/statements/AssertStmt.d.ts +2 -2
- package/dist/ast/nodes/statements/AssignmentStmt.d.ts +1 -1
- package/dist/ast/nodes/statements/BlockStmt.d.ts +1 -1
- package/dist/ast/nodes/statements/FailStmt.d.ts +1 -1
- package/dist/ast/nodes/statements/ForOfStmt.d.ts +4 -2
- package/dist/ast/nodes/statements/ForOfStmt.js +6 -0
- package/dist/ast/nodes/statements/ForStmt.d.ts +6 -4
- package/dist/ast/nodes/statements/ForStmt.js +6 -0
- package/dist/ast/nodes/statements/IfStmt.d.ts +8 -5
- package/dist/ast/nodes/statements/IfStmt.js +13 -0
- package/dist/ast/nodes/statements/MatchStmt.d.ts +13 -4
- package/dist/ast/nodes/statements/MatchStmt.js +22 -1
- package/dist/ast/nodes/statements/PebbleStmt.d.ts +2 -1
- package/dist/ast/nodes/statements/PebbleStmt.js +3 -1
- package/dist/ast/nodes/statements/ReturnStmt.d.ts +1 -1
- package/dist/ast/nodes/statements/WhileStmt.d.ts +4 -2
- package/dist/ast/nodes/statements/WhileStmt.js +6 -0
- package/dist/ast/nodes/statements/declarations/ContractDecl.d.ts +17 -0
- package/dist/ast/nodes/statements/declarations/ContractDecl.js +22 -0
- package/dist/ast/nodes/statements/declarations/VarDecl/ArrayLikeDeconstr.d.ts +1 -1
- package/dist/ast/nodes/statements/declarations/VarDecl/HasInit.d.ts +1 -1
- package/dist/ast/nodes/statements/declarations/VarDecl/NamedDeconstructVarDecl.d.ts +1 -1
- package/dist/ast/nodes/statements/declarations/VarDecl/SimpleVarDecl.d.ts +2 -1
- package/dist/ast/nodes/statements/declarations/VarDecl/SimpleVarDecl.js +6 -0
- package/dist/ast/nodes/statements/declarations/VarDecl/SingleDeconstructVarDecl.d.ts +1 -1
- package/dist/compiler/AstCompiler/AstCompiler.d.ts +6 -2
- package/dist/compiler/AstCompiler/AstCompiler.js +91 -24
- package/dist/compiler/AstCompiler/internal/_deriveContractBody/_deriveContractBody.d.ts +10 -0
- package/dist/compiler/AstCompiler/internal/_deriveContractBody/_deriveContractBody.js +777 -0
- package/dist/compiler/AstCompiler/internal/exprs/_compileBinaryExpr.js +1 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileExpr.js +1 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileLitteralExpr.js +8 -2
- package/dist/compiler/AstCompiler/internal/exprs/_compilePropAccessExpr.js +1 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileTypeConversionExpr.js +3 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileUnaryPrefixExpr.js +1 -1
- package/dist/compiler/AstCompiler/internal/statements/_compileAssignmentStmt.js +2 -2
- package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.d.ts +2 -2
- package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.js +48 -24
- package/dist/compiler/AstCompiler/internal/statements/_compileStatement.js +4 -1
- package/dist/compiler/AstCompiler/internal/statements/_compileVarStmt.js +2 -2
- package/dist/compiler/AstCompiler/internal/types/_compileDataEncodedConcreteType.js +1 -1
- package/dist/compiler/AstCompiler/internal/types/_compileSopEncodedConcreteType.js +4 -1
- package/dist/compiler/AstCompiler/scope/AstScope.js +4 -3
- package/dist/compiler/AstCompiler/utils/getPropAccessReturnType.js +6 -4
- package/dist/compiler/Compiler.js +3 -1
- package/dist/compiler/TirCompiler/compileTirProgram.js +3 -1
- package/dist/compiler/TirCompiler/expressify/ExpressifyCtx.d.ts +13 -3
- package/dist/compiler/TirCompiler/expressify/ExpressifyCtx.js +41 -37
- package/dist/compiler/TirCompiler/expressify/determineReassignedVariablesAndReturn.js +11 -2
- package/dist/compiler/TirCompiler/expressify/expressify.d.ts +2 -1
- package/dist/compiler/TirCompiler/expressify/expressify.js +82 -36
- package/dist/compiler/TirCompiler/expressify/expressifyForStmt.d.ts +2 -1
- package/dist/compiler/TirCompiler/expressify/expressifyForStmt.js +57 -8
- package/dist/compiler/TirCompiler/expressify/expressifyIfBranch.js +1 -1
- package/dist/compiler/TirCompiler/expressify/expressifyVarAssignmentStmt.js +1 -1
- package/dist/compiler/TirCompiler/expressify/expressifyVarDecl.js +1 -0
- package/dist/compiler/TirCompiler/expressify/expressifyVars.js +131 -9
- package/dist/compiler/TirCompiler/internal/_compileHoistedDeps.js +3 -1
- package/dist/compiler/io/IOutputStream.d.ts +1 -0
- package/dist/compiler/io/IOutputStream.js +18 -3
- package/dist/compiler/path/getAbsolutePath.d.ts +1 -0
- package/dist/compiler/path/getAbsolutePath.js +8 -5
- package/dist/compiler/tir/expressions/ITirExpr.d.ts +2 -0
- package/dist/compiler/tir/expressions/TirAssertAndContinueExpr.d.ts +4 -2
- package/dist/compiler/tir/expressions/TirAssertAndContinueExpr.js +16 -2
- package/dist/compiler/tir/expressions/TirCallExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirCallExpr.js +16 -1
- package/dist/compiler/tir/expressions/TirCaseExpr.d.ts +6 -1
- package/dist/compiler/tir/expressions/TirCaseExpr.js +103 -60
- package/dist/compiler/tir/expressions/TirElemAccessExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirElemAccessExpr.js +9 -1
- package/dist/compiler/tir/expressions/TirFailExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirFailExpr.js +9 -1
- package/dist/compiler/tir/expressions/TirFromDataExpr.d.ts +3 -2
- package/dist/compiler/tir/expressions/TirFromDataExpr.js +85 -56
- package/dist/compiler/tir/expressions/TirFuncExpr.d.ts +4 -10
- package/dist/compiler/tir/expressions/TirFuncExpr.js +30 -13
- package/dist/compiler/tir/expressions/TirHoistedExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirHoistedExpr.js +8 -0
- package/dist/compiler/tir/expressions/TirInlineClosedIR.d.ts +4 -1
- package/dist/compiler/tir/expressions/TirInlineClosedIR.js +8 -0
- package/dist/compiler/tir/expressions/TirLettedExpr.d.ts +5 -2
- package/dist/compiler/tir/expressions/TirLettedExpr.js +19 -4
- package/dist/compiler/tir/expressions/TirNativeFunc.d.ts +8 -5
- package/dist/compiler/tir/expressions/TirNativeFunc.js +50 -22
- package/dist/compiler/tir/expressions/TirParentesizedExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirParentesizedExpr.js +6 -0
- package/dist/compiler/tir/expressions/TirPropAccessExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirPropAccessExpr.js +9 -0
- package/dist/compiler/tir/expressions/TirTernaryExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirTernaryExpr.js +16 -5
- package/dist/compiler/tir/expressions/TirToDataExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirToDataExpr.js +56 -25
- package/dist/compiler/tir/expressions/TirTraceIfFalseExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirTraceIfFalseExpr.js +21 -4
- package/dist/compiler/tir/expressions/TirTypeConversionExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/TirTypeConversionExpr.js +9 -1
- package/dist/compiler/tir/expressions/TirVariableAccessExpr.d.ts +7 -3
- package/dist/compiler/tir/expressions/TirVariableAccessExpr.js +17 -7
- package/dist/compiler/tir/expressions/ToIRTermCtx.d.ts +16 -20
- package/dist/compiler/tir/expressions/ToIRTermCtx.js +67 -50
- package/dist/compiler/tir/expressions/binary/TirBinaryExpr.d.ts +40 -0
- package/dist/compiler/tir/expressions/binary/TirBinaryExpr.js +174 -3
- package/dist/compiler/tir/expressions/litteral/TirLitArrExpr.d.ts +4 -2
- package/dist/compiler/tir/expressions/litteral/TirLitArrExpr.js +8 -2
- package/dist/compiler/tir/expressions/litteral/TirLitFailExpr.d.ts +17 -0
- package/dist/compiler/tir/expressions/litteral/TirLitFailExpr.js +21 -0
- package/dist/compiler/tir/expressions/litteral/TirLitFalseExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitFalseExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitHexBytesExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitHexBytesExpr.js +5 -0
- package/dist/compiler/tir/expressions/litteral/TirLitIntExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitIntExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitNamedObjExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/litteral/TirLitNamedObjExpr.js +5 -0
- package/dist/compiler/tir/expressions/litteral/TirLitObjExpr.d.ts +3 -1
- package/dist/compiler/tir/expressions/litteral/TirLitObjExpr.js +5 -0
- package/dist/compiler/tir/expressions/litteral/TirLitStrExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitStrExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitThisExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitThisExpr.js +7 -3
- package/dist/compiler/tir/expressions/litteral/TirLitTrueExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitTrueExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitUndefExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitUndefExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitVoidExpr.d.ts +4 -1
- package/dist/compiler/tir/expressions/litteral/TirLitVoidExpr.js +4 -0
- package/dist/compiler/tir/expressions/litteral/TirLitteralExpr.d.ts +2 -1
- package/dist/compiler/tir/expressions/litteral/TirLitteralExpr.js +3 -1
- package/dist/compiler/tir/expressions/unary/TirUnaryExclamation.d.ts +4 -2
- package/dist/compiler/tir/expressions/unary/TirUnaryExclamation.js +8 -3
- package/dist/compiler/tir/expressions/unary/TirUnaryMinus.d.ts +4 -2
- package/dist/compiler/tir/expressions/unary/TirUnaryMinus.js +8 -2
- package/dist/compiler/tir/expressions/unary/TirUnaryPlus.d.ts +3 -1
- package/dist/compiler/tir/expressions/unary/TirUnaryPlus.js +6 -0
- package/dist/compiler/tir/expressions/unary/TirUnaryTilde.d.ts +4 -2
- package/dist/compiler/tir/expressions/unary/TirUnaryTilde.js +8 -2
- package/dist/compiler/tir/program/TypedProgram.d.ts +1 -0
- package/dist/compiler/tir/program/TypedProgram.js +9 -0
- package/dist/compiler/tir/program/stdScope/stdScope.js +126 -126
- package/dist/compiler/tir/statements/TirAssertStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirAssertStmt.js +10 -0
- package/dist/compiler/tir/statements/TirAssignmentStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirAssignmentStmt.js +8 -0
- package/dist/compiler/tir/statements/TirBlockStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirBlockStmt.js +16 -0
- package/dist/compiler/tir/statements/TirBreakStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirBreakStmt.js +8 -0
- package/dist/compiler/tir/statements/TirContinueStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirContinueStmt.js +8 -0
- package/dist/compiler/tir/statements/TirFailStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirFailStmt.js +8 -0
- package/dist/compiler/tir/statements/TirForOfStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirForOfStmt.js +14 -0
- package/dist/compiler/tir/statements/TirForStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirForStmt.js +21 -0
- package/dist/compiler/tir/statements/TirIfStmt.d.ts +3 -0
- package/dist/compiler/tir/statements/TirIfStmt.js +19 -0
- package/dist/compiler/tir/statements/TirMatchStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirMatchStmt.js +30 -0
- package/dist/compiler/tir/statements/TirReturnStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirReturnStmt.js +8 -0
- package/dist/compiler/tir/statements/TirStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirArrayLikeDeconstr.d.ts +2 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirArrayLikeDeconstr.js +30 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirNamedDeconstructVarDecl.d.ts +3 -1
- package/dist/compiler/tir/statements/TirVarDecl/TirNamedDeconstructVarDecl.js +28 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirSimpleVarDecl.d.ts +3 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirSimpleVarDecl.js +13 -0
- package/dist/compiler/tir/statements/TirVarDecl/TirSingleDeconstructVarDecl.d.ts +3 -1
- package/dist/compiler/tir/statements/TirVarDecl/TirSingleDeconstructVarDecl.js +28 -0
- package/dist/compiler/tir/statements/TirWhileStmt.d.ts +2 -0
- package/dist/compiler/tir/statements/TirWhileStmt.js +14 -0
- package/dist/compiler/tir/types/utils/canAssignTo.js +1 -1
- package/dist/diagnostics/DiagnosticEmitter.js +1 -1
- package/dist/diagnostics/diagnosticMessages.generated.d.ts +10 -1
- package/dist/diagnostics/diagnosticMessages.generated.js +20 -2
- package/dist/parser/Parser.d.ts +8 -3
- package/dist/parser/Parser.js +162 -30
- package/dist/tokenizer/Token.d.ts +81 -72
- package/dist/tokenizer/Token.js +82 -72
- package/dist/tokenizer/utils/tokenFromKeyword.js +32 -10
- package/dist/tokenizer/utils/tokenIsAlsoIdentifier.js +10 -0
- package/dist/utils/BitUtils/index.js +1 -1
- package/dist/utils/UPLCFlatUtils/index.js +1 -1
- package/package.json +2 -1
- package/dist/IR/IRNodes/utils/isClosedAtDbn.d.ts +0 -2
- package/dist/IR/IRNodes/utils/isClosedAtDbn.js +0 -22
- package/dist/IR/toUPLC/_internal/_irToUplc.d.ts +0 -9
- package/dist/IR/toUPLC/_internal/_irToUplc.js +0 -156
- package/dist/IR/toUPLC/subRoutines/handleLetted/incrementUnboundDbns.d.ts +0 -9
- package/dist/IR/toUPLC/subRoutines/handleLetted/incrementUnboundDbns.js +0 -73
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseApplications.d.ts +0 -1
- package/dist/IR/toUPLC/subRoutines/inlineSingleUseApplications.js +0 -12
- package/dist/IR/toUPLC/subRoutines/performUplcOptimizationsAndReturnRoot/index.js +0 -227
- package/dist/IR/tree_utils/_ir_apps.d.ts +0 -3
- 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
|
|
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
|
|
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
|
-
|
|
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/
|
|
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
|
-
|
|
12
|
+
pretty(): string;
|
|
13
|
+
toString(): string;
|
|
14
|
+
clone(): TirExpr;
|
|
12
15
|
deps(): string[];
|
|
13
16
|
toIR(ctx: ToIRTermCtx): IRTerm;
|
|
14
17
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
13
|
+
pretty(): string;
|
|
14
|
+
toString(): string;
|
|
15
|
+
clone(): TirExpr;
|
|
13
16
|
deps(): string[];
|
|
14
17
|
toIR(ctx: ToIRTermCtx): IRTerm;
|
|
15
18
|
}
|