redscript-mc 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/ROADMAP.md +145 -0
- package/dist/cli.js +0 -0
- package/dist/src/__tests__/compile-all.test.js +1 -0
- package/dist/src/__tests__/diagnostics.test.js +8 -11
- package/dist/src/__tests__/double.test.d.ts +7 -0
- package/dist/src/__tests__/double.test.js +464 -0
- package/dist/src/__tests__/e2e/for-in-array.test.d.ts +4 -0
- package/dist/src/__tests__/e2e/for-in-array.test.js +59 -0
- package/dist/src/__tests__/e2e/macros.test.js +7 -7
- package/dist/src/__tests__/e2e/stdlib-e2e.test.js +1411 -0
- package/dist/src/__tests__/fixed.test.d.ts +7 -0
- package/dist/src/__tests__/fixed.test.js +148 -0
- package/dist/src/__tests__/float-lint.test.d.ts +7 -0
- package/dist/src/__tests__/float-lint.test.js +96 -0
- package/dist/src/__tests__/float.test.d.ts +7 -0
- package/dist/src/__tests__/float.test.js +148 -0
- package/dist/src/__tests__/for-range.test.js +136 -0
- package/dist/src/__tests__/generics.test.js +4 -4
- package/dist/src/__tests__/impl.test.js +199 -0
- package/dist/src/__tests__/mc-integration.test.js +664 -0
- package/dist/src/__tests__/optimizer/constant_fold.test.js +105 -0
- package/dist/src/__tests__/optimizer/coroutine.test.js +3 -2
- package/dist/src/__tests__/parser.test.js +2 -2
- package/dist/src/__tests__/stdlib/calculus.test.d.ts +5 -0
- package/dist/src/__tests__/stdlib/calculus.test.js +123 -0
- package/dist/src/__tests__/stdlib/easing.test.d.ts +5 -0
- package/dist/src/__tests__/stdlib/easing.test.js +117 -0
- package/dist/src/__tests__/stdlib/geometry.test.d.ts +5 -0
- package/dist/src/__tests__/stdlib/geometry.test.js +163 -0
- package/dist/src/__tests__/stdlib/heap.test.d.ts +4 -0
- package/dist/src/__tests__/stdlib/heap.test.js +141 -0
- package/dist/src/__tests__/stdlib/list.test.d.ts +5 -0
- package/dist/src/__tests__/stdlib/list.test.js +134 -0
- package/dist/src/__tests__/stdlib/matrix.test.d.ts +5 -0
- package/dist/src/__tests__/stdlib/matrix.test.js +148 -0
- package/dist/src/__tests__/stdlib/pathfind.test.d.ts +4 -0
- package/dist/src/__tests__/stdlib/pathfind.test.js +167 -0
- package/dist/src/__tests__/stdlib/sort.test.d.ts +4 -0
- package/dist/src/__tests__/stdlib/sort.test.js +128 -0
- package/dist/src/__tests__/typechecker-strict.test.js +21 -21
- package/dist/src/ast/types.d.ts +7 -1
- package/dist/src/emit/compile.js +18 -1
- package/dist/src/emit/index.js +1 -1
- package/dist/src/events/types.js +1 -1
- package/dist/src/hir/lower.js +3 -1
- package/dist/src/hir/monomorphize.js +1 -1
- package/dist/src/hir/types.d.ts +5 -0
- package/dist/src/lexer/index.d.ts +1 -1
- package/dist/src/lexer/index.js +10 -1
- package/dist/src/lsp/main.js +0 -0
- package/dist/src/lsp/server.js +671 -28
- package/dist/src/mc-test/client.d.ts +13 -1
- package/dist/src/mc-test/client.js +29 -1
- package/dist/src/mir/lower.js +400 -17
- package/dist/src/optimizer/constant_fold.js +10 -6
- package/dist/src/optimizer/coroutine.js +90 -33
- package/dist/src/parser/index.d.ts +4 -0
- package/dist/src/parser/index.js +113 -28
- package/dist/src/typechecker/index.d.ts +8 -1
- package/dist/src/typechecker/index.js +61 -9
- package/docs/LANGUAGE_REFERENCE.md +302 -67
- package/docs/stdlib/README.md +54 -0
- package/docs/stdlib/advanced.md +276 -0
- package/docs/stdlib/bigint.md +285 -0
- package/docs/stdlib/bits.md +159 -0
- package/docs/stdlib/bossbar.md +101 -0
- package/docs/stdlib/calculus.md +141 -0
- package/docs/stdlib/color.md +125 -0
- package/docs/stdlib/combat.md +41 -0
- package/docs/stdlib/cooldown.md +48 -0
- package/docs/stdlib/easing.md +157 -0
- package/docs/stdlib/effects.md +101 -0
- package/docs/stdlib/expr.md +38 -0
- package/docs/stdlib/geometry.md +130 -0
- package/docs/stdlib/interactions.md +111 -0
- package/docs/stdlib/inventory.md +53 -0
- package/docs/stdlib/list.md +189 -0
- package/docs/stdlib/math.md +334 -0
- package/docs/stdlib/math_hp.md +185 -0
- package/docs/stdlib/matrix.md +123 -0
- package/docs/stdlib/mobs.md +131 -0
- package/docs/stdlib/noise.md +103 -0
- package/docs/stdlib/parabola.md +119 -0
- package/docs/stdlib/particles.md +123 -0
- package/docs/stdlib/physics.md +148 -0
- package/docs/stdlib/player.md +43 -0
- package/docs/stdlib/quaternion.md +159 -0
- package/docs/stdlib/random.md +86 -0
- package/docs/stdlib/sets.md +68 -0
- package/docs/stdlib/signal.md +141 -0
- package/docs/stdlib/spawn.md +65 -0
- package/docs/stdlib/strings.md +17 -0
- package/docs/stdlib/tags.md +117 -0
- package/docs/stdlib/teams.md +87 -0
- package/docs/stdlib/timer.md +126 -0
- package/docs/stdlib/vec.md +193 -0
- package/docs/stdlib/world.md +151 -0
- package/editors/vscode/build.mjs +31 -12
- package/editors/vscode/out/extension.js +3060 -143
- package/editors/vscode/package-lock.json +3 -3
- package/editors/vscode/package.json +1 -1
- package/editors/vscode/src/extension.ts +11 -6
- package/examples/readme-demo.mcrs +4 -4
- package/package.json +1 -1
- package/scripts/postbuild.js +20 -0
- package/src/__tests__/compile-all.test.ts +3 -2
- package/src/__tests__/diagnostics.test.ts +8 -10
- package/src/__tests__/double.test.ts +478 -0
- package/src/__tests__/e2e/macros.test.ts +7 -7
- package/src/__tests__/e2e/stdlib-e2e.test.ts +1686 -0
- package/src/__tests__/fixed.test.ts +159 -0
- package/src/__tests__/fixtures/coroutine-mc-test.mcrs +58 -0
- package/src/__tests__/fixtures/for-range.mcrs +15 -0
- package/src/__tests__/fixtures/heap-sort-mc-test.mcrs +87 -0
- package/src/__tests__/fixtures/impl-test.mcrs +13 -44
- package/src/__tests__/fixtures/stdlib-extra-test.mcrs +226 -0
- package/src/__tests__/fixtures/stdlib-math-integration.mcrs +28 -0
- package/src/__tests__/fixtures/stdlib-math-test.mcrs +53 -0
- package/src/__tests__/float-lint.test.ts +102 -0
- package/src/__tests__/float.test.ts +158 -0
- package/src/__tests__/for-range.test.ts +149 -0
- package/src/__tests__/generics.test.ts +4 -4
- package/src/__tests__/impl.test.ts +207 -0
- package/src/__tests__/mc-integration.test.ts +706 -0
- package/src/__tests__/optimizer/constant_fold.test.ts +115 -0
- package/src/__tests__/optimizer/coroutine.test.ts +3 -2
- package/src/__tests__/parser.test.ts +2 -2
- package/src/__tests__/stdlib/calculus.test.ts +99 -0
- package/src/__tests__/stdlib/easing.test.ts +97 -0
- package/src/__tests__/stdlib/geometry.test.ts +171 -0
- package/src/__tests__/stdlib/heap.test.ts +121 -0
- package/src/__tests__/stdlib/list.test.ts +117 -0
- package/src/__tests__/stdlib/matrix.test.ts +140 -0
- package/src/__tests__/stdlib/pathfind.test.ts +151 -0
- package/src/__tests__/stdlib/sort.test.ts +106 -0
- package/src/__tests__/typechecker-strict.test.ts +21 -21
- package/src/ast/types.ts +3 -2
- package/src/emit/compile.ts +21 -1
- package/src/emit/index.ts +1 -1
- package/src/events/types.ts +1 -1
- package/src/examples/tutorial_01_hello.mcrs +63 -0
- package/src/examples/tutorial_02_variables.mcrs +157 -0
- package/src/examples/tutorial_03_functions_structs.mcrs +162 -0
- package/src/examples/tutorial_04_selectors.mcrs +139 -0
- package/src/examples/tutorial_05_decorators.mcrs +131 -0
- package/src/examples/tutorial_06_math_particles.mcrs +123 -0
- package/src/examples/tutorial_07_random.mcrs +142 -0
- package/src/examples/tutorial_08_coroutine.mcrs +163 -0
- package/src/examples/tutorial_09_precision.mcrs +154 -0
- package/src/examples/tutorial_10_kill_race.mcrs +289 -0
- package/src/hir/lower.ts +4 -1
- package/src/hir/monomorphize.ts +1 -1
- package/src/hir/types.ts +2 -0
- package/src/lexer/index.ts +11 -2
- package/src/lsp/server.ts +667 -28
- package/src/mc-test/client.ts +32 -1
- package/src/mir/lower.ts +405 -19
- package/src/optimizer/constant_fold.ts +11 -6
- package/src/optimizer/coroutine.ts +89 -29
- package/src/parser/index.ts +113 -28
- package/src/stdlib/advanced.mcrs +47 -0
- package/src/stdlib/bigint.mcrs +124 -0
- package/src/stdlib/calculus.mcrs +150 -0
- package/src/stdlib/color.mcrs +102 -82
- package/src/stdlib/expr.mcrs +117 -0
- package/src/stdlib/geometry.mcrs +89 -0
- package/src/stdlib/heap.mcrs +175 -0
- package/src/stdlib/list.mcrs +99 -0
- package/src/stdlib/math.mcrs +121 -5
- package/src/stdlib/math_hp.mcrs +452 -0
- package/src/stdlib/parabola.mcrs +160 -0
- package/src/stdlib/particles.mcrs +69 -0
- package/src/stdlib/pathfind.mcrs +321 -0
- package/src/stdlib/quaternion.mcrs +192 -0
- package/src/stdlib/random.mcrs +46 -1
- package/src/stdlib/signal.mcrs +223 -0
- package/src/stdlib/sort.mcrs +109 -0
- package/src/stdlib/world.mcrs +24 -0
- package/src/typechecker/index.ts +73 -10
- package/dist/__tests__/cli.test.js +0 -278
- package/dist/__tests__/codegen.test.js +0 -152
- package/dist/__tests__/compile-all.test.d.ts +0 -10
- package/dist/__tests__/compile-all.test.js +0 -108
- package/dist/__tests__/dce.test.d.ts +0 -1
- package/dist/__tests__/dce.test.js +0 -138
- package/dist/__tests__/diagnostics.test.d.ts +0 -4
- package/dist/__tests__/diagnostics.test.js +0 -149
- package/dist/__tests__/e2e.test.d.ts +0 -6
- package/dist/__tests__/e2e.test.js +0 -1847
- package/dist/__tests__/entity-types.test.d.ts +0 -1
- package/dist/__tests__/entity-types.test.js +0 -203
- package/dist/__tests__/formatter.test.d.ts +0 -1
- package/dist/__tests__/formatter.test.js +0 -40
- package/dist/__tests__/lexer.test.d.ts +0 -1
- package/dist/__tests__/lexer.test.js +0 -343
- package/dist/__tests__/lowering.test.d.ts +0 -1
- package/dist/__tests__/lowering.test.js +0 -1015
- package/dist/__tests__/macro.test.d.ts +0 -8
- package/dist/__tests__/macro.test.js +0 -305
- package/dist/__tests__/mc-integration.test.d.ts +0 -12
- package/dist/__tests__/mc-integration.test.js +0 -819
- package/dist/__tests__/mc-syntax.test.d.ts +0 -1
- package/dist/__tests__/mc-syntax.test.js +0 -124
- package/dist/__tests__/nbt.test.d.ts +0 -1
- package/dist/__tests__/nbt.test.js +0 -82
- package/dist/__tests__/optimizer-advanced.test.d.ts +0 -1
- package/dist/__tests__/optimizer-advanced.test.js +0 -124
- package/dist/__tests__/optimizer.test.d.ts +0 -1
- package/dist/__tests__/optimizer.test.js +0 -149
- package/dist/__tests__/parser.test.d.ts +0 -1
- package/dist/__tests__/parser.test.js +0 -807
- package/dist/__tests__/repl.test.d.ts +0 -1
- package/dist/__tests__/repl.test.js +0 -27
- package/dist/__tests__/runtime.test.d.ts +0 -1
- package/dist/__tests__/runtime.test.js +0 -289
- package/dist/__tests__/stdlib-advanced.test.d.ts +0 -4
- package/dist/__tests__/stdlib-advanced.test.js +0 -378
- package/dist/__tests__/stdlib-bigint.test.d.ts +0 -7
- package/dist/__tests__/stdlib-bigint.test.js +0 -428
- package/dist/__tests__/stdlib-math.test.d.ts +0 -7
- package/dist/__tests__/stdlib-math.test.js +0 -352
- package/dist/__tests__/stdlib-vec.test.d.ts +0 -4
- package/dist/__tests__/stdlib-vec.test.js +0 -264
- package/dist/__tests__/structure-optimizer.test.d.ts +0 -1
- package/dist/__tests__/structure-optimizer.test.js +0 -33
- package/dist/__tests__/typechecker.test.d.ts +0 -1
- package/dist/__tests__/typechecker.test.js +0 -552
- package/dist/__tests__/var-allocator.test.d.ts +0 -1
- package/dist/__tests__/var-allocator.test.js +0 -69
- package/dist/ast/types.d.ts +0 -514
- package/dist/ast/types.js +0 -9
- package/dist/builtins/metadata.d.ts +0 -36
- package/dist/builtins/metadata.js +0 -1014
- package/dist/cli.d.ts +0 -11
- package/dist/codegen/cmdblock/index.d.ts +0 -26
- package/dist/codegen/cmdblock/index.js +0 -45
- package/dist/codegen/mcfunction/index.d.ts +0 -40
- package/dist/codegen/mcfunction/index.js +0 -606
- package/dist/codegen/structure/index.d.ts +0 -24
- package/dist/codegen/structure/index.js +0 -279
- package/dist/codegen/var-allocator.d.ts +0 -45
- package/dist/codegen/var-allocator.js +0 -104
- package/dist/compile.d.ts +0 -68
- package/dist/data/arena/function/__load.mcfunction +0 -6
- package/dist/data/arena/function/__tick.mcfunction +0 -2
- package/dist/data/arena/function/announce_leaders/else_1.mcfunction +0 -3
- package/dist/data/arena/function/announce_leaders/foreach_0/merge_2.mcfunction +0 -1
- package/dist/data/arena/function/announce_leaders/foreach_0/then_0.mcfunction +0 -3
- package/dist/data/arena/function/announce_leaders/foreach_0.mcfunction +0 -7
- package/dist/data/arena/function/announce_leaders/foreach_1/merge_2.mcfunction +0 -1
- package/dist/data/arena/function/announce_leaders/foreach_1/then_0.mcfunction +0 -4
- package/dist/data/arena/function/announce_leaders/foreach_1.mcfunction +0 -6
- package/dist/data/arena/function/announce_leaders/merge_2.mcfunction +0 -1
- package/dist/data/arena/function/announce_leaders/then_0.mcfunction +0 -4
- package/dist/data/arena/function/announce_leaders.mcfunction +0 -6
- package/dist/data/arena/function/arena_tick/merge_2.mcfunction +0 -1
- package/dist/data/arena/function/arena_tick/then_0.mcfunction +0 -4
- package/dist/data/arena/function/arena_tick.mcfunction +0 -11
- package/dist/data/capture_the_flag/function/add_to_team.mcfunction +0 -5
- package/dist/data/capture_the_flag/function/angry_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/assign_teams.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/assign_teams__foreach_t1.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__else_2.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__merge_1.mcfunction +0 -3
- package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__then_0.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/barrier_wall.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/buff_all.mcfunction +0 -22
- package/dist/data/capture_the_flag/function/check_flag_capture.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0__merge_1.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0__then_0.mcfunction +0 -7
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1__merge_1.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1__then_0.mcfunction +0 -7
- package/dist/data/capture_the_flag/function/check_flag_pickup.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0__merge_1.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0__then_0.mcfunction +0 -7
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1__merge_1.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1__then_0.mcfunction +0 -7
- package/dist/data/capture_the_flag/function/check_win.mcfunction +0 -4
- package/dist/data/capture_the_flag/function/cleanup_teams.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/clear_area.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/clear_effect.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/clear_effects.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/clear_inventory.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/create_blue_team.mcfunction +0 -10
- package/dist/data/capture_the_flag/function/create_green_team.mcfunction +0 -10
- package/dist/data/capture_the_flag/function/create_red_team.mcfunction +0 -10
- package/dist/data/capture_the_flag/function/create_team.mcfunction +0 -8
- package/dist/data/capture_the_flag/function/create_yellow_team.mcfunction +0 -10
- package/dist/data/capture_the_flag/function/disable_fire_spread.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/disable_keep_inventory.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/disable_mob_griefing.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/distance_to.mcfunction +0 -6
- package/dist/data/capture_the_flag/function/distance_to__const_0_0_0_0.mcfunction +0 -5
- package/dist/data/capture_the_flag/function/enable_keep_inventory.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/end_game.mcfunction +0 -6
- package/dist/data/capture_the_flag/function/end_game__else_2.mcfunction +0 -3
- package/dist/data/capture_the_flag/function/end_game__foreach_t7.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/end_game__merge_1.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/end_game__then_0.mcfunction +0 -3
- package/dist/data/capture_the_flag/function/end_sparkles_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/explosion_effect.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/flames.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/game_tick.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/give_kit_archer.mcfunction +0 -6
- package/dist/data/capture_the_flag/function/give_kit_mage.mcfunction +0 -5
- package/dist/data/capture_the_flag/function/give_kit_warrior.mcfunction +0 -6
- package/dist/data/capture_the_flag/function/glass_box.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/glow.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/happy_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/hearts_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/init.mcfunction +0 -11
- package/dist/data/capture_the_flag/function/invisible.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/jump.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/load.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/night_vision.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/place_flags.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/portal_effect.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/regen.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/remove_from_teams.mcfunction +0 -3
- package/dist/data/capture_the_flag/function/remove_item.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/resistance.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_day.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_easy.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_hard.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_midnight.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_night.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_noon.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_normal.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/set_peaceful.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/setup_four_teams.mcfunction +0 -4
- package/dist/data/capture_the_flag/function/setup_two_teams.mcfunction +0 -2
- package/dist/data/capture_the_flag/function/slow_fall.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/smoke.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/sparkles_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/speed.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/start_game.mcfunction +0 -15
- package/dist/data/capture_the_flag/function/start_game__foreach_t10.mcfunction +0 -4
- package/dist/data/capture_the_flag/function/strength.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/totem_at.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/weather_clear.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/weather_rain.mcfunction +0 -1
- package/dist/data/capture_the_flag/function/weather_thunder.mcfunction +0 -1
- package/dist/data/counter/function/__load.mcfunction +0 -5
- package/dist/data/counter/function/__tick.mcfunction +0 -2
- package/dist/data/counter/function/counter_tick/merge_2.mcfunction +0 -1
- package/dist/data/counter/function/counter_tick/then_0.mcfunction +0 -3
- package/dist/data/counter/function/counter_tick.mcfunction +0 -11
- package/dist/data/gcd2/function/__load.mcfunction +0 -3
- package/dist/data/gcd2/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/gcd2/function/abs/then_0.mcfunction +0 -5
- package/dist/data/gcd2/function/abs.mcfunction +0 -7
- package/dist/data/gcd2/function/gcd/loop_body_1.mcfunction +0 -7
- package/dist/data/gcd2/function/gcd/loop_check_0.mcfunction +0 -5
- package/dist/data/gcd2/function/gcd/loop_exit_2.mcfunction +0 -3
- package/dist/data/gcd2/function/gcd.mcfunction +0 -14
- package/dist/data/gcd3/function/__load.mcfunction +0 -3
- package/dist/data/gcd3/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/gcd3/function/abs/then_0.mcfunction +0 -5
- package/dist/data/gcd3/function/abs.mcfunction +0 -7
- package/dist/data/gcd3/function/gcd/loop_body_1.mcfunction +0 -7
- package/dist/data/gcd3/function/gcd/loop_check_0.mcfunction +0 -5
- package/dist/data/gcd3/function/gcd/loop_exit_2.mcfunction +0 -3
- package/dist/data/gcd3/function/gcd.mcfunction +0 -14
- package/dist/data/gcd3/function/test.mcfunction +0 -7
- package/dist/data/gcd3nm/function/__load.mcfunction +0 -3
- package/dist/data/gcd3nm/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/gcd3nm/function/abs/then_0.mcfunction +0 -5
- package/dist/data/gcd3nm/function/abs.mcfunction +0 -7
- package/dist/data/gcd3nm/function/gcd/loop_body_1.mcfunction +0 -7
- package/dist/data/gcd3nm/function/gcd/loop_check_0.mcfunction +0 -5
- package/dist/data/gcd3nm/function/gcd/loop_exit_2.mcfunction +0 -3
- package/dist/data/gcd3nm/function/gcd.mcfunction +0 -14
- package/dist/data/gcd3nm/function/test.mcfunction +0 -7
- package/dist/data/gcd_test/function/__load.mcfunction +0 -3
- package/dist/data/gcd_test/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/gcd_test/function/abs/then_0.mcfunction +0 -5
- package/dist/data/gcd_test/function/abs.mcfunction +0 -7
- package/dist/data/gcd_test/function/gcd/loop_body_1.mcfunction +0 -7
- package/dist/data/gcd_test/function/gcd/loop_check_0.mcfunction +0 -5
- package/dist/data/gcd_test/function/gcd/loop_exit_2.mcfunction +0 -3
- package/dist/data/gcd_test/function/gcd.mcfunction +0 -14
- package/dist/data/hunger_games/function/angry_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/barrier_wall.mcfunction +0 -1
- package/dist/data/hunger_games/function/buff_all.mcfunction +0 -22
- package/dist/data/hunger_games/function/check_alive.mcfunction +0 -3
- package/dist/data/hunger_games/function/check_alive__foreach_t3.mcfunction +0 -10
- package/dist/data/hunger_games/function/check_alive__foreach_t3__merge_1.mcfunction +0 -1
- package/dist/data/hunger_games/function/check_alive__foreach_t3__then_0.mcfunction +0 -5
- package/dist/data/hunger_games/function/check_border_damage.mcfunction +0 -1
- package/dist/data/hunger_games/function/check_border_damage__foreach_t0.mcfunction +0 -1
- package/dist/data/hunger_games/function/clear_area.mcfunction +0 -1
- package/dist/data/hunger_games/function/clear_effect.mcfunction +0 -1
- package/dist/data/hunger_games/function/clear_effects.mcfunction +0 -1
- package/dist/data/hunger_games/function/countdown_tick.mcfunction +0 -1
- package/dist/data/hunger_games/function/create_health_bar.mcfunction +0 -24
- package/dist/data/hunger_games/function/create_progress_bar.mcfunction +0 -24
- package/dist/data/hunger_games/function/create_progress_bar__const_0_0_0.mcfunction +0 -21
- package/dist/data/hunger_games/function/create_timer_bar.mcfunction +0 -30
- package/dist/data/hunger_games/function/declare_winner.mcfunction +0 -13
- package/dist/data/hunger_games/function/disable_fire_spread.mcfunction +0 -1
- package/dist/data/hunger_games/function/disable_keep_inventory.mcfunction +0 -1
- package/dist/data/hunger_games/function/disable_mob_griefing.mcfunction +0 -1
- package/dist/data/hunger_games/function/enable_keep_inventory.mcfunction +0 -1
- package/dist/data/hunger_games/function/end_game_no_winner.mcfunction +0 -3
- package/dist/data/hunger_games/function/end_sparkles_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/explosion_effect.mcfunction +0 -1
- package/dist/data/hunger_games/function/flames.mcfunction +0 -1
- package/dist/data/hunger_games/function/game_tick.mcfunction +0 -1
- package/dist/data/hunger_games/function/glass_box.mcfunction +0 -2
- package/dist/data/hunger_games/function/glow.mcfunction +0 -1
- package/dist/data/hunger_games/function/happy_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/hearts_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/hide_bar.mcfunction +0 -4
- package/dist/data/hunger_games/function/init.mcfunction +0 -7
- package/dist/data/hunger_games/function/invisible.mcfunction +0 -1
- package/dist/data/hunger_games/function/jump.mcfunction +0 -1
- package/dist/data/hunger_games/function/load.mcfunction +0 -1
- package/dist/data/hunger_games/function/main_game_tick.mcfunction +0 -4
- package/dist/data/hunger_games/function/night_vision.mcfunction +0 -1
- package/dist/data/hunger_games/function/on_player_death.mcfunction +0 -14
- package/dist/data/hunger_games/function/portal_effect.mcfunction +0 -1
- package/dist/data/hunger_games/function/regen.mcfunction +0 -1
- package/dist/data/hunger_games/function/remove_bar.mcfunction +0 -3
- package/dist/data/hunger_games/function/remove_bar__const_0.mcfunction +0 -2
- package/dist/data/hunger_games/function/reset_game.mcfunction +0 -3
- package/dist/data/hunger_games/function/reset_game__foreach_t0.mcfunction +0 -9
- package/dist/data/hunger_games/function/resistance.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_day.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_easy.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_hard.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_midnight.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_night.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_noon.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_normal.mcfunction +0 -1
- package/dist/data/hunger_games/function/set_peaceful.mcfunction +0 -1
- package/dist/data/hunger_games/function/show_bar.mcfunction +0 -4
- package/dist/data/hunger_games/function/shrink_border.mcfunction +0 -1
- package/dist/data/hunger_games/function/slow_fall.mcfunction +0 -1
- package/dist/data/hunger_games/function/smoke.mcfunction +0 -1
- package/dist/data/hunger_games/function/sparkles_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/speed.mcfunction +0 -1
- package/dist/data/hunger_games/function/start_countdown.mcfunction +0 -3
- package/dist/data/hunger_games/function/start_countdown__foreach_t0.mcfunction +0 -16
- package/dist/data/hunger_games/function/start_game.mcfunction +0 -4
- package/dist/data/hunger_games/function/start_game__foreach_t3.mcfunction +0 -4
- package/dist/data/hunger_games/function/strength.mcfunction +0 -1
- package/dist/data/hunger_games/function/totem_at.mcfunction +0 -1
- package/dist/data/hunger_games/function/update_bar.mcfunction +0 -5
- package/dist/data/hunger_games/function/update_bar__const_0_0.mcfunction +0 -3
- package/dist/data/hunger_games/function/update_bar_color.mcfunction +0 -7
- package/dist/data/hunger_games/function/update_bar_color__else_2.mcfunction +0 -5
- package/dist/data/hunger_games/function/update_bar_color__else_5.mcfunction +0 -4
- package/dist/data/hunger_games/function/update_bar_color__merge_1.mcfunction +0 -1
- package/dist/data/hunger_games/function/update_bar_color__merge_4.mcfunction +0 -1
- package/dist/data/hunger_games/function/update_bar_color__then_0.mcfunction +0 -4
- package/dist/data/hunger_games/function/update_bar_color__then_3.mcfunction +0 -4
- package/dist/data/hunger_games/function/weather_clear.mcfunction +0 -1
- package/dist/data/hunger_games/function/weather_rain.mcfunction +0 -1
- package/dist/data/hunger_games/function/weather_thunder.mcfunction +0 -1
- package/dist/data/isqrttest/function/__load.mcfunction +0 -6
- package/dist/data/isqrttest/function/isqrt/loop_body_4.mcfunction +0 -12
- package/dist/data/isqrttest/function/isqrt/loop_check_3.mcfunction +0 -5
- package/dist/data/isqrttest/function/isqrt/loop_exit_5.mcfunction +0 -3
- package/dist/data/isqrttest/function/isqrt/merge_2.mcfunction +0 -4
- package/dist/data/isqrttest/function/isqrt/merge_8.mcfunction +0 -6
- package/dist/data/isqrttest/function/isqrt/then_0.mcfunction +0 -3
- package/dist/data/isqrttest/function/isqrt/then_6.mcfunction +0 -3
- package/dist/data/isqrttest/function/isqrt.mcfunction +0 -7
- package/dist/data/isqrttest/function/test.mcfunction +0 -6
- package/dist/data/macrotest/function/get_element.mcfunction +0 -2
- package/dist/data/macrotest/function/load.mcfunction +0 -1
- package/dist/data/macrotest/function/test_dynamic_index.mcfunction +0 -2
- package/dist/data/mathdemo/function/__load.mcfunction +0 -2
- package/dist/data/mathdemo/function/_atan_init.mcfunction +0 -4
- package/dist/data/mathdemo/function/_math_init.mcfunction +0 -4
- package/dist/data/mathdemo/function/add2d_x.mcfunction +0 -5
- package/dist/data/mathdemo/function/add2d_y.mcfunction +0 -5
- package/dist/data/mathdemo/function/add3d_x.mcfunction +0 -5
- package/dist/data/mathdemo/function/add3d_y.mcfunction +0 -5
- package/dist/data/mathdemo/function/add3d_z.mcfunction +0 -5
- package/dist/data/mathdemo/function/air_drag_fx.mcfunction +0 -2
- package/dist/data/mathdemo/function/apply_drag.mcfunction +0 -8
- package/dist/data/mathdemo/function/apply_gravity.mcfunction +0 -6
- package/dist/data/mathdemo/function/approx_eq.mcfunction +0 -10
- package/dist/data/mathdemo/function/approx_eq__merge_1.mcfunction +0 -3
- package/dist/data/mathdemo/function/approx_eq__merge_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/approx_eq__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/approx_eq__then_2.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed.mcfunction +0 -6
- package/dist/data/mathdemo/function/atan2_fixed__else_30.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__loop_body_26.mcfunction +0 -21
- package/dist/data/mathdemo/function/atan2_fixed__loop_exit_27.mcfunction +0 -5
- package/dist/data/mathdemo/function/atan2_fixed__loop_header_25.mcfunction +0 -3
- package/dist/data/mathdemo/function/atan2_fixed__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_10.mcfunction +0 -5
- package/dist/data/mathdemo/function/atan2_fixed__merge_12.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__merge_16.mcfunction +0 -5
- package/dist/data/mathdemo/function/atan2_fixed__merge_18.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_20.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_22.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_24.mcfunction +0 -3
- package/dist/data/mathdemo/function/atan2_fixed__merge_29.mcfunction +0 -1
- package/dist/data/mathdemo/function/atan2_fixed__merge_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_32.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_34.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__merge_36.mcfunction +0 -3
- package/dist/data/mathdemo/function/atan2_fixed__merge_40.mcfunction +0 -3
- package/dist/data/mathdemo/function/atan2_fixed__merge_6.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_11.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_15.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_17.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_19.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_2.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_21.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_23.mcfunction +0 -5
- package/dist/data/mathdemo/function/atan2_fixed__then_28.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_31.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_33.mcfunction +0 -4
- package/dist/data/mathdemo/function/atan2_fixed__then_35.mcfunction +0 -1
- package/dist/data/mathdemo/function/atan2_fixed__then_39.mcfunction +0 -3
- package/dist/data/mathdemo/function/atan2_fixed__then_5.mcfunction +0 -2
- package/dist/data/mathdemo/function/atan2_fixed__then_9.mcfunction +0 -4
- package/dist/data/mathdemo/function/bounce_v.mcfunction +0 -10
- package/dist/data/mathdemo/function/cbrt_fx.mcfunction +0 -5
- package/dist/data/mathdemo/function/cbrt_fx__loop_body_6.mcfunction +0 -7
- package/dist/data/mathdemo/function/cbrt_fx__loop_exit_7.mcfunction +0 -1
- package/dist/data/mathdemo/function/cbrt_fx__loop_header_5.mcfunction +0 -4
- package/dist/data/mathdemo/function/cbrt_fx__merge_1.mcfunction +0 -8
- package/dist/data/mathdemo/function/cbrt_fx__merge_11.mcfunction +0 -5
- package/dist/data/mathdemo/function/cbrt_fx__merge_13.mcfunction +0 -4
- package/dist/data/mathdemo/function/cbrt_fx__merge_4.mcfunction +0 -2
- package/dist/data/mathdemo/function/cbrt_fx__merge_9.mcfunction +0 -13
- package/dist/data/mathdemo/function/cbrt_fx__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/cbrt_fx__then_10.mcfunction +0 -2
- package/dist/data/mathdemo/function/cbrt_fx__then_12.mcfunction +0 -2
- package/dist/data/mathdemo/function/cbrt_fx__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/cbrt_fx__then_8.mcfunction +0 -2
- package/dist/data/mathdemo/function/ceil_div.mcfunction +0 -9
- package/dist/data/mathdemo/function/chebyshev.mcfunction +0 -14
- package/dist/data/mathdemo/function/chebyshev3d.mcfunction +0 -19
- package/dist/data/mathdemo/function/chebyshev3d__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__merge_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__merge_5.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__merge_7.mcfunction +0 -3
- package/dist/data/mathdemo/function/chebyshev3d__merge_9.mcfunction +0 -1
- package/dist/data/mathdemo/function/chebyshev3d__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__then_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__then_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev3d__then_6.mcfunction +0 -2
- package/dist/data/mathdemo/function/chebyshev3d__then_8.mcfunction +0 -2
- package/dist/data/mathdemo/function/chebyshev__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev__merge_3.mcfunction +0 -3
- package/dist/data/mathdemo/function/chebyshev__merge_5.mcfunction +0 -1
- package/dist/data/mathdemo/function/chebyshev__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev__then_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/chebyshev__then_4.mcfunction +0 -1
- package/dist/data/mathdemo/function/circular_x.mcfunction +0 -14
- package/dist/data/mathdemo/function/circular_z.mcfunction +0 -14
- package/dist/data/mathdemo/function/clamp_velocity.mcfunction +0 -5
- package/dist/data/mathdemo/function/clamp_velocity__merge_1.mcfunction +0 -5
- package/dist/data/mathdemo/function/clamp_velocity__merge_4.mcfunction +0 -1
- package/dist/data/mathdemo/function/clamp_velocity__then_0.mcfunction +0 -1
- package/dist/data/mathdemo/function/clamp_velocity__then_3.mcfunction +0 -3
- package/dist/data/mathdemo/function/combinations.mcfunction +0 -6
- package/dist/data/mathdemo/function/combinations__loop_body_9.mcfunction +0 -15
- package/dist/data/mathdemo/function/combinations__loop_exit_10.mcfunction +0 -1
- package/dist/data/mathdemo/function/combinations__loop_header_8.mcfunction +0 -3
- package/dist/data/mathdemo/function/combinations__merge_1.mcfunction +0 -3
- package/dist/data/mathdemo/function/combinations__merge_4.mcfunction +0 -6
- package/dist/data/mathdemo/function/combinations__merge_7.mcfunction +0 -3
- package/dist/data/mathdemo/function/combinations__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/combinations__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/combinations__then_6.mcfunction +0 -4
- package/dist/data/mathdemo/function/cos_fixed.mcfunction +0 -7
- package/dist/data/mathdemo/function/cross2d.mcfunction +0 -11
- package/dist/data/mathdemo/function/cross3d_x.mcfunction +0 -11
- package/dist/data/mathdemo/function/cross3d_y.mcfunction +0 -11
- package/dist/data/mathdemo/function/cross3d_z.mcfunction +0 -11
- package/dist/data/mathdemo/function/demo_easing.mcfunction +0 -12
- package/dist/data/mathdemo/function/demo_math.mcfunction +0 -16
- package/dist/data/mathdemo/function/demo_noise.mcfunction +0 -14
- package/dist/data/mathdemo/function/demo_physics.mcfunction +0 -11
- package/dist/data/mathdemo/function/demo_physics__loop_body_1.mcfunction +0 -9
- package/dist/data/mathdemo/function/demo_physics__loop_body_4.mcfunction +0 -18
- package/dist/data/mathdemo/function/demo_physics__loop_exit_2.mcfunction +0 -6
- package/dist/data/mathdemo/function/demo_physics__loop_exit_5.mcfunction +0 -1
- package/dist/data/mathdemo/function/demo_physics__loop_header_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/demo_physics__loop_header_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/distance2d_fixed.mcfunction +0 -13
- package/dist/data/mathdemo/function/distance3d_fixed.mcfunction +0 -18
- package/dist/data/mathdemo/function/divfix.mcfunction +0 -6
- package/dist/data/mathdemo/function/divfix__merge_1.mcfunction +0 -6
- package/dist/data/mathdemo/function/divfix__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/dot2d.mcfunction +0 -11
- package/dist/data/mathdemo/function/dot3d.mcfunction +0 -17
- package/dist/data/mathdemo/function/ease_in_back.mcfunction +0 -26
- package/dist/data/mathdemo/function/ease_in_bounce.mcfunction +0 -9
- package/dist/data/mathdemo/function/ease_in_cubic.mcfunction +0 -12
- package/dist/data/mathdemo/function/ease_in_expo.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_expo__merge_1.mcfunction +0 -11
- package/dist/data/mathdemo/function/ease_in_expo__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/ease_in_out_back.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_out_back__merge_1.mcfunction +0 -14
- package/dist/data/mathdemo/function/ease_in_out_back__then_0.mcfunction +0 -10
- package/dist/data/mathdemo/function/ease_in_out_bounce.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_out_bounce__merge_1.mcfunction +0 -14
- package/dist/data/mathdemo/function/ease_in_out_bounce__then_0.mcfunction +0 -10
- package/dist/data/mathdemo/function/ease_in_out_cubic.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_out_cubic__merge_1.mcfunction +0 -17
- package/dist/data/mathdemo/function/ease_in_out_cubic__then_0.mcfunction +0 -13
- package/dist/data/mathdemo/function/ease_in_out_quad.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_out_quad__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/ease_in_out_quad__then_0.mcfunction +0 -8
- package/dist/data/mathdemo/function/ease_in_out_sine.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_out_sine__merge_1.mcfunction +0 -14
- package/dist/data/mathdemo/function/ease_in_out_sine__then_0.mcfunction +0 -10
- package/dist/data/mathdemo/function/ease_in_quad.mcfunction +0 -7
- package/dist/data/mathdemo/function/ease_in_quad__const_5000.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_in_quart.mcfunction +0 -12
- package/dist/data/mathdemo/function/ease_in_sine.mcfunction +0 -30
- package/dist/data/mathdemo/function/ease_linear.mcfunction +0 -2
- package/dist/data/mathdemo/function/ease_linear__const_5000.mcfunction +0 -2
- package/dist/data/mathdemo/function/ease_out_back.mcfunction +0 -9
- package/dist/data/mathdemo/function/ease_out_back__const_5000.mcfunction +0 -7
- package/dist/data/mathdemo/function/ease_out_bounce.mcfunction +0 -6
- package/dist/data/mathdemo/function/ease_out_bounce__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/ease_out_bounce__merge_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/ease_out_bounce__merge_7.mcfunction +0 -15
- package/dist/data/mathdemo/function/ease_out_bounce__then_0.mcfunction +0 -11
- package/dist/data/mathdemo/function/ease_out_bounce__then_3.mcfunction +0 -15
- package/dist/data/mathdemo/function/ease_out_bounce__then_6.mcfunction +0 -15
- package/dist/data/mathdemo/function/ease_out_cubic.mcfunction +0 -16
- package/dist/data/mathdemo/function/ease_out_cubic__const_5000.mcfunction +0 -14
- package/dist/data/mathdemo/function/ease_out_expo.mcfunction +0 -5
- package/dist/data/mathdemo/function/ease_out_expo__merge_1.mcfunction +0 -8
- package/dist/data/mathdemo/function/ease_out_expo__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/ease_out_quad.mcfunction +0 -11
- package/dist/data/mathdemo/function/ease_out_quart.mcfunction +0 -16
- package/dist/data/mathdemo/function/ease_out_sine.mcfunction +0 -9
- package/dist/data/mathdemo/function/ease_smooth.mcfunction +0 -23
- package/dist/data/mathdemo/function/ease_smoother.mcfunction +0 -41
- package/dist/data/mathdemo/function/exp_fx.mcfunction +0 -16
- package/dist/data/mathdemo/function/exp_fx__loop_body_10.mcfunction +0 -8
- package/dist/data/mathdemo/function/exp_fx__loop_body_5.mcfunction +0 -8
- package/dist/data/mathdemo/function/exp_fx__loop_exit_11.mcfunction +0 -1
- package/dist/data/mathdemo/function/exp_fx__loop_exit_6.mcfunction +0 -1
- package/dist/data/mathdemo/function/exp_fx__loop_header_4.mcfunction +0 -3
- package/dist/data/mathdemo/function/exp_fx__loop_header_9.mcfunction +0 -3
- package/dist/data/mathdemo/function/exp_fx__merge_1.mcfunction +0 -47
- package/dist/data/mathdemo/function/exp_fx__merge_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/exp_fx__merge_8.mcfunction +0 -1
- package/dist/data/mathdemo/function/exp_fx__then_0.mcfunction +0 -7
- package/dist/data/mathdemo/function/exp_fx__then_2.mcfunction +0 -2
- package/dist/data/mathdemo/function/exp_fx__then_7.mcfunction +0 -5
- package/dist/data/mathdemo/function/factorial.mcfunction +0 -5
- package/dist/data/mathdemo/function/factorial__loop_body_4.mcfunction +0 -7
- package/dist/data/mathdemo/function/factorial__loop_exit_5.mcfunction +0 -1
- package/dist/data/mathdemo/function/factorial__loop_header_3.mcfunction +0 -3
- package/dist/data/mathdemo/function/factorial__merge_1.mcfunction +0 -3
- package/dist/data/mathdemo/function/factorial__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/fbm_1d.mcfunction +0 -9
- package/dist/data/mathdemo/function/fbm_1d__loop_body_1.mcfunction +0 -33
- package/dist/data/mathdemo/function/fbm_1d__loop_exit_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/fbm_1d__loop_header_0.mcfunction +0 -3
- package/dist/data/mathdemo/function/fbm_1d__merge_4.mcfunction +0 -6
- package/dist/data/mathdemo/function/fbm_1d__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/fbm_2d.mcfunction +0 -10
- package/dist/data/mathdemo/function/fbm_2d__loop_body_1.mcfunction +0 -39
- package/dist/data/mathdemo/function/fbm_2d__loop_exit_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/fbm_2d__loop_header_0.mcfunction +0 -3
- package/dist/data/mathdemo/function/fbm_2d__merge_4.mcfunction +0 -6
- package/dist/data/mathdemo/function/fbm_2d__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/friction_decel.mcfunction +0 -5
- package/dist/data/mathdemo/function/friction_decel__merge_1.mcfunction +0 -5
- package/dist/data/mathdemo/function/friction_decel__merge_4.mcfunction +0 -2
- package/dist/data/mathdemo/function/friction_decel__then_0.mcfunction +0 -3
- package/dist/data/mathdemo/function/friction_decel__then_3.mcfunction +0 -3
- package/dist/data/mathdemo/function/gamma_int.mcfunction +0 -5
- package/dist/data/mathdemo/function/gamma_int__merge_1.mcfunction +0 -6
- package/dist/data/mathdemo/function/gamma_int__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/gcd.mcfunction +0 -7
- package/dist/data/mathdemo/function/gcd__loop_body_5.mcfunction +0 -5
- package/dist/data/mathdemo/function/gcd__loop_exit_6.mcfunction +0 -1
- package/dist/data/mathdemo/function/gcd__loop_header_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/gcd__merge_1.mcfunction +0 -5
- package/dist/data/mathdemo/function/gcd__merge_3.mcfunction +0 -1
- package/dist/data/mathdemo/function/gcd__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/gcd__then_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/gravity_fx.mcfunction +0 -2
- package/dist/data/mathdemo/function/hash_1d.mcfunction +0 -15
- package/dist/data/mathdemo/function/hash_1d_pos.mcfunction +0 -9
- package/dist/data/mathdemo/function/hash_1d_pos__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/hash_1d_pos__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/hash_2d.mcfunction +0 -11
- package/dist/data/mathdemo/function/hash_2d_pos.mcfunction +0 -11
- package/dist/data/mathdemo/function/hash_2d_pos__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/hash_2d_pos__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/impact_velocity.mcfunction +0 -5
- package/dist/data/mathdemo/function/impact_velocity__merge_1.mcfunction +0 -16
- package/dist/data/mathdemo/function/impact_velocity__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/is_grounded.mcfunction +0 -5
- package/dist/data/mathdemo/function/is_grounded__merge_1.mcfunction +0 -2
- package/dist/data/mathdemo/function/is_grounded__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/isqrt.mcfunction +0 -5
- package/dist/data/mathdemo/function/isqrt__loop_body_10.mcfunction +0 -8
- package/dist/data/mathdemo/function/isqrt__loop_body_13.mcfunction +0 -11
- package/dist/data/mathdemo/function/isqrt__loop_body_7.mcfunction +0 -8
- package/dist/data/mathdemo/function/isqrt__loop_exit_11.mcfunction +0 -2
- package/dist/data/mathdemo/function/isqrt__loop_exit_14.mcfunction +0 -1
- package/dist/data/mathdemo/function/isqrt__loop_exit_8.mcfunction +0 -9
- package/dist/data/mathdemo/function/isqrt__loop_header_12.mcfunction +0 -4
- package/dist/data/mathdemo/function/isqrt__loop_header_6.mcfunction +0 -4
- package/dist/data/mathdemo/function/isqrt__loop_header_9.mcfunction +0 -3
- package/dist/data/mathdemo/function/isqrt__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/isqrt__merge_16.mcfunction +0 -5
- package/dist/data/mathdemo/function/isqrt__merge_4.mcfunction +0 -3
- package/dist/data/mathdemo/function/isqrt__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/isqrt__then_15.mcfunction +0 -1
- package/dist/data/mathdemo/function/isqrt__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/lcm.mcfunction +0 -11
- package/dist/data/mathdemo/function/lcm__merge_1.mcfunction +0 -5
- package/dist/data/mathdemo/function/lcm__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/length2d_fixed.mcfunction +0 -15
- package/dist/data/mathdemo/function/length3d_fixed.mcfunction +0 -20
- package/dist/data/mathdemo/function/lerp.mcfunction +0 -13
- package/dist/data/mathdemo/function/lerp2d_x.mcfunction +0 -13
- package/dist/data/mathdemo/function/lerp2d_y.mcfunction +0 -13
- package/dist/data/mathdemo/function/ln.mcfunction +0 -9
- package/dist/data/mathdemo/function/ln__loop_body_1.mcfunction +0 -8
- package/dist/data/mathdemo/function/ln__loop_body_4.mcfunction +0 -8
- package/dist/data/mathdemo/function/ln__loop_exit_2.mcfunction +0 -1
- package/dist/data/mathdemo/function/ln__loop_exit_5.mcfunction +0 -37
- package/dist/data/mathdemo/function/ln__loop_header_0.mcfunction +0 -3
- package/dist/data/mathdemo/function/ln__loop_header_3.mcfunction +0 -6
- package/dist/data/mathdemo/function/load.mcfunction +0 -1
- package/dist/data/mathdemo/function/log10_fx.mcfunction +0 -11
- package/dist/data/mathdemo/function/log2_fx.mcfunction +0 -11
- package/dist/data/mathdemo/function/log2_int.mcfunction +0 -5
- package/dist/data/mathdemo/function/log2_int__loop_body_4.mcfunction +0 -8
- package/dist/data/mathdemo/function/log2_int__loop_exit_5.mcfunction +0 -1
- package/dist/data/mathdemo/function/log2_int__loop_header_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/log2_int__merge_1.mcfunction +0 -3
- package/dist/data/mathdemo/function/log2_int__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/loga_fx.mcfunction +0 -10
- package/dist/data/mathdemo/function/loga_fx__merge_1.mcfunction +0 -9
- package/dist/data/mathdemo/function/loga_fx__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/manhattan.mcfunction +0 -14
- package/dist/data/mathdemo/function/manhattan3d.mcfunction +0 -19
- package/dist/data/mathdemo/function/manhattan3d__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan3d__merge_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan3d__merge_5.mcfunction +0 -5
- package/dist/data/mathdemo/function/manhattan3d__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan3d__then_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan3d__then_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan__merge_3.mcfunction +0 -3
- package/dist/data/mathdemo/function/manhattan__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/manhattan__then_2.mcfunction +0 -4
- package/dist/data/mathdemo/function/map.mcfunction +0 -12
- package/dist/data/mathdemo/function/map__merge_1.mcfunction +0 -11
- package/dist/data/mathdemo/function/map__then_0.mcfunction +0 -1
- package/dist/data/mathdemo/function/mulfix.mcfunction +0 -8
- package/dist/data/mathdemo/function/neg2d_x.mcfunction +0 -4
- package/dist/data/mathdemo/function/neg2d_y.mcfunction +0 -4
- package/dist/data/mathdemo/function/neg3d_x.mcfunction +0 -4
- package/dist/data/mathdemo/function/neg3d_y.mcfunction +0 -4
- package/dist/data/mathdemo/function/neg3d_z.mcfunction +0 -4
- package/dist/data/mathdemo/function/normalize2d_x.mcfunction +0 -11
- package/dist/data/mathdemo/function/normalize2d_x__merge_1.mcfunction +0 -6
- package/dist/data/mathdemo/function/normalize2d_x__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/normalize2d_y.mcfunction +0 -11
- package/dist/data/mathdemo/function/normalize2d_y__merge_1.mcfunction +0 -6
- package/dist/data/mathdemo/function/normalize2d_y__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/pow_int.mcfunction +0 -6
- package/dist/data/mathdemo/function/pow_int__loop_body_4.mcfunction +0 -7
- package/dist/data/mathdemo/function/pow_int__loop_exit_5.mcfunction +0 -1
- package/dist/data/mathdemo/function/pow_int__loop_header_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/pow_int__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/pow_int__merge_7.mcfunction +0 -8
- package/dist/data/mathdemo/function/pow_int__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/pow_int__then_6.mcfunction +0 -4
- package/dist/data/mathdemo/function/projectile_land_t.mcfunction +0 -5
- package/dist/data/mathdemo/function/projectile_land_t__merge_1.mcfunction +0 -7
- package/dist/data/mathdemo/function/projectile_land_t__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/projectile_max_height.mcfunction +0 -10
- package/dist/data/mathdemo/function/projectile_max_height__const_200.mcfunction +0 -8
- package/dist/data/mathdemo/function/projectile_vy.mcfunction +0 -9
- package/dist/data/mathdemo/function/projectile_x.mcfunction +0 -8
- package/dist/data/mathdemo/function/projectile_y.mcfunction +0 -19
- package/dist/data/mathdemo/function/quadratic_disc.mcfunction +0 -12
- package/dist/data/mathdemo/function/quadratic_x1.mcfunction +0 -7
- package/dist/data/mathdemo/function/quadratic_x1__merge_1.mcfunction +0 -13
- package/dist/data/mathdemo/function/quadratic_x1__merge_4.mcfunction +0 -15
- package/dist/data/mathdemo/function/quadratic_x1__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/quadratic_x1__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/quadratic_x2.mcfunction +0 -7
- package/dist/data/mathdemo/function/quadratic_x2__merge_1.mcfunction +0 -13
- package/dist/data/mathdemo/function/quadratic_x2__merge_4.mcfunction +0 -15
- package/dist/data/mathdemo/function/quadratic_x2__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/quadratic_x2__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/rotate2d_x.mcfunction +0 -20
- package/dist/data/mathdemo/function/rotate2d_y.mcfunction +0 -20
- package/dist/data/mathdemo/function/scale2d_x.mcfunction +0 -8
- package/dist/data/mathdemo/function/scale2d_y.mcfunction +0 -8
- package/dist/data/mathdemo/function/scale3d_x.mcfunction +0 -8
- package/dist/data/mathdemo/function/scale3d_y.mcfunction +0 -8
- package/dist/data/mathdemo/function/scale3d_z.mcfunction +0 -8
- package/dist/data/mathdemo/function/sign.mcfunction +0 -5
- package/dist/data/mathdemo/function/sign__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/sign__merge_4.mcfunction +0 -2
- package/dist/data/mathdemo/function/sign__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/sign__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/sin_fixed.mcfunction +0 -9
- package/dist/data/mathdemo/function/sin_fixed__merge_1.mcfunction +0 -4
- package/dist/data/mathdemo/function/sin_fixed__merge_3.mcfunction +0 -4
- package/dist/data/mathdemo/function/sin_fixed__merge_6.mcfunction +0 -4
- package/dist/data/mathdemo/function/sin_fixed__merge_9.mcfunction +0 -10
- package/dist/data/mathdemo/function/sin_fixed__then_0.mcfunction +0 -4
- package/dist/data/mathdemo/function/sin_fixed__then_2.mcfunction +0 -6
- package/dist/data/mathdemo/function/sin_fixed__then_5.mcfunction +0 -8
- package/dist/data/mathdemo/function/sin_fixed__then_8.mcfunction +0 -10
- package/dist/data/mathdemo/function/smootherstep.mcfunction +0 -10
- package/dist/data/mathdemo/function/smootherstep__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/smootherstep__merge_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/smootherstep__merge_6.mcfunction +0 -27
- package/dist/data/mathdemo/function/smootherstep__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/smootherstep__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/smootherstep__then_5.mcfunction +0 -2
- package/dist/data/mathdemo/function/smoothstep.mcfunction +0 -10
- package/dist/data/mathdemo/function/smoothstep__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/smoothstep__merge_4.mcfunction +0 -4
- package/dist/data/mathdemo/function/smoothstep__merge_6.mcfunction +0 -15
- package/dist/data/mathdemo/function/smoothstep__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/smoothstep__then_3.mcfunction +0 -2
- package/dist/data/mathdemo/function/smoothstep__then_5.mcfunction +0 -2
- package/dist/data/mathdemo/function/solve2x2_x.mcfunction +0 -17
- package/dist/data/mathdemo/function/solve2x2_x__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/solve2x2_x__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/solve2x2_y.mcfunction +0 -17
- package/dist/data/mathdemo/function/solve2x2_y__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/solve2x2_y__then_0.mcfunction +0 -2
- package/dist/data/mathdemo/function/spring_force.mcfunction +0 -11
- package/dist/data/mathdemo/function/spring_update_v.mcfunction +0 -18
- package/dist/data/mathdemo/function/sqrt_fixed.mcfunction +0 -8
- package/dist/data/mathdemo/function/sqrt_fx.mcfunction +0 -11
- package/dist/data/mathdemo/function/sqrt_fx__const_20000.mcfunction +0 -8
- package/dist/data/mathdemo/function/start.mcfunction +0 -6
- package/dist/data/mathdemo/function/sub2d_x.mcfunction +0 -5
- package/dist/data/mathdemo/function/sub2d_y.mcfunction +0 -5
- package/dist/data/mathdemo/function/sub3d_x.mcfunction +0 -5
- package/dist/data/mathdemo/function/sub3d_y.mcfunction +0 -5
- package/dist/data/mathdemo/function/sub3d_z.mcfunction +0 -5
- package/dist/data/mathdemo/function/terrain_height.mcfunction +0 -24
- package/dist/data/mathdemo/function/terrain_height__const_0_0_64_20.mcfunction +0 -17
- package/dist/data/mathdemo/function/terrain_height__const_10_5_64_20.mcfunction +0 -17
- package/dist/data/mathdemo/function/update_pos.mcfunction +0 -5
- package/dist/data/mathdemo/function/value_noise_1d.mcfunction +0 -13
- package/dist/data/mathdemo/function/value_noise_1d__merge_1.mcfunction +0 -39
- package/dist/data/mathdemo/function/value_noise_1d__then_0.mcfunction +0 -7
- package/dist/data/mathdemo/function/value_noise_2d.mcfunction +0 -14
- package/dist/data/mathdemo/function/value_noise_2d__merge_1.mcfunction +0 -12
- package/dist/data/mathdemo/function/value_noise_2d__merge_3.mcfunction +0 -98
- package/dist/data/mathdemo/function/value_noise_2d__then_0.mcfunction +0 -7
- package/dist/data/mathdemo/function/value_noise_2d__then_2.mcfunction +0 -7
- package/dist/data/mathdemo/function/water_drag_fx.mcfunction +0 -2
- package/dist/data/mathtest/function/__load.mcfunction +0 -3
- package/dist/data/mathtest/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/mathtest/function/abs/then_0.mcfunction +0 -5
- package/dist/data/mathtest/function/abs.mcfunction +0 -6
- package/dist/data/mathtest/function/test.mcfunction +0 -5
- package/dist/data/minecraft/tags/function/load.json +0 -6
- package/dist/data/minecraft/tags/function/tick.json +0 -5
- package/dist/data/mypack/function/__load.mcfunction +0 -13
- package/dist/data/mypack/function/_atan_init.mcfunction +0 -2
- package/dist/data/mypack/function/abs/merge_2.mcfunction +0 -3
- package/dist/data/mypack/function/abs/then_0.mcfunction +0 -5
- package/dist/data/mypack/function/abs.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/__sgi_1.mcfunction +0 -2
- package/dist/data/mypack/function/atan2_fixed/else_34.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/loop_body_31.mcfunction +0 -19
- package/dist/data/mypack/function/atan2_fixed/loop_check_30.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/loop_exit_32.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/merge_11.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/merge_14.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/merge_17.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/merge_2.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_20.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_23.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_26.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/merge_29.mcfunction +0 -4
- package/dist/data/mypack/function/atan2_fixed/merge_38.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_41.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_44.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_47.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_5.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/merge_8.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_0.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_12.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_15.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_18.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_21.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_24.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_27.mcfunction +0 -6
- package/dist/data/mypack/function/atan2_fixed/then_3.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_33.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_36.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_39.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_42.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_45.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed/then_6.mcfunction +0 -3
- package/dist/data/mypack/function/atan2_fixed/then_9.mcfunction +0 -5
- package/dist/data/mypack/function/atan2_fixed.mcfunction +0 -7
- package/dist/data/mypack/function/my_game.mcfunction +0 -10
- package/dist/data/parkour_race/function/angry_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/barrier_wall.mcfunction +0 -1
- package/dist/data/parkour_race/function/buff_all.mcfunction +0 -22
- package/dist/data/parkour_race/function/check_checkpoints.mcfunction +0 -11
- package/dist/data/parkour_race/function/check_checkpoints__exec_t11.mcfunction +0 -4
- package/dist/data/parkour_race/function/check_checkpoints__exec_t13.mcfunction +0 -3
- package/dist/data/parkour_race/function/check_checkpoints__exec_t5.mcfunction +0 -4
- package/dist/data/parkour_race/function/check_checkpoints__exec_t7.mcfunction +0 -4
- package/dist/data/parkour_race/function/check_checkpoints__exec_t9.mcfunction +0 -4
- package/dist/data/parkour_race/function/check_checkpoints__merge_1.mcfunction +0 -5
- package/dist/data/parkour_race/function/check_checkpoints__merge_3.mcfunction +0 -5
- package/dist/data/parkour_race/function/check_checkpoints__merge_5.mcfunction +0 -5
- package/dist/data/parkour_race/function/check_checkpoints__merge_7.mcfunction +0 -5
- package/dist/data/parkour_race/function/check_checkpoints__merge_9.mcfunction +0 -1
- package/dist/data/parkour_race/function/check_checkpoints__then_0.mcfunction +0 -2
- package/dist/data/parkour_race/function/check_checkpoints__then_2.mcfunction +0 -2
- package/dist/data/parkour_race/function/check_checkpoints__then_4.mcfunction +0 -2
- package/dist/data/parkour_race/function/check_checkpoints__then_6.mcfunction +0 -2
- package/dist/data/parkour_race/function/check_checkpoints__then_8.mcfunction +0 -2
- package/dist/data/parkour_race/function/check_fall.mcfunction +0 -1
- package/dist/data/parkour_race/function/check_fall__exec_t1.mcfunction +0 -10
- package/dist/data/parkour_race/function/clear_area.mcfunction +0 -1
- package/dist/data/parkour_race/function/clear_effect.mcfunction +0 -1
- package/dist/data/parkour_race/function/clear_effects.mcfunction +0 -1
- package/dist/data/parkour_race/function/create_health_bar.mcfunction +0 -24
- package/dist/data/parkour_race/function/create_progress_bar.mcfunction +0 -24
- package/dist/data/parkour_race/function/create_timer_bar.mcfunction +0 -30
- package/dist/data/parkour_race/function/disable_fire_spread.mcfunction +0 -1
- package/dist/data/parkour_race/function/disable_keep_inventory.mcfunction +0 -1
- package/dist/data/parkour_race/function/disable_mob_griefing.mcfunction +0 -1
- package/dist/data/parkour_race/function/enable_keep_inventory.mcfunction +0 -1
- package/dist/data/parkour_race/function/end_sparkles_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/explosion_effect.mcfunction +0 -1
- package/dist/data/parkour_race/function/finish_race.mcfunction +0 -20
- package/dist/data/parkour_race/function/finish_race__else_2.mcfunction +0 -4
- package/dist/data/parkour_race/function/finish_race__else_5.mcfunction +0 -3
- package/dist/data/parkour_race/function/finish_race__merge_1.mcfunction +0 -3
- package/dist/data/parkour_race/function/finish_race__merge_4.mcfunction +0 -1
- package/dist/data/parkour_race/function/finish_race__then_0.mcfunction +0 -8
- package/dist/data/parkour_race/function/finish_race__then_3.mcfunction +0 -10
- package/dist/data/parkour_race/function/flames.mcfunction +0 -1
- package/dist/data/parkour_race/function/glass_box.mcfunction +0 -2
- package/dist/data/parkour_race/function/glow.mcfunction +0 -1
- package/dist/data/parkour_race/function/happy_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/hearts_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/hide_bar.mcfunction +0 -4
- package/dist/data/parkour_race/function/init.mcfunction +0 -18
- package/dist/data/parkour_race/function/invisible.mcfunction +0 -1
- package/dist/data/parkour_race/function/jump.mcfunction +0 -1
- package/dist/data/parkour_race/function/load.mcfunction +0 -1
- package/dist/data/parkour_race/function/night_vision.mcfunction +0 -1
- package/dist/data/parkour_race/function/portal_effect.mcfunction +0 -1
- package/dist/data/parkour_race/function/quit_race.mcfunction +0 -10
- package/dist/data/parkour_race/function/quit_race__merge_1.mcfunction +0 -1
- package/dist/data/parkour_race/function/quit_race__then_0.mcfunction +0 -11
- package/dist/data/parkour_race/function/race_tick.mcfunction +0 -1
- package/dist/data/parkour_race/function/race_tick__foreach_t0.mcfunction +0 -10
- package/dist/data/parkour_race/function/race_tick__foreach_t0__merge_1.mcfunction +0 -1
- package/dist/data/parkour_race/function/race_tick__foreach_t0__then_0.mcfunction +0 -13
- package/dist/data/parkour_race/function/reach_checkpoint.mcfunction +0 -11
- package/dist/data/parkour_race/function/regen.mcfunction +0 -1
- package/dist/data/parkour_race/function/remove_bar.mcfunction +0 -3
- package/dist/data/parkour_race/function/resistance.mcfunction +0 -1
- package/dist/data/parkour_race/function/respawn_at_checkpoint.mcfunction +0 -7
- package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_1.mcfunction +0 -5
- package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_3.mcfunction +0 -5
- package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_5.mcfunction +0 -5
- package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_7.mcfunction +0 -5
- package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_9.mcfunction +0 -1
- package/dist/data/parkour_race/function/respawn_at_checkpoint__then_0.mcfunction +0 -6
- package/dist/data/parkour_race/function/respawn_at_checkpoint__then_2.mcfunction +0 -6
- package/dist/data/parkour_race/function/respawn_at_checkpoint__then_4.mcfunction +0 -6
- package/dist/data/parkour_race/function/respawn_at_checkpoint__then_6.mcfunction +0 -6
- package/dist/data/parkour_race/function/respawn_at_checkpoint__then_8.mcfunction +0 -6
- package/dist/data/parkour_race/function/set_day.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_easy.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_hard.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_midnight.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_night.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_noon.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_normal.mcfunction +0 -1
- package/dist/data/parkour_race/function/set_peaceful.mcfunction +0 -1
- package/dist/data/parkour_race/function/show_bar.mcfunction +0 -4
- package/dist/data/parkour_race/function/show_leaderboard.mcfunction +0 -4
- package/dist/data/parkour_race/function/slow_fall.mcfunction +0 -1
- package/dist/data/parkour_race/function/smoke.mcfunction +0 -1
- package/dist/data/parkour_race/function/sparkles_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/speed.mcfunction +0 -1
- package/dist/data/parkour_race/function/start_race.mcfunction +0 -10
- package/dist/data/parkour_race/function/start_race__merge_1.mcfunction +0 -23
- package/dist/data/parkour_race/function/start_race__then_0.mcfunction +0 -1
- package/dist/data/parkour_race/function/strength.mcfunction +0 -1
- package/dist/data/parkour_race/function/totem_at.mcfunction +0 -1
- package/dist/data/parkour_race/function/update_bar.mcfunction +0 -5
- package/dist/data/parkour_race/function/update_bar_color.mcfunction +0 -7
- package/dist/data/parkour_race/function/update_bar_color__else_2.mcfunction +0 -5
- package/dist/data/parkour_race/function/update_bar_color__else_5.mcfunction +0 -4
- package/dist/data/parkour_race/function/update_bar_color__merge_1.mcfunction +0 -1
- package/dist/data/parkour_race/function/update_bar_color__merge_4.mcfunction +0 -1
- package/dist/data/parkour_race/function/update_bar_color__then_0.mcfunction +0 -4
- package/dist/data/parkour_race/function/update_bar_color__then_3.mcfunction +0 -4
- package/dist/data/parkour_race/function/weather_clear.mcfunction +0 -1
- package/dist/data/parkour_race/function/weather_rain.mcfunction +0 -1
- package/dist/data/parkour_race/function/weather_thunder.mcfunction +0 -1
- package/dist/data/quiz/function/__load.mcfunction +0 -16
- package/dist/data/quiz/function/__tick.mcfunction +0 -6
- package/dist/data/quiz/function/__trigger_quiz_a_dispatch.mcfunction +0 -4
- package/dist/data/quiz/function/__trigger_quiz_b_dispatch.mcfunction +0 -4
- package/dist/data/quiz/function/__trigger_quiz_c_dispatch.mcfunction +0 -4
- package/dist/data/quiz/function/__trigger_quiz_start_dispatch.mcfunction +0 -4
- package/dist/data/quiz/function/answer_a.mcfunction +0 -4
- package/dist/data/quiz/function/answer_b.mcfunction +0 -4
- package/dist/data/quiz/function/answer_c.mcfunction +0 -4
- package/dist/data/quiz/function/ask_question/else_1.mcfunction +0 -5
- package/dist/data/quiz/function/ask_question/else_4.mcfunction +0 -5
- package/dist/data/quiz/function/ask_question/else_7.mcfunction +0 -4
- package/dist/data/quiz/function/ask_question/merge_2.mcfunction +0 -1
- package/dist/data/quiz/function/ask_question/merge_5.mcfunction +0 -2
- package/dist/data/quiz/function/ask_question/merge_8.mcfunction +0 -2
- package/dist/data/quiz/function/ask_question/then_0.mcfunction +0 -4
- package/dist/data/quiz/function/ask_question/then_3.mcfunction +0 -4
- package/dist/data/quiz/function/ask_question/then_6.mcfunction +0 -4
- package/dist/data/quiz/function/ask_question.mcfunction +0 -7
- package/dist/data/quiz/function/finish_quiz.mcfunction +0 -6
- package/dist/data/quiz/function/handle_answer/else_1.mcfunction +0 -5
- package/dist/data/quiz/function/handle_answer/else_10.mcfunction +0 -3
- package/dist/data/quiz/function/handle_answer/else_16.mcfunction +0 -3
- package/dist/data/quiz/function/handle_answer/else_4.mcfunction +0 -3
- package/dist/data/quiz/function/handle_answer/else_7.mcfunction +0 -5
- package/dist/data/quiz/function/handle_answer/merge_11.mcfunction +0 -2
- package/dist/data/quiz/function/handle_answer/merge_14.mcfunction +0 -2
- package/dist/data/quiz/function/handle_answer/merge_17.mcfunction +0 -2
- package/dist/data/quiz/function/handle_answer/merge_2.mcfunction +0 -8
- package/dist/data/quiz/function/handle_answer/merge_5.mcfunction +0 -2
- package/dist/data/quiz/function/handle_answer/merge_8.mcfunction +0 -2
- package/dist/data/quiz/function/handle_answer/then_0.mcfunction +0 -5
- package/dist/data/quiz/function/handle_answer/then_12.mcfunction +0 -5
- package/dist/data/quiz/function/handle_answer/then_15.mcfunction +0 -6
- package/dist/data/quiz/function/handle_answer/then_3.mcfunction +0 -6
- package/dist/data/quiz/function/handle_answer/then_6.mcfunction +0 -5
- package/dist/data/quiz/function/handle_answer/then_9.mcfunction +0 -6
- package/dist/data/quiz/function/handle_answer.mcfunction +0 -11
- package/dist/data/quiz/function/start_quiz.mcfunction +0 -5
- package/dist/data/rawtest/function/load.mcfunction +0 -1
- package/dist/data/rawtest/function/test.mcfunction +0 -2
- package/dist/data/reqtest/function/__load.mcfunction +0 -4
- package/dist/data/reqtest/function/_table_init.mcfunction +0 -2
- package/dist/data/reqtest/function/no_trig.mcfunction +0 -3
- package/dist/data/reqtest/function/use_table.mcfunction +0 -4
- package/dist/data/reqtest2/function/__load.mcfunction +0 -3
- package/dist/data/reqtest2/function/no_trig.mcfunction +0 -3
- package/dist/data/runtime/function/__load.mcfunction +0 -5
- package/dist/data/runtime/function/__tick.mcfunction +0 -2
- package/dist/data/runtime/function/counter_tick/then_0.mcfunction +0 -3
- package/dist/data/runtime/function/counter_tick.mcfunction +0 -13
- package/dist/data/shop/function/__load.mcfunction +0 -7
- package/dist/data/shop/function/__tick.mcfunction +0 -3
- package/dist/data/shop/function/__trigger_shop_buy_dispatch.mcfunction +0 -4
- package/dist/data/shop/function/complete_purchase/else_1.mcfunction +0 -5
- package/dist/data/shop/function/complete_purchase/else_4.mcfunction +0 -5
- package/dist/data/shop/function/complete_purchase/else_7.mcfunction +0 -3
- package/dist/data/shop/function/complete_purchase/merge_2.mcfunction +0 -2
- package/dist/data/shop/function/complete_purchase/merge_5.mcfunction +0 -2
- package/dist/data/shop/function/complete_purchase/merge_8.mcfunction +0 -2
- package/dist/data/shop/function/complete_purchase/then_0.mcfunction +0 -4
- package/dist/data/shop/function/complete_purchase/then_3.mcfunction +0 -4
- package/dist/data/shop/function/complete_purchase/then_6.mcfunction +0 -4
- package/dist/data/shop/function/complete_purchase.mcfunction +0 -7
- package/dist/data/shop/function/handle_shop_trigger.mcfunction +0 -3
- package/dist/data/swap_test/function/__load.mcfunction +0 -3
- package/dist/data/swap_test/function/gcd_old/loop_body_1.mcfunction +0 -7
- package/dist/data/swap_test/function/gcd_old/loop_check_0.mcfunction +0 -5
- package/dist/data/swap_test/function/gcd_old/loop_exit_2.mcfunction +0 -3
- package/dist/data/swap_test/function/gcd_old.mcfunction +0 -8
- package/dist/data/test/function/__dyn_idx_test_arrays_a.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_b.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_c.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_counter.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_d.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_e.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_g.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_h.mcfunction +0 -1
- package/dist/data/test/function/__dyn_idx_test_arrays_one.mcfunction +0 -1
- package/dist/data/test/function/__dyn_wrt_test_arrays_f.mcfunction +0 -1
- package/dist/data/test/function/__dyn_wrt_test_arrays_r.mcfunction +0 -1
- package/dist/data/test/function/__dyn_wrt_test_arrays_s.mcfunction +0 -1
- package/dist/data/test/function/_apply.mcfunction +0 -5
- package/dist/data/test/function/_atan_init.mcfunction +0 -4
- package/dist/data/test/function/_divider.mcfunction +0 -1
- package/dist/data/test/function/_dump_advanced_phase.mcfunction +0 -4
- package/dist/data/test/function/_dump_advanced_phase__loop_body_1.mcfunction +0 -7
- package/dist/data/test/function/_dump_advanced_phase__loop_body_6.mcfunction +0 -10
- package/dist/data/test/function/_dump_advanced_phase__loop_exit_2.mcfunction +0 -20
- package/dist/data/test/function/_dump_advanced_phase__loop_exit_7.mcfunction +0 -12
- package/dist/data/test/function/_dump_advanced_phase__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/_dump_advanced_phase__loop_header_5.mcfunction +0 -4
- package/dist/data/test/function/_dump_advanced_phase__merge_4.mcfunction +0 -4
- package/dist/data/test/function/_dump_advanced_phase__then_3.mcfunction +0 -2
- package/dist/data/test/function/_dump_bigint_phase.mcfunction +0 -28
- package/dist/data/test/function/_dump_math_phase.mcfunction +0 -4
- package/dist/data/test/function/_dump_math_phase__loop_body_1.mcfunction +0 -9
- package/dist/data/test/function/_dump_math_phase__loop_exit_2.mcfunction +0 -18
- package/dist/data/test/function/_dump_math_phase__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/_fp.mcfunction +0 -2
- package/dist/data/test/function/_hsl_chroma_x.mcfunction +0 -11
- package/dist/data/test/function/_hsl_chroma_x__merge_1.mcfunction +0 -6
- package/dist/data/test/function/_hsl_chroma_x__then_0.mcfunction +0 -4
- package/dist/data/test/function/_math_init.mcfunction +0 -4
- package/dist/data/test/function/_next_phase.mcfunction +0 -1
- package/dist/data/test/function/_section.mcfunction +0 -3
- package/dist/data/test/function/_section__const_0.mcfunction +0 -3
- package/dist/data/test/function/_tick_advanced_live.mcfunction +0 -5
- package/dist/data/test/function/_tick_advanced_live__foreach_t12.mcfunction +0 -1
- package/dist/data/test/function/_tick_bigint_live.mcfunction +0 -8
- package/dist/data/test/function/_tick_bigint_live__foreach_t11.mcfunction +0 -1
- package/dist/data/test/function/_tick_math.mcfunction +0 -9
- package/dist/data/test/function/_tick_math__foreach_t12.mcfunction +0 -1
- package/dist/data/test/function/_tick_visual.mcfunction +0 -11
- package/dist/data/test/function/_tick_visual__foreach_t12.mcfunction +0 -1
- package/dist/data/test/function/_tick_visual__foreach_t16.mcfunction +0 -8
- package/dist/data/test/function/_tick_visual__foreach_t17.mcfunction +0 -8
- package/dist/data/test/function/_tick_visual__foreach_t21.mcfunction +0 -1
- package/dist/data/test/function/aabb_contains.mcfunction +0 -13
- package/dist/data/test/function/aabb_contains__merge_1.mcfunction +0 -4
- package/dist/data/test/function/aabb_contains__merge_10.mcfunction +0 -4
- package/dist/data/test/function/aabb_contains__merge_13.mcfunction +0 -4
- package/dist/data/test/function/aabb_contains__merge_16.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__merge_4.mcfunction +0 -4
- package/dist/data/test/function/aabb_contains__merge_7.mcfunction +0 -4
- package/dist/data/test/function/aabb_contains__then_0.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__then_12.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__then_15.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__then_3.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__then_6.mcfunction +0 -2
- package/dist/data/test/function/aabb_contains__then_9.mcfunction +0 -2
- package/dist/data/test/function/add2d_x.mcfunction +0 -5
- package/dist/data/test/function/add2d_y.mcfunction +0 -5
- package/dist/data/test/function/add3d_x.mcfunction +0 -5
- package/dist/data/test/function/add3d_y.mcfunction +0 -5
- package/dist/data/test/function/add3d_z.mcfunction +0 -5
- package/dist/data/test/function/air_drag_fx.mcfunction +0 -2
- package/dist/data/test/function/angle_between.mcfunction +0 -28
- package/dist/data/test/function/angle_between__and_false_2.mcfunction +0 -2
- package/dist/data/test/function/angle_between__and_false_8.mcfunction +0 -2
- package/dist/data/test/function/angle_between__and_merge_1.mcfunction +0 -2
- package/dist/data/test/function/angle_between__and_merge_7.mcfunction +0 -2
- package/dist/data/test/function/angle_between__and_right_0.mcfunction +0 -4
- package/dist/data/test/function/angle_between__and_right_6.mcfunction +0 -4
- package/dist/data/test/function/angle_between__merge_10.mcfunction +0 -26
- package/dist/data/test/function/angle_between__merge_4.mcfunction +0 -4
- package/dist/data/test/function/angle_between__then_3.mcfunction +0 -2
- package/dist/data/test/function/angle_between__then_9.mcfunction +0 -2
- package/dist/data/test/function/angle_diff.mcfunction +0 -13
- package/dist/data/test/function/angle_diff__merge_1.mcfunction +0 -1
- package/dist/data/test/function/angle_diff__then_0.mcfunction +0 -4
- package/dist/data/test/function/angle_normalize.mcfunction +0 -3
- package/dist/data/test/function/angle_normalize__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/angle_normalize__loop_body_4.mcfunction +0 -4
- package/dist/data/test/function/angle_normalize__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/angle_normalize__loop_exit_5.mcfunction +0 -1
- package/dist/data/test/function/angle_normalize__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/angle_normalize__loop_header_3.mcfunction +0 -5
- package/dist/data/test/function/apply_drag.mcfunction +0 -8
- package/dist/data/test/function/apply_gravity.mcfunction +0 -6
- package/dist/data/test/function/approx_eq.mcfunction +0 -10
- package/dist/data/test/function/approx_eq__merge_1.mcfunction +0 -3
- package/dist/data/test/function/approx_eq__merge_3.mcfunction +0 -2
- package/dist/data/test/function/approx_eq__then_0.mcfunction +0 -4
- package/dist/data/test/function/approx_eq__then_2.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed.mcfunction +0 -6
- package/dist/data/test/function/atan2_fixed__else_30.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__loop_body_26.mcfunction +0 -21
- package/dist/data/test/function/atan2_fixed__loop_exit_27.mcfunction +0 -5
- package/dist/data/test/function/atan2_fixed__loop_header_25.mcfunction +0 -3
- package/dist/data/test/function/atan2_fixed__merge_1.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_10.mcfunction +0 -5
- package/dist/data/test/function/atan2_fixed__merge_12.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__merge_16.mcfunction +0 -5
- package/dist/data/test/function/atan2_fixed__merge_18.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_20.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_22.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_24.mcfunction +0 -3
- package/dist/data/test/function/atan2_fixed__merge_29.mcfunction +0 -1
- package/dist/data/test/function/atan2_fixed__merge_3.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_32.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_34.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__merge_36.mcfunction +0 -3
- package/dist/data/test/function/atan2_fixed__merge_40.mcfunction +0 -3
- package/dist/data/test/function/atan2_fixed__merge_6.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_0.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_11.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_15.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_17.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_19.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_2.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_21.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_23.mcfunction +0 -5
- package/dist/data/test/function/atan2_fixed__then_28.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_31.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_33.mcfunction +0 -4
- package/dist/data/test/function/atan2_fixed__then_35.mcfunction +0 -1
- package/dist/data/test/function/atan2_fixed__then_39.mcfunction +0 -3
- package/dist/data/test/function/atan2_fixed__then_5.mcfunction +0 -2
- package/dist/data/test/function/atan2_fixed__then_9.mcfunction +0 -4
- package/dist/data/test/function/avg3.mcfunction +0 -11
- package/dist/data/test/function/avg5.mcfunction +0 -17
- package/dist/data/test/function/bernoulli.mcfunction +0 -13
- package/dist/data/test/function/bernoulli__merge_1.mcfunction +0 -7
- package/dist/data/test/function/bernoulli__merge_3.mcfunction +0 -2
- package/dist/data/test/function/bernoulli__then_0.mcfunction +0 -4
- package/dist/data/test/function/bernoulli__then_2.mcfunction +0 -2
- package/dist/data/test/function/bezier_cubic.mcfunction +0 -36
- package/dist/data/test/function/bezier_quad.mcfunction +0 -20
- package/dist/data/test/function/bigint3_add_hi.mcfunction +0 -11
- package/dist/data/test/function/bigint3_add_lo.mcfunction +0 -8
- package/dist/data/test/function/bigint3_add_mid.mcfunction +0 -11
- package/dist/data/test/function/bigint3_borrow_lo.mcfunction +0 -5
- package/dist/data/test/function/bigint3_borrow_lo__merge_1.mcfunction +0 -2
- package/dist/data/test/function/bigint3_borrow_lo__then_0.mcfunction +0 -2
- package/dist/data/test/function/bigint3_borrow_mid.mcfunction +0 -8
- package/dist/data/test/function/bigint3_borrow_mid__merge_1.mcfunction +0 -2
- package/dist/data/test/function/bigint3_borrow_mid__then_0.mcfunction +0 -2
- package/dist/data/test/function/bigint3_carry_lo.mcfunction +0 -8
- package/dist/data/test/function/bigint3_carry_mid.mcfunction +0 -11
- package/dist/data/test/function/bigint3_cmp.mcfunction +0 -9
- package/dist/data/test/function/bigint3_cmp__merge_1.mcfunction +0 -3
- package/dist/data/test/function/bigint3_cmp__merge_10.mcfunction +0 -3
- package/dist/data/test/function/bigint3_cmp__merge_13.mcfunction +0 -3
- package/dist/data/test/function/bigint3_cmp__merge_16.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__merge_4.mcfunction +0 -3
- package/dist/data/test/function/bigint3_cmp__merge_7.mcfunction +0 -3
- package/dist/data/test/function/bigint3_cmp__then_0.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__then_12.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__then_15.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__then_3.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__then_6.mcfunction +0 -2
- package/dist/data/test/function/bigint3_cmp__then_9.mcfunction +0 -2
- package/dist/data/test/function/bigint3_div_chunk.mcfunction +0 -11
- package/dist/data/test/function/bigint3_mul1_hi.mcfunction +0 -8
- package/dist/data/test/function/bigint3_mul1_lo.mcfunction +0 -8
- package/dist/data/test/function/bigint3_mul1_mid.mcfunction +0 -2
- package/dist/data/test/function/bigint3_rem_chunk.mcfunction +0 -11
- package/dist/data/test/function/bigint3_sub_hi.mcfunction +0 -8
- package/dist/data/test/function/bigint3_sub_lo.mcfunction +0 -5
- package/dist/data/test/function/bigint3_sub_lo__merge_1.mcfunction +0 -5
- package/dist/data/test/function/bigint3_sub_lo__then_0.mcfunction +0 -3
- package/dist/data/test/function/bigint3_sub_mid.mcfunction +0 -12
- package/dist/data/test/function/bigint3_sub_mid__merge_1.mcfunction +0 -1
- package/dist/data/test/function/bigint3_sub_mid__then_0.mcfunction +0 -4
- package/dist/data/test/function/bigint3_to_int32.mcfunction +0 -14
- package/dist/data/test/function/bigint_add.mcfunction +0 -8
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__a__b__test_arrays__b__result__test_arrays__r.mcfunction +0 -6
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__a__b__test_arrays__b__result__test_arrays__r__loop_body_1.mcfunction +0 -22
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__a__b__test_arrays__b__result__test_arrays__r__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__a__b__test_arrays__b__result__test_arrays__r__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__counter__b__test_arrays__one__result__test_arrays__r.mcfunction +0 -6
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__counter__b__test_arrays__one__result__test_arrays__r__loop_body_1.mcfunction +0 -22
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__counter__b__test_arrays__one__result__test_arrays__r__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_add__arr_a__test_arrays__counter__b__test_arrays__one__result__test_arrays__r__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_add__loop_body_1.mcfunction +0 -12
- package/dist/data/test/function/bigint_add__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_add__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_base.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp.mcfunction +0 -5
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h.mcfunction +0 -3
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__loop_body_1.mcfunction +0 -7
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__loop_exit_2.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__merge_4.mcfunction +0 -7
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__merge_7.mcfunction +0 -4
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__then_3.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp__arr_a__test_arrays__g__b__test_arrays__h__then_6.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp__loop_body_1.mcfunction +0 -3
- package/dist/data/test/function/bigint_cmp__loop_exit_2.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/bigint_cmp__merge_4.mcfunction +0 -3
- package/dist/data/test/function/bigint_cmp__merge_7.mcfunction +0 -4
- package/dist/data/test/function/bigint_cmp__then_3.mcfunction +0 -2
- package/dist/data/test/function/bigint_cmp__then_6.mcfunction +0 -2
- package/dist/data/test/function/bigint_copy.mcfunction +0 -3
- package/dist/data/test/function/bigint_copy__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/bigint_copy__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_copy__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/bigint_is_zero.mcfunction +0 -4
- package/dist/data/test/function/bigint_is_zero__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/bigint_is_zero__loop_exit_2.mcfunction +0 -2
- package/dist/data/test/function/bigint_is_zero__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/bigint_is_zero__merge_4.mcfunction +0 -4
- package/dist/data/test/function/bigint_is_zero__then_3.mcfunction +0 -2
- package/dist/data/test/function/bigint_leading_zeros.mcfunction +0 -5
- package/dist/data/test/function/bigint_leading_zeros__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/bigint_leading_zeros__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_leading_zeros__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/bigint_leading_zeros__merge_4.mcfunction +0 -9
- package/dist/data/test/function/bigint_leading_zeros__then_3.mcfunction +0 -1
- package/dist/data/test/function/bigint_mul_small.mcfunction +0 -8
- package/dist/data/test/function/bigint_mul_small__arr_a__test_arrays__e__result__test_arrays__f.mcfunction +0 -7
- package/dist/data/test/function/bigint_mul_small__arr_a__test_arrays__e__result__test_arrays__f__loop_body_1.mcfunction +0 -20
- package/dist/data/test/function/bigint_mul_small__arr_a__test_arrays__e__result__test_arrays__f__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_mul_small__arr_a__test_arrays__e__result__test_arrays__f__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_mul_small__loop_body_1.mcfunction +0 -12
- package/dist/data/test/function/bigint_mul_small__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_mul_small__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_shift_left.mcfunction +0 -3
- package/dist/data/test/function/bigint_shift_left__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/bigint_shift_left__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_shift_left__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/bigint_sub.mcfunction +0 -8
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s.mcfunction +0 -6
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__loop_body_1.mcfunction +0 -13
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__merge_4.mcfunction +0 -4
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__merge_6.mcfunction +0 -7
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__then_3.mcfunction +0 -5
- package/dist/data/test/function/bigint_sub__arr_a__test_arrays__c__b__test_arrays__d__result__test_arrays__s__then_5.mcfunction +0 -2
- package/dist/data/test/function/bigint_sub__loop_body_1.mcfunction +0 -9
- package/dist/data/test/function/bigint_sub__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_sub__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bigint_sub__merge_4.mcfunction +0 -4
- package/dist/data/test/function/bigint_sub__merge_6.mcfunction +0 -4
- package/dist/data/test/function/bigint_sub__then_3.mcfunction +0 -5
- package/dist/data/test/function/bigint_sub__then_5.mcfunction +0 -2
- package/dist/data/test/function/bigint_zero.mcfunction +0 -3
- package/dist/data/test/function/bigint_zero__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/bigint_zero__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bigint_zero__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/billboard_y.mcfunction +0 -7
- package/dist/data/test/function/bit_and.mcfunction +0 -6
- package/dist/data/test/function/bit_and__loop_body_1.mcfunction +0 -10
- package/dist/data/test/function/bit_and__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_and__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/bit_and__merge_4.mcfunction +0 -8
- package/dist/data/test/function/bit_and__merge_6.mcfunction +0 -1
- package/dist/data/test/function/bit_and__then_3.mcfunction +0 -10
- package/dist/data/test/function/bit_and__then_5.mcfunction +0 -4
- package/dist/data/test/function/bit_clear.mcfunction +0 -5
- package/dist/data/test/function/bit_clear__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_clear__loop_exit_2.mcfunction +0 -10
- package/dist/data/test/function/bit_clear__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_clear__merge_4.mcfunction +0 -1
- package/dist/data/test/function/bit_clear__then_3.mcfunction +0 -3
- package/dist/data/test/function/bit_get.mcfunction +0 -5
- package/dist/data/test/function/bit_get__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_get__loop_exit_2.mcfunction +0 -6
- package/dist/data/test/function/bit_get__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_not.mcfunction +0 -5
- package/dist/data/test/function/bit_not__loop_body_1.mcfunction +0 -10
- package/dist/data/test/function/bit_not__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_not__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/bit_not__merge_4.mcfunction +0 -8
- package/dist/data/test/function/bit_not__then_3.mcfunction +0 -4
- package/dist/data/test/function/bit_or.mcfunction +0 -6
- package/dist/data/test/function/bit_or__loop_body_1.mcfunction +0 -10
- package/dist/data/test/function/bit_or__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_or__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/bit_or__merge_4.mcfunction +0 -10
- package/dist/data/test/function/bit_or__merge_6.mcfunction +0 -8
- package/dist/data/test/function/bit_or__merge_8.mcfunction +0 -1
- package/dist/data/test/function/bit_or__then_3.mcfunction +0 -4
- package/dist/data/test/function/bit_or__then_5.mcfunction +0 -10
- package/dist/data/test/function/bit_or__then_7.mcfunction +0 -4
- package/dist/data/test/function/bit_set.mcfunction +0 -5
- package/dist/data/test/function/bit_set__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_set__loop_exit_2.mcfunction +0 -10
- package/dist/data/test/function/bit_set__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_set__merge_4.mcfunction +0 -1
- package/dist/data/test/function/bit_set__then_3.mcfunction +0 -3
- package/dist/data/test/function/bit_shl.mcfunction +0 -5
- package/dist/data/test/function/bit_shl__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_shl__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_shl__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_shr.mcfunction +0 -5
- package/dist/data/test/function/bit_shr__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_shr__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_shr__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_toggle.mcfunction +0 -5
- package/dist/data/test/function/bit_toggle__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/bit_toggle__loop_exit_2.mcfunction +0 -10
- package/dist/data/test/function/bit_toggle__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/bit_toggle__merge_4.mcfunction +0 -3
- package/dist/data/test/function/bit_toggle__then_3.mcfunction +0 -3
- package/dist/data/test/function/bit_xor.mcfunction +0 -6
- package/dist/data/test/function/bit_xor__loop_body_1.mcfunction +0 -14
- package/dist/data/test/function/bit_xor__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/bit_xor__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/bit_xor__merge_4.mcfunction +0 -8
- package/dist/data/test/function/bit_xor__then_3.mcfunction +0 -4
- package/dist/data/test/function/bounce_v.mcfunction +0 -10
- package/dist/data/test/function/cbrt_fx.mcfunction +0 -5
- package/dist/data/test/function/cbrt_fx__loop_body_6.mcfunction +0 -7
- package/dist/data/test/function/cbrt_fx__loop_exit_7.mcfunction +0 -1
- package/dist/data/test/function/cbrt_fx__loop_header_5.mcfunction +0 -4
- package/dist/data/test/function/cbrt_fx__merge_1.mcfunction +0 -8
- package/dist/data/test/function/cbrt_fx__merge_11.mcfunction +0 -5
- package/dist/data/test/function/cbrt_fx__merge_13.mcfunction +0 -4
- package/dist/data/test/function/cbrt_fx__merge_4.mcfunction +0 -2
- package/dist/data/test/function/cbrt_fx__merge_9.mcfunction +0 -13
- package/dist/data/test/function/cbrt_fx__then_0.mcfunction +0 -2
- package/dist/data/test/function/cbrt_fx__then_10.mcfunction +0 -2
- package/dist/data/test/function/cbrt_fx__then_12.mcfunction +0 -2
- package/dist/data/test/function/cbrt_fx__then_3.mcfunction +0 -2
- package/dist/data/test/function/cbrt_fx__then_8.mcfunction +0 -2
- package/dist/data/test/function/ceil_div.mcfunction +0 -9
- package/dist/data/test/function/chebyshev.mcfunction +0 -14
- package/dist/data/test/function/chebyshev3d.mcfunction +0 -19
- package/dist/data/test/function/chebyshev3d__merge_1.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__merge_3.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__merge_5.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__merge_7.mcfunction +0 -3
- package/dist/data/test/function/chebyshev3d__merge_9.mcfunction +0 -1
- package/dist/data/test/function/chebyshev3d__then_0.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__then_2.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__then_4.mcfunction +0 -4
- package/dist/data/test/function/chebyshev3d__then_6.mcfunction +0 -2
- package/dist/data/test/function/chebyshev3d__then_8.mcfunction +0 -2
- package/dist/data/test/function/chebyshev__merge_1.mcfunction +0 -4
- package/dist/data/test/function/chebyshev__merge_3.mcfunction +0 -3
- package/dist/data/test/function/chebyshev__merge_5.mcfunction +0 -1
- package/dist/data/test/function/chebyshev__then_0.mcfunction +0 -4
- package/dist/data/test/function/chebyshev__then_2.mcfunction +0 -4
- package/dist/data/test/function/chebyshev__then_4.mcfunction +0 -1
- package/dist/data/test/function/chunk_hi.mcfunction +0 -5
- package/dist/data/test/function/chunk_lo.mcfunction +0 -5
- package/dist/data/test/function/circular_x.mcfunction +0 -14
- package/dist/data/test/function/circular_z.mcfunction +0 -14
- package/dist/data/test/function/clamp3.mcfunction +0 -7
- package/dist/data/test/function/clamp3__merge_1.mcfunction +0 -4
- package/dist/data/test/function/clamp3__merge_4.mcfunction +0 -1
- package/dist/data/test/function/clamp3__then_0.mcfunction +0 -1
- package/dist/data/test/function/clamp3__then_3.mcfunction +0 -1
- package/dist/data/test/function/clamp_circle_x.mcfunction +0 -13
- package/dist/data/test/function/clamp_circle_x__merge_1.mcfunction +0 -10
- package/dist/data/test/function/clamp_circle_x__then_0.mcfunction +0 -1
- package/dist/data/test/function/clamp_circle_y.mcfunction +0 -13
- package/dist/data/test/function/clamp_circle_y__merge_1.mcfunction +0 -10
- package/dist/data/test/function/clamp_circle_y__then_0.mcfunction +0 -1
- package/dist/data/test/function/clamp_velocity.mcfunction +0 -5
- package/dist/data/test/function/clamp_velocity__merge_1.mcfunction +0 -5
- package/dist/data/test/function/clamp_velocity__merge_4.mcfunction +0 -1
- package/dist/data/test/function/clamp_velocity__then_0.mcfunction +0 -1
- package/dist/data/test/function/clamp_velocity__then_3.mcfunction +0 -3
- package/dist/data/test/function/collatz_steps.mcfunction +0 -5
- package/dist/data/test/function/collatz_steps__else_8.mcfunction +0 -6
- package/dist/data/test/function/collatz_steps__loop_body_4.mcfunction +0 -7
- package/dist/data/test/function/collatz_steps__loop_exit_5.mcfunction +0 -1
- package/dist/data/test/function/collatz_steps__loop_header_3.mcfunction +0 -4
- package/dist/data/test/function/collatz_steps__merge_1.mcfunction +0 -3
- package/dist/data/test/function/collatz_steps__merge_7.mcfunction +0 -4
- package/dist/data/test/function/collatz_steps__then_0.mcfunction +0 -2
- package/dist/data/test/function/collatz_steps__then_6.mcfunction +0 -5
- package/dist/data/test/function/combinations.mcfunction +0 -6
- package/dist/data/test/function/combinations__loop_body_9.mcfunction +0 -15
- package/dist/data/test/function/combinations__loop_exit_10.mcfunction +0 -1
- package/dist/data/test/function/combinations__loop_header_8.mcfunction +0 -3
- package/dist/data/test/function/combinations__merge_1.mcfunction +0 -3
- package/dist/data/test/function/combinations__merge_4.mcfunction +0 -6
- package/dist/data/test/function/combinations__merge_7.mcfunction +0 -3
- package/dist/data/test/function/combinations__then_0.mcfunction +0 -2
- package/dist/data/test/function/combinations__then_3.mcfunction +0 -2
- package/dist/data/test/function/combinations__then_6.mcfunction +0 -4
- package/dist/data/test/function/cos_fixed.mcfunction +0 -7
- package/dist/data/test/function/cos_fixed__const_0.mcfunction +0 -5
- package/dist/data/test/function/cos_hp.mcfunction +0 -6
- package/dist/data/test/function/count_digits.mcfunction +0 -6
- package/dist/data/test/function/count_digits__loop_body_6.mcfunction +0 -8
- package/dist/data/test/function/count_digits__loop_exit_7.mcfunction +0 -1
- package/dist/data/test/function/count_digits__loop_header_5.mcfunction +0 -4
- package/dist/data/test/function/count_digits__merge_1.mcfunction +0 -4
- package/dist/data/test/function/count_digits__merge_3.mcfunction +0 -2
- package/dist/data/test/function/count_digits__then_0.mcfunction +0 -4
- package/dist/data/test/function/count_digits__then_2.mcfunction +0 -2
- package/dist/data/test/function/cross2d.mcfunction +0 -11
- package/dist/data/test/function/cross3d_x.mcfunction +0 -11
- package/dist/data/test/function/cross3d_y.mcfunction +0 -11
- package/dist/data/test/function/cross3d_z.mcfunction +0 -11
- package/dist/data/test/function/cylinder_contains.mcfunction +0 -21
- package/dist/data/test/function/cylinder_contains__merge_1.mcfunction +0 -2
- package/dist/data/test/function/cylinder_contains__then_0.mcfunction +0 -2
- package/dist/data/test/function/debug_bigint.mcfunction +0 -25
- package/dist/data/test/function/digit_sum.mcfunction +0 -6
- package/dist/data/test/function/digit_sum__loop_body_6.mcfunction +0 -11
- package/dist/data/test/function/digit_sum__loop_exit_7.mcfunction +0 -1
- package/dist/data/test/function/digit_sum__loop_header_5.mcfunction +0 -4
- package/dist/data/test/function/digit_sum__merge_1.mcfunction +0 -4
- package/dist/data/test/function/digit_sum__merge_3.mcfunction +0 -2
- package/dist/data/test/function/digit_sum__then_0.mcfunction +0 -4
- package/dist/data/test/function/digit_sum__then_2.mcfunction +0 -2
- package/dist/data/test/function/digital_root.mcfunction +0 -5
- package/dist/data/test/function/digital_root__merge_1.mcfunction +0 -8
- package/dist/data/test/function/digital_root__merge_4.mcfunction +0 -1
- package/dist/data/test/function/digital_root__then_0.mcfunction +0 -2
- package/dist/data/test/function/digital_root__then_3.mcfunction +0 -2
- package/dist/data/test/function/distance2d_fixed.mcfunction +0 -13
- package/dist/data/test/function/distance3d_fixed.mcfunction +0 -18
- package/dist/data/test/function/divfix.mcfunction +0 -6
- package/dist/data/test/function/divfix__merge_1.mcfunction +0 -6
- package/dist/data/test/function/divfix__then_0.mcfunction +0 -2
- package/dist/data/test/function/dot2d.mcfunction +0 -11
- package/dist/data/test/function/dot3d.mcfunction +0 -17
- package/dist/data/test/function/dump_advanced.mcfunction +0 -1
- package/dist/data/test/function/dump_bigint.mcfunction +0 -1
- package/dist/data/test/function/dump_math.mcfunction +0 -1
- package/dist/data/test/function/ease_in_back.mcfunction +0 -26
- package/dist/data/test/function/ease_in_bounce.mcfunction +0 -9
- package/dist/data/test/function/ease_in_cubic.mcfunction +0 -12
- package/dist/data/test/function/ease_in_expo.mcfunction +0 -6
- package/dist/data/test/function/ease_in_expo__merge_1.mcfunction +0 -11
- package/dist/data/test/function/ease_in_expo__then_0.mcfunction +0 -2
- package/dist/data/test/function/ease_in_out_back.mcfunction +0 -6
- package/dist/data/test/function/ease_in_out_back__merge_1.mcfunction +0 -14
- package/dist/data/test/function/ease_in_out_back__then_0.mcfunction +0 -10
- package/dist/data/test/function/ease_in_out_bounce.mcfunction +0 -6
- package/dist/data/test/function/ease_in_out_bounce__merge_1.mcfunction +0 -14
- package/dist/data/test/function/ease_in_out_bounce__then_0.mcfunction +0 -10
- package/dist/data/test/function/ease_in_out_cubic.mcfunction +0 -6
- package/dist/data/test/function/ease_in_out_cubic__merge_1.mcfunction +0 -17
- package/dist/data/test/function/ease_in_out_cubic__then_0.mcfunction +0 -13
- package/dist/data/test/function/ease_in_out_quad.mcfunction +0 -6
- package/dist/data/test/function/ease_in_out_quad__merge_1.mcfunction +0 -12
- package/dist/data/test/function/ease_in_out_quad__then_0.mcfunction +0 -8
- package/dist/data/test/function/ease_in_out_sine.mcfunction +0 -6
- package/dist/data/test/function/ease_in_out_sine__merge_1.mcfunction +0 -14
- package/dist/data/test/function/ease_in_out_sine__then_0.mcfunction +0 -10
- package/dist/data/test/function/ease_in_quad.mcfunction +0 -7
- package/dist/data/test/function/ease_in_quart.mcfunction +0 -12
- package/dist/data/test/function/ease_in_sine.mcfunction +0 -30
- package/dist/data/test/function/ease_linear.mcfunction +0 -2
- package/dist/data/test/function/ease_out_back.mcfunction +0 -9
- package/dist/data/test/function/ease_out_bounce.mcfunction +0 -7
- package/dist/data/test/function/ease_out_bounce__merge_1.mcfunction +0 -5
- package/dist/data/test/function/ease_out_bounce__merge_4.mcfunction +0 -5
- package/dist/data/test/function/ease_out_bounce__merge_7.mcfunction +0 -15
- package/dist/data/test/function/ease_out_bounce__then_0.mcfunction +0 -11
- package/dist/data/test/function/ease_out_bounce__then_3.mcfunction +0 -15
- package/dist/data/test/function/ease_out_bounce__then_6.mcfunction +0 -15
- package/dist/data/test/function/ease_out_cubic.mcfunction +0 -16
- package/dist/data/test/function/ease_out_expo.mcfunction +0 -6
- package/dist/data/test/function/ease_out_expo__merge_1.mcfunction +0 -8
- package/dist/data/test/function/ease_out_expo__then_0.mcfunction +0 -2
- package/dist/data/test/function/ease_out_quad.mcfunction +0 -11
- package/dist/data/test/function/ease_out_quart.mcfunction +0 -16
- package/dist/data/test/function/ease_out_sine.mcfunction +0 -9
- package/dist/data/test/function/ease_smooth.mcfunction +0 -23
- package/dist/data/test/function/ease_smoother.mcfunction +0 -41
- package/dist/data/test/function/exp_dist_approx.mcfunction +0 -13
- package/dist/data/test/function/exp_dist_approx__merge_1.mcfunction +0 -16
- package/dist/data/test/function/exp_dist_approx__merge_3.mcfunction +0 -11
- package/dist/data/test/function/exp_dist_approx__merge_5.mcfunction +0 -1
- package/dist/data/test/function/exp_dist_approx__then_0.mcfunction +0 -4
- package/dist/data/test/function/exp_dist_approx__then_2.mcfunction +0 -2
- package/dist/data/test/function/exp_dist_approx__then_4.mcfunction +0 -2
- package/dist/data/test/function/exp_fx.mcfunction +0 -16
- package/dist/data/test/function/exp_fx__loop_body_10.mcfunction +0 -8
- package/dist/data/test/function/exp_fx__loop_body_5.mcfunction +0 -8
- package/dist/data/test/function/exp_fx__loop_exit_11.mcfunction +0 -1
- package/dist/data/test/function/exp_fx__loop_exit_6.mcfunction +0 -1
- package/dist/data/test/function/exp_fx__loop_header_4.mcfunction +0 -3
- package/dist/data/test/function/exp_fx__loop_header_9.mcfunction +0 -3
- package/dist/data/test/function/exp_fx__merge_1.mcfunction +0 -47
- package/dist/data/test/function/exp_fx__merge_3.mcfunction +0 -4
- package/dist/data/test/function/exp_fx__merge_8.mcfunction +0 -1
- package/dist/data/test/function/exp_fx__then_0.mcfunction +0 -7
- package/dist/data/test/function/exp_fx__then_2.mcfunction +0 -2
- package/dist/data/test/function/exp_fx__then_7.mcfunction +0 -5
- package/dist/data/test/function/factorial.mcfunction +0 -5
- package/dist/data/test/function/factorial__loop_body_4.mcfunction +0 -7
- package/dist/data/test/function/factorial__loop_exit_5.mcfunction +0 -1
- package/dist/data/test/function/factorial__loop_header_3.mcfunction +0 -3
- package/dist/data/test/function/factorial__merge_1.mcfunction +0 -3
- package/dist/data/test/function/factorial__then_0.mcfunction +0 -2
- package/dist/data/test/function/fbm_1d.mcfunction +0 -9
- package/dist/data/test/function/fbm_1d__loop_body_1.mcfunction +0 -33
- package/dist/data/test/function/fbm_1d__loop_exit_2.mcfunction +0 -5
- package/dist/data/test/function/fbm_1d__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/fbm_1d__merge_4.mcfunction +0 -6
- package/dist/data/test/function/fbm_1d__then_3.mcfunction +0 -2
- package/dist/data/test/function/fbm_2d.mcfunction +0 -10
- package/dist/data/test/function/fbm_2d__loop_body_1.mcfunction +0 -39
- package/dist/data/test/function/fbm_2d__loop_exit_2.mcfunction +0 -5
- package/dist/data/test/function/fbm_2d__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/fbm_2d__merge_4.mcfunction +0 -6
- package/dist/data/test/function/fbm_2d__then_3.mcfunction +0 -2
- package/dist/data/test/function/fib.mcfunction +0 -5
- package/dist/data/test/function/fib__loop_body_7.mcfunction +0 -8
- package/dist/data/test/function/fib__loop_exit_8.mcfunction +0 -1
- package/dist/data/test/function/fib__loop_header_6.mcfunction +0 -3
- package/dist/data/test/function/fib__merge_1.mcfunction +0 -4
- package/dist/data/test/function/fib__merge_4.mcfunction +0 -4
- package/dist/data/test/function/fib__then_0.mcfunction +0 -2
- package/dist/data/test/function/fib__then_3.mcfunction +0 -2
- package/dist/data/test/function/format_time_h.mcfunction +0 -5
- package/dist/data/test/function/format_time_m.mcfunction +0 -8
- package/dist/data/test/function/format_time_s.mcfunction +0 -8
- package/dist/data/test/function/friction_decel.mcfunction +0 -5
- package/dist/data/test/function/friction_decel__merge_1.mcfunction +0 -5
- package/dist/data/test/function/friction_decel__merge_4.mcfunction +0 -2
- package/dist/data/test/function/friction_decel__then_0.mcfunction +0 -3
- package/dist/data/test/function/friction_decel__then_3.mcfunction +0 -3
- package/dist/data/test/function/gamma_int.mcfunction +0 -5
- package/dist/data/test/function/gamma_int__merge_1.mcfunction +0 -6
- package/dist/data/test/function/gamma_int__then_0.mcfunction +0 -2
- package/dist/data/test/function/gcd.mcfunction +0 -7
- package/dist/data/test/function/gcd__loop_body_5.mcfunction +0 -5
- package/dist/data/test/function/gcd__loop_exit_6.mcfunction +0 -1
- package/dist/data/test/function/gcd__loop_header_4.mcfunction +0 -4
- package/dist/data/test/function/gcd__merge_1.mcfunction +0 -5
- package/dist/data/test/function/gcd__merge_3.mcfunction +0 -1
- package/dist/data/test/function/gcd__then_0.mcfunction +0 -4
- package/dist/data/test/function/gcd__then_2.mcfunction +0 -4
- package/dist/data/test/function/gravity_fx.mcfunction +0 -2
- package/dist/data/test/function/hash_1d.mcfunction +0 -15
- package/dist/data/test/function/hash_1d_pos.mcfunction +0 -10
- package/dist/data/test/function/hash_1d_pos__merge_1.mcfunction +0 -4
- package/dist/data/test/function/hash_1d_pos__then_0.mcfunction +0 -4
- package/dist/data/test/function/hash_2d.mcfunction +0 -11
- package/dist/data/test/function/hash_2d_pos.mcfunction +0 -12
- package/dist/data/test/function/hash_2d_pos__merge_1.mcfunction +0 -4
- package/dist/data/test/function/hash_2d_pos__then_0.mcfunction +0 -4
- package/dist/data/test/function/hash_int.mcfunction +0 -6
- package/dist/data/test/function/hash_int__merge_1.mcfunction +0 -14
- package/dist/data/test/function/hash_int__merge_3.mcfunction +0 -14
- package/dist/data/test/function/hash_int__merge_5.mcfunction +0 -1
- package/dist/data/test/function/hash_int__then_0.mcfunction +0 -4
- package/dist/data/test/function/hash_int__then_2.mcfunction +0 -4
- package/dist/data/test/function/hash_int__then_4.mcfunction +0 -4
- package/dist/data/test/function/hsl_to_b.mcfunction +0 -24
- package/dist/data/test/function/hsl_to_b__merge_1.mcfunction +0 -30
- package/dist/data/test/function/hsl_to_b__merge_12.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_b__merge_15.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_b__merge_3.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_b__merge_6.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_b__merge_9.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_b__then_0.mcfunction +0 -4
- package/dist/data/test/function/hsl_to_b__then_11.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_b__then_14.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_b__then_2.mcfunction +0 -1
- package/dist/data/test/function/hsl_to_b__then_5.mcfunction +0 -1
- package/dist/data/test/function/hsl_to_b__then_8.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_g.mcfunction +0 -24
- package/dist/data/test/function/hsl_to_g__merge_1.mcfunction +0 -30
- package/dist/data/test/function/hsl_to_g__merge_12.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_g__merge_15.mcfunction +0 -1
- package/dist/data/test/function/hsl_to_g__merge_3.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_g__merge_6.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_g__merge_9.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_g__then_0.mcfunction +0 -4
- package/dist/data/test/function/hsl_to_g__then_11.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_g__then_14.mcfunction +0 -1
- package/dist/data/test/function/hsl_to_g__then_2.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_g__then_5.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_g__then_8.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_packed.mcfunction +0 -24
- package/dist/data/test/function/hsl_to_r.mcfunction +0 -24
- package/dist/data/test/function/hsl_to_r__merge_1.mcfunction +0 -30
- package/dist/data/test/function/hsl_to_r__merge_12.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_r__merge_15.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_r__merge_3.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_r__merge_6.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_r__merge_9.mcfunction +0 -5
- package/dist/data/test/function/hsl_to_r__then_0.mcfunction +0 -4
- package/dist/data/test/function/hsl_to_r__then_11.mcfunction +0 -1
- package/dist/data/test/function/hsl_to_r__then_14.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_r__then_2.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_r__then_5.mcfunction +0 -3
- package/dist/data/test/function/hsl_to_r__then_8.mcfunction +0 -1
- package/dist/data/test/function/impact_velocity.mcfunction +0 -5
- package/dist/data/test/function/impact_velocity__merge_1.mcfunction +0 -16
- package/dist/data/test/function/impact_velocity__then_0.mcfunction +0 -2
- package/dist/data/test/function/init_trig.mcfunction +0 -1
- package/dist/data/test/function/int32_to_bigint3_hi.mcfunction +0 -5
- package/dist/data/test/function/int32_to_bigint3_hi__merge_1.mcfunction +0 -4
- package/dist/data/test/function/int32_to_bigint3_hi__then_0.mcfunction +0 -4
- package/dist/data/test/function/int32_to_bigint3_lo.mcfunction +0 -5
- package/dist/data/test/function/int32_to_bigint3_lo__merge_1.mcfunction +0 -4
- package/dist/data/test/function/int32_to_bigint3_lo__then_0.mcfunction +0 -4
- package/dist/data/test/function/int32_to_bigint3_mid.mcfunction +0 -5
- package/dist/data/test/function/int32_to_bigint3_mid__merge_1.mcfunction +0 -7
- package/dist/data/test/function/int32_to_bigint3_mid__then_0.mcfunction +0 -4
- package/dist/data/test/function/is_grounded.mcfunction +0 -5
- package/dist/data/test/function/is_grounded__merge_1.mcfunction +0 -2
- package/dist/data/test/function/is_grounded__then_0.mcfunction +0 -2
- package/dist/data/test/function/is_prime.mcfunction +0 -5
- package/dist/data/test/function/is_prime__loop_body_10.mcfunction +0 -6
- package/dist/data/test/function/is_prime__loop_exit_11.mcfunction +0 -2
- package/dist/data/test/function/is_prime__loop_header_9.mcfunction +0 -5
- package/dist/data/test/function/is_prime__merge_1.mcfunction +0 -4
- package/dist/data/test/function/is_prime__merge_13.mcfunction +0 -4
- package/dist/data/test/function/is_prime__merge_4.mcfunction +0 -7
- package/dist/data/test/function/is_prime__merge_7.mcfunction +0 -2
- package/dist/data/test/function/is_prime__then_0.mcfunction +0 -2
- package/dist/data/test/function/is_prime__then_12.mcfunction +0 -2
- package/dist/data/test/function/is_prime__then_3.mcfunction +0 -2
- package/dist/data/test/function/is_prime__then_6.mcfunction +0 -2
- package/dist/data/test/function/isqrt.mcfunction +0 -5
- package/dist/data/test/function/isqrt__loop_body_10.mcfunction +0 -8
- package/dist/data/test/function/isqrt__loop_body_13.mcfunction +0 -11
- package/dist/data/test/function/isqrt__loop_body_7.mcfunction +0 -8
- package/dist/data/test/function/isqrt__loop_exit_11.mcfunction +0 -2
- package/dist/data/test/function/isqrt__loop_exit_14.mcfunction +0 -1
- package/dist/data/test/function/isqrt__loop_exit_8.mcfunction +0 -9
- package/dist/data/test/function/isqrt__loop_header_12.mcfunction +0 -4
- package/dist/data/test/function/isqrt__loop_header_6.mcfunction +0 -4
- package/dist/data/test/function/isqrt__loop_header_9.mcfunction +0 -3
- package/dist/data/test/function/isqrt__merge_1.mcfunction +0 -4
- package/dist/data/test/function/isqrt__merge_16.mcfunction +0 -5
- package/dist/data/test/function/isqrt__merge_4.mcfunction +0 -3
- package/dist/data/test/function/isqrt__then_0.mcfunction +0 -2
- package/dist/data/test/function/isqrt__then_15.mcfunction +0 -1
- package/dist/data/test/function/isqrt__then_3.mcfunction +0 -2
- package/dist/data/test/function/julia_iter.mcfunction +0 -9
- package/dist/data/test/function/julia_iter__loop_body_1.mcfunction +0 -36
- package/dist/data/test/function/julia_iter__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/julia_iter__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/julia_iter__merge_4.mcfunction +0 -4
- package/dist/data/test/function/julia_iter__then_3.mcfunction +0 -1
- package/dist/data/test/function/lambda_demo.mcfunction +0 -2
- package/dist/data/test/function/lcm.mcfunction +0 -11
- package/dist/data/test/function/lcm__merge_1.mcfunction +0 -5
- package/dist/data/test/function/lcm__then_0.mcfunction +0 -2
- package/dist/data/test/function/length2d_fixed.mcfunction +0 -15
- package/dist/data/test/function/length3d_fixed.mcfunction +0 -20
- package/dist/data/test/function/lerp.mcfunction +0 -13
- package/dist/data/test/function/lerp2d_x.mcfunction +0 -13
- package/dist/data/test/function/lerp2d_y.mcfunction +0 -13
- package/dist/data/test/function/lerp_angle.mcfunction +0 -7
- package/dist/data/test/function/lerp_angle__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/lerp_angle__loop_body_4.mcfunction +0 -4
- package/dist/data/test/function/lerp_angle__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/lerp_angle__loop_exit_5.mcfunction +0 -8
- package/dist/data/test/function/lerp_angle__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/lerp_angle__loop_header_3.mcfunction +0 -3
- package/dist/data/test/function/list_avg.mcfunction +0 -9
- package/dist/data/test/function/list_clamp_all.mcfunction +0 -6
- package/dist/data/test/function/list_clamp_all__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_clamp_all__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_clamp_all__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_clamp_all__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_clamp_all__merge_6.mcfunction +0 -4
- package/dist/data/test/function/list_clamp_all__then_3.mcfunction +0 -1
- package/dist/data/test/function/list_clamp_all__then_5.mcfunction +0 -1
- package/dist/data/test/function/list_contains.mcfunction +0 -5
- package/dist/data/test/function/list_contains__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_contains__loop_exit_2.mcfunction +0 -2
- package/dist/data/test/function/list_contains__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_contains__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_contains__then_3.mcfunction +0 -2
- package/dist/data/test/function/list_count_if_gt.mcfunction +0 -6
- package/dist/data/test/function/list_count_if_gt__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_count_if_gt__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_count_if_gt__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_count_if_gt__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_count_if_gt__then_3.mcfunction +0 -4
- package/dist/data/test/function/list_fill.mcfunction +0 -3
- package/dist/data/test/function/list_fill__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_fill__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_fill__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_index_of.mcfunction +0 -5
- package/dist/data/test/function/list_index_of__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_index_of__loop_exit_2.mcfunction +0 -2
- package/dist/data/test/function/list_index_of__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_index_of__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_index_of__then_3.mcfunction +0 -1
- package/dist/data/test/function/list_max.mcfunction +0 -5
- package/dist/data/test/function/list_max3.mcfunction +0 -8
- package/dist/data/test/function/list_max3__merge_1.mcfunction +0 -4
- package/dist/data/test/function/list_max3__merge_3.mcfunction +0 -1
- package/dist/data/test/function/list_max3__then_0.mcfunction +0 -2
- package/dist/data/test/function/list_max3__then_2.mcfunction +0 -2
- package/dist/data/test/function/list_max5.mcfunction +0 -10
- package/dist/data/test/function/list_max5__merge_1.mcfunction +0 -4
- package/dist/data/test/function/list_max5__merge_3.mcfunction +0 -4
- package/dist/data/test/function/list_max5__merge_5.mcfunction +0 -4
- package/dist/data/test/function/list_max5__merge_7.mcfunction +0 -1
- package/dist/data/test/function/list_max5__then_0.mcfunction +0 -2
- package/dist/data/test/function/list_max5__then_2.mcfunction +0 -2
- package/dist/data/test/function/list_max5__then_4.mcfunction +0 -2
- package/dist/data/test/function/list_max5__then_6.mcfunction +0 -2
- package/dist/data/test/function/list_max__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_max__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_max__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_max__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_max__then_3.mcfunction +0 -2
- package/dist/data/test/function/list_min.mcfunction +0 -5
- package/dist/data/test/function/list_min3.mcfunction +0 -8
- package/dist/data/test/function/list_min3__merge_1.mcfunction +0 -4
- package/dist/data/test/function/list_min3__merge_3.mcfunction +0 -1
- package/dist/data/test/function/list_min3__then_0.mcfunction +0 -2
- package/dist/data/test/function/list_min3__then_2.mcfunction +0 -2
- package/dist/data/test/function/list_min5.mcfunction +0 -10
- package/dist/data/test/function/list_min5__merge_1.mcfunction +0 -4
- package/dist/data/test/function/list_min5__merge_3.mcfunction +0 -4
- package/dist/data/test/function/list_min5__merge_5.mcfunction +0 -4
- package/dist/data/test/function/list_min5__merge_7.mcfunction +0 -1
- package/dist/data/test/function/list_min5__then_0.mcfunction +0 -2
- package/dist/data/test/function/list_min5__then_2.mcfunction +0 -2
- package/dist/data/test/function/list_min5__then_4.mcfunction +0 -2
- package/dist/data/test/function/list_min5__then_6.mcfunction +0 -2
- package/dist/data/test/function/list_min__loop_body_1.mcfunction +0 -4
- package/dist/data/test/function/list_min__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_min__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_min__merge_4.mcfunction +0 -4
- package/dist/data/test/function/list_min__then_3.mcfunction +0 -2
- package/dist/data/test/function/list_reverse.mcfunction +0 -6
- package/dist/data/test/function/list_reverse__loop_body_1.mcfunction +0 -9
- package/dist/data/test/function/list_reverse__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_reverse__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/list_sort_asc.mcfunction +0 -4
- package/dist/data/test/function/list_sort_asc__loop_body_1.mcfunction +0 -2
- package/dist/data/test/function/list_sort_asc__loop_body_4.mcfunction +0 -4
- package/dist/data/test/function/list_sort_asc__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_sort_asc__loop_exit_5.mcfunction +0 -4
- package/dist/data/test/function/list_sort_asc__loop_header_0.mcfunction +0 -6
- package/dist/data/test/function/list_sort_asc__loop_header_3.mcfunction +0 -8
- package/dist/data/test/function/list_sort_asc__merge_7.mcfunction +0 -4
- package/dist/data/test/function/list_sort_asc__then_6.mcfunction +0 -1
- package/dist/data/test/function/list_sort_desc.mcfunction +0 -4
- package/dist/data/test/function/list_sort_desc__loop_body_1.mcfunction +0 -2
- package/dist/data/test/function/list_sort_desc__loop_body_4.mcfunction +0 -4
- package/dist/data/test/function/list_sort_desc__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_sort_desc__loop_exit_5.mcfunction +0 -4
- package/dist/data/test/function/list_sort_desc__loop_header_0.mcfunction +0 -6
- package/dist/data/test/function/list_sort_desc__loop_header_3.mcfunction +0 -8
- package/dist/data/test/function/list_sort_desc__merge_7.mcfunction +0 -4
- package/dist/data/test/function/list_sort_desc__then_6.mcfunction +0 -1
- package/dist/data/test/function/list_sum.mcfunction +0 -5
- package/dist/data/test/function/list_sum3.mcfunction +0 -8
- package/dist/data/test/function/list_sum4.mcfunction +0 -11
- package/dist/data/test/function/list_sum5.mcfunction +0 -14
- package/dist/data/test/function/list_sum__loop_body_1.mcfunction +0 -7
- package/dist/data/test/function/list_sum__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/list_sum__loop_header_0.mcfunction +0 -4
- package/dist/data/test/function/ln.mcfunction +0 -9
- package/dist/data/test/function/ln__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/ln__loop_body_4.mcfunction +0 -8
- package/dist/data/test/function/ln__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/ln__loop_exit_5.mcfunction +0 -37
- package/dist/data/test/function/ln__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/ln__loop_header_3.mcfunction +0 -6
- package/dist/data/test/function/load.mcfunction +0 -1
- package/dist/data/test/function/log10_fx.mcfunction +0 -11
- package/dist/data/test/function/log2_fx.mcfunction +0 -11
- package/dist/data/test/function/log2_int.mcfunction +0 -5
- package/dist/data/test/function/log2_int__loop_body_4.mcfunction +0 -8
- package/dist/data/test/function/log2_int__loop_exit_5.mcfunction +0 -1
- package/dist/data/test/function/log2_int__loop_header_3.mcfunction +0 -4
- package/dist/data/test/function/log2_int__merge_1.mcfunction +0 -3
- package/dist/data/test/function/log2_int__then_0.mcfunction +0 -2
- package/dist/data/test/function/loga_fx.mcfunction +0 -10
- package/dist/data/test/function/loga_fx__merge_1.mcfunction +0 -9
- package/dist/data/test/function/loga_fx__then_0.mcfunction +0 -2
- package/dist/data/test/function/mandelbrot_iter.mcfunction +0 -7
- package/dist/data/test/function/mandelbrot_iter__loop_body_1.mcfunction +0 -36
- package/dist/data/test/function/mandelbrot_iter__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/mandelbrot_iter__loop_header_0.mcfunction +0 -3
- package/dist/data/test/function/mandelbrot_iter__merge_4.mcfunction +0 -4
- package/dist/data/test/function/mandelbrot_iter__then_3.mcfunction +0 -1
- package/dist/data/test/function/manhattan.mcfunction +0 -14
- package/dist/data/test/function/manhattan3d.mcfunction +0 -19
- package/dist/data/test/function/manhattan3d__merge_1.mcfunction +0 -4
- package/dist/data/test/function/manhattan3d__merge_3.mcfunction +0 -4
- package/dist/data/test/function/manhattan3d__merge_5.mcfunction +0 -5
- package/dist/data/test/function/manhattan3d__then_0.mcfunction +0 -4
- package/dist/data/test/function/manhattan3d__then_2.mcfunction +0 -4
- package/dist/data/test/function/manhattan3d__then_4.mcfunction +0 -4
- package/dist/data/test/function/manhattan__merge_1.mcfunction +0 -4
- package/dist/data/test/function/manhattan__merge_3.mcfunction +0 -3
- package/dist/data/test/function/manhattan__then_0.mcfunction +0 -4
- package/dist/data/test/function/manhattan__then_2.mcfunction +0 -4
- package/dist/data/test/function/map.mcfunction +0 -12
- package/dist/data/test/function/map__merge_1.mcfunction +0 -11
- package/dist/data/test/function/map__then_0.mcfunction +0 -1
- package/dist/data/test/function/mc_day_angle.mcfunction +0 -16
- package/dist/data/test/function/midpoint.mcfunction +0 -8
- package/dist/data/test/function/mod_pow.mcfunction +0 -7
- package/dist/data/test/function/mod_pow__loop_body_6.mcfunction +0 -7
- package/dist/data/test/function/mod_pow__loop_exit_7.mcfunction +0 -1
- package/dist/data/test/function/mod_pow__loop_header_5.mcfunction +0 -4
- package/dist/data/test/function/mod_pow__merge_1.mcfunction +0 -8
- package/dist/data/test/function/mod_pow__merge_4.mcfunction +0 -2
- package/dist/data/test/function/mod_pow__merge_9.mcfunction +0 -10
- package/dist/data/test/function/mod_pow__then_0.mcfunction +0 -2
- package/dist/data/test/function/mod_pow__then_3.mcfunction +0 -4
- package/dist/data/test/function/mod_pow__then_8.mcfunction +0 -6
- package/dist/data/test/function/mulfix.mcfunction +0 -8
- package/dist/data/test/function/neg2d_x.mcfunction +0 -4
- package/dist/data/test/function/neg2d_y.mcfunction +0 -4
- package/dist/data/test/function/neg3d_x.mcfunction +0 -4
- package/dist/data/test/function/neg3d_y.mcfunction +0 -4
- package/dist/data/test/function/neg3d_z.mcfunction +0 -4
- package/dist/data/test/function/newton_sqrt.mcfunction +0 -5
- package/dist/data/test/function/newton_sqrt__loop_body_7.mcfunction +0 -10
- package/dist/data/test/function/newton_sqrt__loop_exit_8.mcfunction +0 -1
- package/dist/data/test/function/newton_sqrt__loop_header_6.mcfunction +0 -3
- package/dist/data/test/function/newton_sqrt__merge_1.mcfunction +0 -4
- package/dist/data/test/function/newton_sqrt__merge_4.mcfunction +0 -6
- package/dist/data/test/function/newton_sqrt__then_0.mcfunction +0 -2
- package/dist/data/test/function/newton_sqrt__then_3.mcfunction +0 -2
- package/dist/data/test/function/next_lcg.mcfunction +0 -7
- package/dist/data/test/function/noise1d.mcfunction +0 -13
- package/dist/data/test/function/noise1d__merge_1.mcfunction +0 -20
- package/dist/data/test/function/noise1d__merge_3.mcfunction +0 -4
- package/dist/data/test/function/noise1d__merge_5.mcfunction +0 -11
- package/dist/data/test/function/noise1d__then_0.mcfunction +0 -7
- package/dist/data/test/function/noise1d__then_2.mcfunction +0 -4
- package/dist/data/test/function/noise1d__then_4.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12.mcfunction +0 -16
- package/dist/data/test/function/normal_approx12__merge_1.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_11.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_13.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_15.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_17.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_19.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_21.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_23.mcfunction +0 -9
- package/dist/data/test/function/normal_approx12__merge_3.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_5.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_7.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__merge_9.mcfunction +0 -18
- package/dist/data/test/function/normal_approx12__then_0.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_10.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_12.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_14.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_16.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_18.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_2.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_20.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_22.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_4.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_6.mcfunction +0 -4
- package/dist/data/test/function/normal_approx12__then_8.mcfunction +0 -4
- package/dist/data/test/function/normalize2d_x.mcfunction +0 -11
- package/dist/data/test/function/normalize2d_x__merge_1.mcfunction +0 -6
- package/dist/data/test/function/normalize2d_x__then_0.mcfunction +0 -2
- package/dist/data/test/function/normalize2d_y.mcfunction +0 -11
- package/dist/data/test/function/normalize2d_y__merge_1.mcfunction +0 -6
- package/dist/data/test/function/normalize2d_y__then_0.mcfunction +0 -2
- package/dist/data/test/function/parabola_land_t.mcfunction +0 -7
- package/dist/data/test/function/parabola_x.mcfunction +0 -8
- package/dist/data/test/function/parabola_y.mcfunction +0 -17
- package/dist/data/test/function/pcg_next_hi.mcfunction +0 -8
- package/dist/data/test/function/pcg_next_lo.mcfunction +0 -7
- package/dist/data/test/function/pcg_output.mcfunction +0 -15
- package/dist/data/test/function/pcg_output__merge_1.mcfunction +0 -1
- package/dist/data/test/function/pcg_output__then_0.mcfunction +0 -4
- package/dist/data/test/function/popcount.mcfunction +0 -5
- package/dist/data/test/function/popcount__loop_body_1.mcfunction +0 -8
- package/dist/data/test/function/popcount__loop_exit_2.mcfunction +0 -1
- package/dist/data/test/function/popcount__loop_header_0.mcfunction +0 -5
- package/dist/data/test/function/popcount__merge_4.mcfunction +0 -8
- package/dist/data/test/function/popcount__then_3.mcfunction +0 -4
- package/dist/data/test/function/pow_int.mcfunction +0 -6
- package/dist/data/test/function/pow_int__loop_body_4.mcfunction +0 -7
- package/dist/data/test/function/pow_int__loop_exit_5.mcfunction +0 -1
- package/dist/data/test/function/pow_int__loop_header_3.mcfunction +0 -4
- package/dist/data/test/function/pow_int__merge_1.mcfunction +0 -4
- package/dist/data/test/function/pow_int__merge_7.mcfunction +0 -8
- package/dist/data/test/function/pow_int__then_0.mcfunction +0 -2
- package/dist/data/test/function/pow_int__then_6.mcfunction +0 -4
- package/dist/data/test/function/projectile_land_t.mcfunction +0 -5
- package/dist/data/test/function/projectile_land_t__merge_1.mcfunction +0 -7
- package/dist/data/test/function/projectile_land_t__then_0.mcfunction +0 -2
- package/dist/data/test/function/projectile_max_height.mcfunction +0 -10
- package/dist/data/test/function/projectile_vy.mcfunction +0 -9
- package/dist/data/test/function/projectile_x.mcfunction +0 -8
- package/dist/data/test/function/projectile_y.mcfunction +0 -19
- package/dist/data/test/function/ptimer/new.mcfunction +0 -3
- package/dist/data/test/function/ptimer/reset.mcfunction +0 -1
- package/dist/data/test/function/ptimer/tick.mcfunction +0 -8
- package/dist/data/test/function/ptimer/tick__merge_1.mcfunction +0 -2
- package/dist/data/test/function/ptimer/tick__then_0.mcfunction +0 -3
- package/dist/data/test/function/quadratic_disc.mcfunction +0 -12
- package/dist/data/test/function/quadratic_x1.mcfunction +0 -7
- package/dist/data/test/function/quadratic_x1__merge_1.mcfunction +0 -13
- package/dist/data/test/function/quadratic_x1__merge_4.mcfunction +0 -15
- package/dist/data/test/function/quadratic_x1__then_0.mcfunction +0 -2
- package/dist/data/test/function/quadratic_x1__then_3.mcfunction +0 -2
- package/dist/data/test/function/quadratic_x2.mcfunction +0 -7
- package/dist/data/test/function/quadratic_x2__merge_1.mcfunction +0 -13
- package/dist/data/test/function/quadratic_x2__merge_4.mcfunction +0 -15
- package/dist/data/test/function/quadratic_x2__then_0.mcfunction +0 -2
- package/dist/data/test/function/quadratic_x2__then_3.mcfunction +0 -2
- package/dist/data/test/function/quat_cos_half.mcfunction +0 -8
- package/dist/data/test/function/quat_sin_half.mcfunction +0 -8
- package/dist/data/test/function/random_bool.mcfunction +0 -7
- package/dist/data/test/function/random_bool__merge_1.mcfunction +0 -4
- package/dist/data/test/function/random_bool__then_0.mcfunction +0 -4
- package/dist/data/test/function/random_range.mcfunction +0 -9
- package/dist/data/test/function/random_range__merge_1.mcfunction +0 -7
- package/dist/data/test/function/random_range__then_0.mcfunction +0 -4
- package/dist/data/test/function/reverse_int.mcfunction +0 -7
- package/dist/data/test/function/reverse_int__loop_body_3.mcfunction +0 -14
- package/dist/data/test/function/reverse_int__loop_exit_4.mcfunction +0 -4
- package/dist/data/test/function/reverse_int__loop_header_2.mcfunction +0 -4
- package/dist/data/test/function/reverse_int__merge_1.mcfunction +0 -2
- package/dist/data/test/function/reverse_int__merge_6.mcfunction +0 -1
- package/dist/data/test/function/reverse_int__then_0.mcfunction +0 -5
- package/dist/data/test/function/reverse_int__then_5.mcfunction +0 -3
- package/dist/data/test/function/rgb_b.mcfunction +0 -5
- package/dist/data/test/function/rgb_g.mcfunction +0 -8
- package/dist/data/test/function/rgb_lerp.mcfunction +0 -71
- package/dist/data/test/function/rgb_pack.mcfunction +0 -14
- package/dist/data/test/function/rgb_r.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_h.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_h__merge_1.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_h__merge_12.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_h__merge_14.mcfunction +0 -1
- package/dist/data/test/function/rgb_to_h__merge_17.mcfunction +0 -9
- package/dist/data/test/function/rgb_to_h__merge_3.mcfunction +0 -5
- package/dist/data/test/function/rgb_to_h__merge_5.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_h__merge_7.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_h__merge_9.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_h__then_0.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_h__then_11.mcfunction +0 -12
- package/dist/data/test/function/rgb_to_h__then_13.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_h__then_16.mcfunction +0 -9
- package/dist/data/test/function/rgb_to_h__then_2.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_h__then_4.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_h__then_6.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_h__then_8.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_l.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_l__merge_1.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_l__merge_3.mcfunction +0 -5
- package/dist/data/test/function/rgb_to_l__merge_5.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_l__merge_7.mcfunction +0 -9
- package/dist/data/test/function/rgb_to_l__then_0.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_l__then_2.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_l__then_4.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_l__then_6.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_s.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_s__merge_1.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_s__merge_12.mcfunction +0 -10
- package/dist/data/test/function/rgb_to_s__merge_3.mcfunction +0 -5
- package/dist/data/test/function/rgb_to_s__merge_5.mcfunction +0 -4
- package/dist/data/test/function/rgb_to_s__merge_7.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_s__merge_9.mcfunction +0 -13
- package/dist/data/test/function/rgb_to_s__then_0.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_s__then_11.mcfunction +0 -8
- package/dist/data/test/function/rgb_to_s__then_2.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_s__then_4.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_s__then_6.mcfunction +0 -2
- package/dist/data/test/function/rgb_to_s__then_8.mcfunction +0 -2
- package/dist/data/test/function/rotate2d_x.mcfunction +0 -20
- package/dist/data/test/function/rotate2d_y.mcfunction +0 -20
- package/dist/data/test/function/rotate_x_y.mcfunction +0 -28
- package/dist/data/test/function/rotate_x_z.mcfunction +0 -28
- package/dist/data/test/function/rotate_y_x.mcfunction +0 -28
- package/dist/data/test/function/rotate_y_z.mcfunction +0 -30
- package/dist/data/test/function/scale2d_x.mcfunction +0 -8
- package/dist/data/test/function/scale2d_y.mcfunction +0 -8
- package/dist/data/test/function/scale3d_x.mcfunction +0 -8
- package/dist/data/test/function/scale3d_y.mcfunction +0 -8
- package/dist/data/test/function/scale3d_z.mcfunction +0 -8
- package/dist/data/test/function/scale_x.mcfunction +0 -8
- package/dist/data/test/function/scale_y.mcfunction +0 -8
- package/dist/data/test/function/scale_z.mcfunction +0 -8
- package/dist/data/test/function/seconds_to_ticks.mcfunction +0 -5
- package/dist/data/test/function/showcase_load.mcfunction +0 -4
- package/dist/data/test/function/showcase_tick.mcfunction +0 -1
- package/dist/data/test/function/sign.mcfunction +0 -5
- package/dist/data/test/function/sign__merge_1.mcfunction +0 -4
- package/dist/data/test/function/sign__merge_4.mcfunction +0 -2
- package/dist/data/test/function/sign__then_0.mcfunction +0 -2
- package/dist/data/test/function/sign__then_3.mcfunction +0 -2
- package/dist/data/test/function/sin_fixed.mcfunction +0 -9
- package/dist/data/test/function/sin_fixed__merge_1.mcfunction +0 -4
- package/dist/data/test/function/sin_fixed__merge_3.mcfunction +0 -4
- package/dist/data/test/function/sin_fixed__merge_6.mcfunction +0 -4
- package/dist/data/test/function/sin_fixed__merge_9.mcfunction +0 -10
- package/dist/data/test/function/sin_fixed__then_0.mcfunction +0 -4
- package/dist/data/test/function/sin_fixed__then_2.mcfunction +0 -6
- package/dist/data/test/function/sin_fixed__then_5.mcfunction +0 -8
- package/dist/data/test/function/sin_fixed__then_8.mcfunction +0 -10
- package/dist/data/test/function/sin_hp.mcfunction +0 -6
- package/dist/data/test/function/smootherstep.mcfunction +0 -10
- package/dist/data/test/function/smootherstep__merge_1.mcfunction +0 -12
- package/dist/data/test/function/smootherstep__merge_4.mcfunction +0 -4
- package/dist/data/test/function/smootherstep__merge_6.mcfunction +0 -27
- package/dist/data/test/function/smootherstep__then_0.mcfunction +0 -2
- package/dist/data/test/function/smootherstep__then_3.mcfunction +0 -2
- package/dist/data/test/function/smootherstep__then_5.mcfunction +0 -2
- package/dist/data/test/function/smoothstep.mcfunction +0 -10
- package/dist/data/test/function/smoothstep__merge_1.mcfunction +0 -12
- package/dist/data/test/function/smoothstep__merge_4.mcfunction +0 -4
- package/dist/data/test/function/smoothstep__merge_6.mcfunction +0 -15
- package/dist/data/test/function/smoothstep__then_0.mcfunction +0 -2
- package/dist/data/test/function/smoothstep__then_3.mcfunction +0 -2
- package/dist/data/test/function/smoothstep__then_5.mcfunction +0 -2
- package/dist/data/test/function/solve2x2_x.mcfunction +0 -17
- package/dist/data/test/function/solve2x2_x__merge_1.mcfunction +0 -12
- package/dist/data/test/function/solve2x2_x__then_0.mcfunction +0 -2
- package/dist/data/test/function/solve2x2_y.mcfunction +0 -17
- package/dist/data/test/function/solve2x2_y__merge_1.mcfunction +0 -12
- package/dist/data/test/function/solve2x2_y__then_0.mcfunction +0 -2
- package/dist/data/test/function/sort2_max.mcfunction +0 -6
- package/dist/data/test/function/sort2_max__merge_1.mcfunction +0 -1
- package/dist/data/test/function/sort2_max__then_0.mcfunction +0 -1
- package/dist/data/test/function/sort2_min.mcfunction +0 -6
- package/dist/data/test/function/sort2_min__merge_1.mcfunction +0 -1
- package/dist/data/test/function/sort2_min__then_0.mcfunction +0 -1
- package/dist/data/test/function/sort3.mcfunction +0 -11
- package/dist/data/test/function/sort3__merge_1.mcfunction +0 -4
- package/dist/data/test/function/sort3__merge_10.mcfunction +0 -1
- package/dist/data/test/function/sort3__merge_3.mcfunction +0 -4
- package/dist/data/test/function/sort3__merge_5.mcfunction +0 -5
- package/dist/data/test/function/sort3__merge_7.mcfunction +0 -5
- package/dist/data/test/function/sort3__then_0.mcfunction +0 -4
- package/dist/data/test/function/sort3__then_2.mcfunction +0 -4
- package/dist/data/test/function/sort3__then_4.mcfunction +0 -4
- package/dist/data/test/function/sort3__then_6.mcfunction +0 -1
- package/dist/data/test/function/sort3__then_9.mcfunction +0 -1
- package/dist/data/test/function/sort4.mcfunction +0 -13
- package/dist/data/test/function/sort4__merge_1.mcfunction +0 -4
- package/dist/data/test/function/sort4__merge_11.mcfunction +0 -5
- package/dist/data/test/function/sort4__merge_14.mcfunction +0 -5
- package/dist/data/test/function/sort4__merge_17.mcfunction +0 -1
- package/dist/data/test/function/sort4__merge_3.mcfunction +0 -4
- package/dist/data/test/function/sort4__merge_5.mcfunction +0 -4
- package/dist/data/test/function/sort4__merge_7.mcfunction +0 -4
- package/dist/data/test/function/sort4__merge_9.mcfunction +0 -5
- package/dist/data/test/function/sort4__then_0.mcfunction +0 -4
- package/dist/data/test/function/sort4__then_10.mcfunction +0 -1
- package/dist/data/test/function/sort4__then_13.mcfunction +0 -1
- package/dist/data/test/function/sort4__then_16.mcfunction +0 -1
- package/dist/data/test/function/sort4__then_2.mcfunction +0 -4
- package/dist/data/test/function/sort4__then_4.mcfunction +0 -4
- package/dist/data/test/function/sort4__then_6.mcfunction +0 -4
- package/dist/data/test/function/sort4__then_8.mcfunction +0 -4
- package/dist/data/test/function/sort5.mcfunction +0 -15
- package/dist/data/test/function/sort5__merge_1.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_11.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_13.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_15.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_17.mcfunction +0 -5
- package/dist/data/test/function/sort5__merge_19.mcfunction +0 -5
- package/dist/data/test/function/sort5__merge_22.mcfunction +0 -5
- package/dist/data/test/function/sort5__merge_25.mcfunction +0 -5
- package/dist/data/test/function/sort5__merge_28.mcfunction +0 -1
- package/dist/data/test/function/sort5__merge_3.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_5.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_7.mcfunction +0 -4
- package/dist/data/test/function/sort5__merge_9.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_0.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_10.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_12.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_14.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_16.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_18.mcfunction +0 -1
- package/dist/data/test/function/sort5__then_2.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_21.mcfunction +0 -1
- package/dist/data/test/function/sort5__then_24.mcfunction +0 -1
- package/dist/data/test/function/sort5__then_27.mcfunction +0 -1
- package/dist/data/test/function/sort5__then_4.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_6.mcfunction +0 -4
- package/dist/data/test/function/sort5__then_8.mcfunction +0 -4
- package/dist/data/test/function/sphere_contains.mcfunction +0 -29
- package/dist/data/test/function/sphere_contains__merge_1.mcfunction +0 -2
- package/dist/data/test/function/sphere_contains__then_0.mcfunction +0 -2
- package/dist/data/test/function/spiral_ring.mcfunction +0 -5
- package/dist/data/test/function/spiral_ring__merge_1.mcfunction +0 -13
- package/dist/data/test/function/spiral_ring__then_0.mcfunction +0 -2
- package/dist/data/test/function/spring_force.mcfunction +0 -11
- package/dist/data/test/function/spring_update_v.mcfunction +0 -18
- package/dist/data/test/function/sqrt_fixed.mcfunction +0 -8
- package/dist/data/test/function/sqrt_fx.mcfunction +0 -11
- package/dist/data/test/function/start.mcfunction +0 -8
- package/dist/data/test/function/stop.mcfunction +0 -2
- package/dist/data/test/function/stop__foreach_t0.mcfunction +0 -1
- package/dist/data/test/function/sub2d_x.mcfunction +0 -5
- package/dist/data/test/function/sub2d_y.mcfunction +0 -5
- package/dist/data/test/function/sub3d_x.mcfunction +0 -5
- package/dist/data/test/function/sub3d_y.mcfunction +0 -5
- package/dist/data/test/function/sub3d_z.mcfunction +0 -5
- package/dist/data/test/function/terrain_height.mcfunction +0 -24
- package/dist/data/test/function/tick_to_ms.mcfunction +0 -5
- package/dist/data/test/function/tick_to_seconds.mcfunction +0 -5
- package/dist/data/test/function/tile_center.mcfunction +0 -10
- package/dist/data/test/function/tile_of.mcfunction +0 -7
- package/dist/data/test/function/tile_of__merge_1.mcfunction +0 -7
- package/dist/data/test/function/tile_of__then_0.mcfunction +0 -3
- package/dist/data/test/function/timer/done.mcfunction +0 -5
- package/dist/data/test/function/timer/elapsed.mcfunction +0 -2
- package/dist/data/test/function/timer/new.mcfunction +0 -5
- package/dist/data/test/function/timer/pause.mcfunction +0 -1
- package/dist/data/test/function/timer/remaining.mcfunction +0 -10
- package/dist/data/test/function/timer/remaining__merge_1.mcfunction +0 -2
- package/dist/data/test/function/timer/remaining__then_0.mcfunction +0 -1
- package/dist/data/test/function/timer/reset.mcfunction +0 -1
- package/dist/data/test/function/timer/start.mcfunction +0 -1
- package/dist/data/test/function/timer/tick.mcfunction +0 -9
- package/dist/data/test/function/timer/tick__merge_1.mcfunction +0 -1
- package/dist/data/test/function/timer/tick__merge_3.mcfunction +0 -1
- package/dist/data/test/function/timer/tick__then_0.mcfunction +0 -4
- package/dist/data/test/function/timer/tick__then_2.mcfunction +0 -4
- package/dist/data/test/function/uniform_frac.mcfunction +0 -12
- package/dist/data/test/function/uniform_frac__merge_1.mcfunction +0 -4
- package/dist/data/test/function/uniform_frac__then_0.mcfunction +0 -4
- package/dist/data/test/function/uniform_int.mcfunction +0 -14
- package/dist/data/test/function/uniform_int__merge_1.mcfunction +0 -9
- package/dist/data/test/function/uniform_int__then_0.mcfunction +0 -4
- package/dist/data/test/function/uniform_scale.mcfunction +0 -8
- package/dist/data/test/function/update_pos.mcfunction +0 -5
- package/dist/data/test/function/value_noise_1d.mcfunction +0 -14
- package/dist/data/test/function/value_noise_1d__merge_1.mcfunction +0 -39
- package/dist/data/test/function/value_noise_1d__then_0.mcfunction +0 -7
- package/dist/data/test/function/value_noise_2d.mcfunction +0 -15
- package/dist/data/test/function/value_noise_2d__merge_1.mcfunction +0 -13
- package/dist/data/test/function/value_noise_2d__merge_3.mcfunction +0 -98
- package/dist/data/test/function/value_noise_2d__then_0.mcfunction +0 -7
- package/dist/data/test/function/value_noise_2d__then_2.mcfunction +0 -7
- package/dist/data/test/function/water_drag_fx.mcfunction +0 -2
- package/dist/data/test/function/weighted2.mcfunction +0 -17
- package/dist/data/test/function/weighted2__merge_1.mcfunction +0 -6
- package/dist/data/test/function/weighted2__merge_3.mcfunction +0 -2
- package/dist/data/test/function/weighted2__then_0.mcfunction +0 -4
- package/dist/data/test/function/weighted2__then_2.mcfunction +0 -2
- package/dist/data/test/function/weighted3.mcfunction +0 -20
- package/dist/data/test/function/weighted3__merge_1.mcfunction +0 -7
- package/dist/data/test/function/weighted3__merge_3.mcfunction +0 -6
- package/dist/data/test/function/weighted3__merge_6.mcfunction +0 -2
- package/dist/data/test/function/weighted3__then_0.mcfunction +0 -4
- package/dist/data/test/function/weighted3__then_2.mcfunction +0 -2
- package/dist/data/test/function/weighted3__then_5.mcfunction +0 -2
- package/dist/data/turret/function/__load.mcfunction +0 -5
- package/dist/data/turret/function/__tick.mcfunction +0 -4
- package/dist/data/turret/function/__trigger_deploy_turret_dispatch.mcfunction +0 -4
- package/dist/data/turret/function/deploy_turret.mcfunction +0 -8
- package/dist/data/turret/function/turret_tick/at_1.mcfunction +0 -2
- package/dist/data/turret/function/turret_tick/foreach_0.mcfunction +0 -2
- package/dist/data/turret/function/turret_tick/foreach_2.mcfunction +0 -2
- package/dist/data/turret/function/turret_tick/tick_body.mcfunction +0 -3
- package/dist/data/turret/function/turret_tick/tick_skip.mcfunction +0 -1
- package/dist/data/turret/function/turret_tick.mcfunction +0 -5
- package/dist/diagnostics/index.d.ts +0 -44
- package/dist/diagnostics/index.js +0 -140
- package/dist/events/types.d.ts +0 -35
- package/dist/events/types.js +0 -59
- package/dist/formatter/index.d.ts +0 -1
- package/dist/formatter/index.js +0 -26
- package/dist/gcd2.map.json +0 -15
- package/dist/gcd3.map.json +0 -17
- package/dist/gcd_test.map.json +0 -15
- package/dist/index.d.ts +0 -62
- package/dist/ir/builder.d.ts +0 -33
- package/dist/ir/builder.js +0 -99
- package/dist/ir/types.d.ts +0 -132
- package/dist/ir/types.js +0 -15
- package/dist/isqrttest.map.json +0 -15
- package/dist/lexer/index.d.ts +0 -37
- package/dist/lexer/index.js +0 -569
- package/dist/lowering/index.d.ts +0 -188
- package/dist/lowering/index.js +0 -3405
- package/dist/mathtest.map.json +0 -6
- package/dist/mc-test/client.d.ts +0 -128
- package/dist/mc-test/client.js +0 -174
- package/dist/mc-test/runner.d.ts +0 -28
- package/dist/mc-test/runner.js +0 -150
- package/dist/mc-test/setup.d.ts +0 -11
- package/dist/mc-test/setup.js +0 -98
- package/dist/mc-validator/index.d.ts +0 -17
- package/dist/mc-validator/index.js +0 -322
- package/dist/mypack.map.json +0 -27
- package/dist/nbt/index.d.ts +0 -86
- package/dist/nbt/index.js +0 -250
- package/dist/optimizer/commands.d.ts +0 -38
- package/dist/optimizer/commands.js +0 -451
- package/dist/optimizer/dce.d.ts +0 -34
- package/dist/optimizer/dce.js +0 -639
- package/dist/optimizer/passes.d.ts +0 -34
- package/dist/optimizer/passes.js +0 -243
- package/dist/optimizer/structure.d.ts +0 -9
- package/dist/optimizer/structure.js +0 -356
- package/dist/pack.mcmeta +0 -6
- package/dist/parser/index.d.ts +0 -93
- package/dist/parser/index.js +0 -1687
- package/dist/repl.d.ts +0 -16
- package/dist/repl.js +0 -165
- package/dist/reqtest.map.json +0 -4
- package/dist/reqtest2.map.json +0 -4
- package/dist/runtime/index.d.ts +0 -107
- package/dist/runtime/index.js +0 -1409
- package/dist/runtime.map.json +0 -7
- package/dist/src/__tests__/codegen.test.d.ts +0 -1
- package/dist/src/__tests__/codegen.test.js +0 -152
- package/dist/src/__tests__/debug-compile.test.d.ts +0 -1
- package/dist/src/__tests__/debug-compile.test.js +0 -24
- package/dist/src/__tests__/debug-compile2.test.d.ts +0 -1
- package/dist/src/__tests__/debug-compile2.test.js +0 -19
- package/dist/src/__tests__/debug-compile3.test.d.ts +0 -1
- package/dist/src/__tests__/debug-compile3.test.js +0 -22
- package/dist/src/__tests__/debug-wm.test.d.ts +0 -1
- package/dist/src/__tests__/debug-wm.test.js +0 -50
- package/dist/src/__tests__/debug_gen.d.ts +0 -1
- package/dist/src/__tests__/debug_gen.js +0 -24
- package/dist/src/__tests__/debug_scoreboard.test.d.ts +0 -1
- package/dist/src/__tests__/debug_scoreboard.test.js +0 -19
- package/dist/src/__tests__/debug_scoreboard2.test.d.ts +0 -1
- package/dist/src/__tests__/debug_scoreboard2.test.js +0 -27
- package/dist/src/__tests__/debug_scoreboard3.test.d.ts +0 -1
- package/dist/src/__tests__/debug_scoreboard3.test.js +0 -37
- package/dist/src/__tests__/e2e.test.d.ts +0 -6
- package/dist/src/__tests__/e2e.test.js +0 -1789
- package/dist/src/__tests__/entity-types.test.d.ts +0 -1
- package/dist/src/__tests__/entity-types.test.js +0 -203
- package/dist/src/__tests__/lowering.test.d.ts +0 -1
- package/dist/src/__tests__/lowering.test.js +0 -1015
- package/dist/src/__tests__/macro.test.d.ts +0 -8
- package/dist/src/__tests__/macro.test.js +0 -306
- package/dist/src/__tests__/nbt.test.d.ts +0 -1
- package/dist/src/__tests__/nbt.test.js +0 -82
- package/dist/src/__tests__/optimizer-advanced.test.d.ts +0 -1
- package/dist/src/__tests__/optimizer-advanced.test.js +0 -124
- package/dist/src/__tests__/optimizer.test.d.ts +0 -1
- package/dist/src/__tests__/optimizer.test.js +0 -149
- package/dist/src/__tests__/runtime.test.d.ts +0 -1
- package/dist/src/__tests__/runtime.test.js +0 -289
- package/dist/src/__tests__/stdlib-advanced.test.d.ts +0 -4
- package/dist/src/__tests__/stdlib-advanced.test.js +0 -374
- package/dist/src/__tests__/stdlib-bigint.test.d.ts +0 -7
- package/dist/src/__tests__/stdlib-bigint.test.js +0 -426
- package/dist/src/__tests__/stdlib-math.test.d.ts +0 -7
- package/dist/src/__tests__/stdlib-math.test.js +0 -351
- package/dist/src/__tests__/stdlib-vec.test.d.ts +0 -4
- package/dist/src/__tests__/stdlib-vec.test.js +0 -263
- package/dist/src/__tests__/structure-optimizer.test.d.ts +0 -1
- package/dist/src/__tests__/structure-optimizer.test.js +0 -33
- package/dist/src/__tests__/timer-debug.test.d.ts +0 -1
- package/dist/src/__tests__/timer-debug.test.js +0 -33
- package/dist/src/__tests__/var-allocator.test.d.ts +0 -1
- package/dist/src/__tests__/var-allocator.test.js +0 -69
- package/dist/src/codegen/cmdblock/index.d.ts +0 -26
- package/dist/src/codegen/cmdblock/index.js +0 -45
- package/dist/src/codegen/mcfunction/index.d.ts +0 -40
- package/dist/src/codegen/mcfunction/index.js +0 -606
- package/dist/src/codegen/structure/index.d.ts +0 -24
- package/dist/src/codegen/structure/index.js +0 -279
- package/dist/src/codegen/var-allocator.d.ts +0 -45
- package/dist/src/codegen/var-allocator.js +0 -104
- package/dist/src/ir/builder.d.ts +0 -33
- package/dist/src/ir/builder.js +0 -99
- package/dist/src/ir/types.d.ts +0 -132
- package/dist/src/ir/types.js +0 -15
- package/dist/src/lowering/index.d.ts +0 -188
- package/dist/src/lowering/index.js +0 -3405
- package/dist/src/optimizer/commands.d.ts +0 -38
- package/dist/src/optimizer/commands.js +0 -451
- package/dist/src/optimizer/passes.d.ts +0 -34
- package/dist/src/optimizer/passes.js +0 -243
- package/dist/src/optimizer/structure.d.ts +0 -9
- package/dist/src/optimizer/structure.js +0 -356
- package/dist/src2/__tests__/e2e/basic.test.d.ts +0 -8
- package/dist/src2/__tests__/e2e/basic.test.js +0 -140
- package/dist/src2/__tests__/e2e/macros.test.d.ts +0 -9
- package/dist/src2/__tests__/e2e/macros.test.js +0 -182
- package/dist/src2/__tests__/e2e/migrate.test.d.ts +0 -13
- package/dist/src2/__tests__/e2e/migrate.test.js +0 -2739
- package/dist/src2/__tests__/hir/desugar.test.d.ts +0 -1
- package/dist/src2/__tests__/hir/desugar.test.js +0 -234
- package/dist/src2/__tests__/lir/lower.test.d.ts +0 -1
- package/dist/src2/__tests__/lir/lower.test.js +0 -559
- package/dist/src2/__tests__/lir/types.test.d.ts +0 -1
- package/dist/src2/__tests__/lir/types.test.js +0 -185
- package/dist/src2/__tests__/lir/verify.test.d.ts +0 -1
- package/dist/src2/__tests__/lir/verify.test.js +0 -221
- package/dist/src2/__tests__/mir/arithmetic.test.d.ts +0 -1
- package/dist/src2/__tests__/mir/arithmetic.test.js +0 -130
- package/dist/src2/__tests__/mir/control-flow.test.d.ts +0 -1
- package/dist/src2/__tests__/mir/control-flow.test.js +0 -205
- package/dist/src2/__tests__/mir/verify.test.d.ts +0 -1
- package/dist/src2/__tests__/mir/verify.test.js +0 -223
- package/dist/src2/__tests__/optimizer/block_merge.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/block_merge.test.js +0 -78
- package/dist/src2/__tests__/optimizer/branch_simplify.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/branch_simplify.test.js +0 -58
- package/dist/src2/__tests__/optimizer/constant_fold.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/constant_fold.test.js +0 -131
- package/dist/src2/__tests__/optimizer/copy_prop.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/copy_prop.test.js +0 -91
- package/dist/src2/__tests__/optimizer/dce.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/dce.test.js +0 -76
- package/dist/src2/__tests__/optimizer/pipeline.test.d.ts +0 -1
- package/dist/src2/__tests__/optimizer/pipeline.test.js +0 -102
- package/dist/src2/emit/compile.d.ts +0 -19
- package/dist/src2/emit/compile.js +0 -80
- package/dist/src2/emit/index.d.ts +0 -17
- package/dist/src2/emit/index.js +0 -172
- package/dist/src2/hir/lower.d.ts +0 -15
- package/dist/src2/hir/lower.js +0 -378
- package/dist/src2/hir/types.d.ts +0 -373
- package/dist/src2/hir/types.js +0 -16
- package/dist/src2/lir/lower.d.ts +0 -15
- package/dist/src2/lir/lower.js +0 -453
- package/dist/src2/lir/types.d.ts +0 -136
- package/dist/src2/lir/types.js +0 -11
- package/dist/src2/lir/verify.d.ts +0 -14
- package/dist/src2/lir/verify.js +0 -113
- package/dist/src2/mir/lower.d.ts +0 -9
- package/dist/src2/mir/lower.js +0 -1030
- package/dist/src2/mir/macro.d.ts +0 -22
- package/dist/src2/mir/macro.js +0 -168
- package/dist/src2/mir/types.d.ts +0 -183
- package/dist/src2/mir/types.js +0 -11
- package/dist/src2/mir/verify.d.ts +0 -16
- package/dist/src2/mir/verify.js +0 -216
- package/dist/src2/optimizer/block_merge.d.ts +0 -12
- package/dist/src2/optimizer/block_merge.js +0 -84
- package/dist/src2/optimizer/branch_simplify.d.ts +0 -9
- package/dist/src2/optimizer/branch_simplify.js +0 -28
- package/dist/src2/optimizer/constant_fold.d.ts +0 -10
- package/dist/src2/optimizer/constant_fold.js +0 -85
- package/dist/src2/optimizer/copy_prop.d.ts +0 -9
- package/dist/src2/optimizer/copy_prop.js +0 -113
- package/dist/src2/optimizer/dce.d.ts +0 -8
- package/dist/src2/optimizer/dce.js +0 -155
- package/dist/src2/optimizer/pipeline.d.ts +0 -10
- package/dist/src2/optimizer/pipeline.js +0 -42
- package/dist/swap_test.map.json +0 -14
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/typechecker/index.d.ts +0 -61
- package/dist/typechecker/index.js +0 -1034
- package/dist/types/entity-hierarchy.d.ts +0 -29
- package/dist/types/entity-hierarchy.js +0 -107
- /package/dist/{__tests__/cli.test.d.ts → src/__tests__/for-range.test.d.ts} +0 -0
- /package/dist/{__tests__/codegen.test.d.ts → src/__tests__/impl.test.d.ts} +0 -0
|
@@ -18263,6 +18263,7 @@ var require_lexer = __commonJS({
|
|
|
18263
18263
|
int: "int",
|
|
18264
18264
|
bool: "bool",
|
|
18265
18265
|
float: "float",
|
|
18266
|
+
fixed: "fixed",
|
|
18266
18267
|
string: "string",
|
|
18267
18268
|
void: "void",
|
|
18268
18269
|
BlockPos: "BlockPos",
|
|
@@ -18826,6 +18827,7 @@ var require_parser = __commonJS({
|
|
|
18826
18827
|
constructor(tokens, source, filePath) {
|
|
18827
18828
|
this.pos = 0;
|
|
18828
18829
|
this.inLibraryMode = false;
|
|
18830
|
+
this.warnings = [];
|
|
18829
18831
|
this.tokens = tokens;
|
|
18830
18832
|
this.sourceLines = source?.split("\n") ?? [];
|
|
18831
18833
|
this.filePath = filePath;
|
|
@@ -18897,12 +18899,14 @@ var require_parser = __commonJS({
|
|
|
18897
18899
|
const implBlocks = [];
|
|
18898
18900
|
const enums = [];
|
|
18899
18901
|
const consts = [];
|
|
18902
|
+
const imports = [];
|
|
18900
18903
|
let isLibrary = false;
|
|
18904
|
+
let moduleName;
|
|
18901
18905
|
if (this.check("namespace")) {
|
|
18902
18906
|
this.advance();
|
|
18903
18907
|
const name = this.expect("ident");
|
|
18904
18908
|
namespace = name.value;
|
|
18905
|
-
this.
|
|
18909
|
+
this.match(";");
|
|
18906
18910
|
}
|
|
18907
18911
|
if (this.check("module")) {
|
|
18908
18912
|
this.advance();
|
|
@@ -18910,8 +18914,10 @@ var require_parser = __commonJS({
|
|
|
18910
18914
|
if (modKind.value === "library") {
|
|
18911
18915
|
isLibrary = true;
|
|
18912
18916
|
this.inLibraryMode = true;
|
|
18917
|
+
} else {
|
|
18918
|
+
moduleName = modKind.value;
|
|
18913
18919
|
}
|
|
18914
|
-
this.
|
|
18920
|
+
this.match(";");
|
|
18915
18921
|
}
|
|
18916
18922
|
while (!this.check("eof")) {
|
|
18917
18923
|
if (this.check("let")) {
|
|
@@ -18929,11 +18935,25 @@ var require_parser = __commonJS({
|
|
|
18929
18935
|
this.parseDeclareStub();
|
|
18930
18936
|
} else if (this.check("export")) {
|
|
18931
18937
|
declarations.push(this.parseExportedFnDecl());
|
|
18938
|
+
} else if (this.check("ident") && this.peek().value === "import") {
|
|
18939
|
+
this.advance();
|
|
18940
|
+
const importToken = this.peek();
|
|
18941
|
+
const modName = this.expect("ident").value;
|
|
18942
|
+
this.expect("::");
|
|
18943
|
+
let symbol;
|
|
18944
|
+
if (this.check("*")) {
|
|
18945
|
+
this.advance();
|
|
18946
|
+
symbol = "*";
|
|
18947
|
+
} else {
|
|
18948
|
+
symbol = this.expect("ident").value;
|
|
18949
|
+
}
|
|
18950
|
+
this.match(";");
|
|
18951
|
+
imports.push(this.withLoc({ moduleName: modName, symbol }, importToken));
|
|
18932
18952
|
} else {
|
|
18933
18953
|
declarations.push(this.parseFnDecl());
|
|
18934
18954
|
}
|
|
18935
18955
|
}
|
|
18936
|
-
return { namespace, globals, declarations, structs, implBlocks, enums, consts, isLibrary };
|
|
18956
|
+
return { namespace, moduleName, globals, declarations, structs, implBlocks, enums, consts, imports, isLibrary };
|
|
18937
18957
|
}
|
|
18938
18958
|
// -------------------------------------------------------------------------
|
|
18939
18959
|
// Struct Declaration
|
|
@@ -18998,7 +19018,7 @@ var require_parser = __commonJS({
|
|
|
18998
19018
|
this.expect("=");
|
|
18999
19019
|
const value = this.parseLiteralExpr();
|
|
19000
19020
|
this.match(";");
|
|
19001
|
-
const inferredType = type ?? (value.kind === "str_lit" ? { kind: "named", name: "string" } : value.kind === "bool_lit" ? { kind: "named", name: "bool" } : value.kind === "float_lit" ? { kind: "named", name: "
|
|
19021
|
+
const inferredType = type ?? (value.kind === "str_lit" ? { kind: "named", name: "string" } : value.kind === "bool_lit" ? { kind: "named", name: "bool" } : value.kind === "float_lit" ? { kind: "named", name: "fixed" } : { kind: "named", name: "int" });
|
|
19002
19022
|
return this.withLoc({ name, type: inferredType, value }, constToken);
|
|
19003
19023
|
}
|
|
19004
19024
|
parseGlobalDecl(mutable) {
|
|
@@ -19008,7 +19028,7 @@ var require_parser = __commonJS({
|
|
|
19008
19028
|
const type = this.parseType();
|
|
19009
19029
|
this.expect("=");
|
|
19010
19030
|
const init = this.parseExpr();
|
|
19011
|
-
this.
|
|
19031
|
+
this.match(";");
|
|
19012
19032
|
return this.withLoc({ kind: "global", name, type, init, mutable }, token);
|
|
19013
19033
|
}
|
|
19014
19034
|
// -------------------------------------------------------------------------
|
|
@@ -19142,6 +19162,8 @@ var require_parser = __commonJS({
|
|
|
19142
19162
|
const [key, val] = part.split("=").map((s) => s.trim());
|
|
19143
19163
|
if (key === "rate") {
|
|
19144
19164
|
args.rate = parseInt(val, 10);
|
|
19165
|
+
} else if (key === "ticks") {
|
|
19166
|
+
args.ticks = parseInt(val, 10);
|
|
19145
19167
|
} else if (key === "batch") {
|
|
19146
19168
|
args.batch = parseInt(val, 10);
|
|
19147
19169
|
} else if (key === "onDone") {
|
|
@@ -19199,7 +19221,12 @@ var require_parser = __commonJS({
|
|
|
19199
19221
|
}
|
|
19200
19222
|
return { kind: "tuple", elements };
|
|
19201
19223
|
}
|
|
19202
|
-
if (token.kind === "
|
|
19224
|
+
if (token.kind === "float") {
|
|
19225
|
+
this.advance();
|
|
19226
|
+
const filePart = this.filePath ? `${this.filePath}:` : "";
|
|
19227
|
+
this.warnings.push(`[DeprecatedType] ${filePart}line ${token.line}, col ${token.col}: 'float' is deprecated, use 'fixed' instead (\xD710000 fixed-point)`);
|
|
19228
|
+
type = { kind: "named", name: "float" };
|
|
19229
|
+
} else if (token.kind === "int" || token.kind === "bool" || token.kind === "fixed" || token.kind === "string" || token.kind === "void" || token.kind === "BlockPos") {
|
|
19203
19230
|
this.advance();
|
|
19204
19231
|
type = { kind: "named", name: token.kind };
|
|
19205
19232
|
} else if (token.kind === "ident") {
|
|
@@ -19211,6 +19238,13 @@ var require_parser = __commonJS({
|
|
|
19211
19238
|
type = { kind: "selector", entityType };
|
|
19212
19239
|
} else if (token.value === "selector") {
|
|
19213
19240
|
type = { kind: "selector" };
|
|
19241
|
+
} else if (token.value === "Option" && this.check("<")) {
|
|
19242
|
+
this.advance();
|
|
19243
|
+
const inner = this.parseType();
|
|
19244
|
+
this.expect(">");
|
|
19245
|
+
type = { kind: "option", inner };
|
|
19246
|
+
} else if (token.value === "double" || token.value === "byte" || token.value === "short" || token.value === "long" || token.value === "format_string") {
|
|
19247
|
+
type = { kind: "named", name: token.value };
|
|
19214
19248
|
} else {
|
|
19215
19249
|
type = { kind: "struct", name: token.value };
|
|
19216
19250
|
}
|
|
@@ -19312,7 +19346,7 @@ var require_parser = __commonJS({
|
|
|
19312
19346
|
}
|
|
19313
19347
|
this.expect("=");
|
|
19314
19348
|
const init2 = this.parseExpr();
|
|
19315
|
-
this.
|
|
19349
|
+
this.match(";");
|
|
19316
19350
|
return this.withLoc({ kind: "let_destruct", names, type: type2, init: init2 }, letToken);
|
|
19317
19351
|
}
|
|
19318
19352
|
const name = this.expect("ident").value;
|
|
@@ -19322,20 +19356,39 @@ var require_parser = __commonJS({
|
|
|
19322
19356
|
}
|
|
19323
19357
|
this.expect("=");
|
|
19324
19358
|
const init = this.parseExpr();
|
|
19325
|
-
this.
|
|
19359
|
+
this.match(";");
|
|
19326
19360
|
return this.withLoc({ kind: "let", name, type, init }, letToken);
|
|
19327
19361
|
}
|
|
19328
19362
|
parseReturnStmt() {
|
|
19329
19363
|
const returnToken = this.expect("return");
|
|
19330
19364
|
let value;
|
|
19331
|
-
if (!this.check(";")) {
|
|
19365
|
+
if (!this.check(";") && !this.check("}") && !this.check("eof")) {
|
|
19332
19366
|
value = this.parseExpr();
|
|
19333
19367
|
}
|
|
19334
|
-
this.
|
|
19368
|
+
this.match(";");
|
|
19335
19369
|
return this.withLoc({ kind: "return", value }, returnToken);
|
|
19336
19370
|
}
|
|
19337
19371
|
parseIfStmt() {
|
|
19338
19372
|
const ifToken = this.expect("if");
|
|
19373
|
+
if (this.check("let") && this.peek(1).kind === "ident" && this.peek(1).value === "Some") {
|
|
19374
|
+
this.advance();
|
|
19375
|
+
this.advance();
|
|
19376
|
+
this.expect("(");
|
|
19377
|
+
const binding = this.expect("ident").value;
|
|
19378
|
+
this.expect(")");
|
|
19379
|
+
this.expect("=");
|
|
19380
|
+
const init = this.parseExpr();
|
|
19381
|
+
const then2 = this.parseBlock();
|
|
19382
|
+
let else_2;
|
|
19383
|
+
if (this.match("else")) {
|
|
19384
|
+
if (this.check("if")) {
|
|
19385
|
+
else_2 = [this.parseIfStmt()];
|
|
19386
|
+
} else {
|
|
19387
|
+
else_2 = this.parseBlock();
|
|
19388
|
+
}
|
|
19389
|
+
}
|
|
19390
|
+
return this.withLoc({ kind: "if_let_some", binding, init, then: then2, else_: else_2 }, ifToken);
|
|
19391
|
+
}
|
|
19339
19392
|
this.expect("(");
|
|
19340
19393
|
const cond = this.parseExpr();
|
|
19341
19394
|
this.expect(")");
|
|
@@ -19364,6 +19417,17 @@ var require_parser = __commonJS({
|
|
|
19364
19417
|
return this.parseForRangeStmt(forToken);
|
|
19365
19418
|
}
|
|
19366
19419
|
this.expect("(");
|
|
19420
|
+
if (this.check("let") && this.peek(1).kind === "ident" && this.peek(2).kind === "in" && this.peek(3).kind === "ident" && this.peek(4).kind === ",") {
|
|
19421
|
+
this.advance();
|
|
19422
|
+
const binding = this.expect("ident").value;
|
|
19423
|
+
this.expect("in");
|
|
19424
|
+
const arrayName = this.expect("ident").value;
|
|
19425
|
+
this.expect(",");
|
|
19426
|
+
const lenExpr = this.parseExpr();
|
|
19427
|
+
this.expect(")");
|
|
19428
|
+
const body2 = this.parseBlock();
|
|
19429
|
+
return this.withLoc({ kind: "for_in_array", binding, arrayName, lenExpr, body: body2 }, forToken);
|
|
19430
|
+
}
|
|
19367
19431
|
let init;
|
|
19368
19432
|
if (this.check("let")) {
|
|
19369
19433
|
const letToken = this.expect("let");
|
|
@@ -19623,7 +19687,7 @@ var require_parser = __commonJS({
|
|
|
19623
19687
|
}
|
|
19624
19688
|
parseExprStmt() {
|
|
19625
19689
|
const expr = this.parseExpr();
|
|
19626
|
-
this.
|
|
19690
|
+
this.match(";");
|
|
19627
19691
|
const exprToken = this.getLocToken(expr) ?? this.peek();
|
|
19628
19692
|
return this.withLoc({ kind: "expr", expr }, exprToken);
|
|
19629
19693
|
}
|
|
@@ -19646,6 +19710,10 @@ var require_parser = __commonJS({
|
|
|
19646
19710
|
const value = this.parseAssignment();
|
|
19647
19711
|
return this.withLoc({ kind: "member_assign", obj: left.obj, field: left.field, op, value }, this.getLocToken(left) ?? token);
|
|
19648
19712
|
}
|
|
19713
|
+
if (left.kind === "index") {
|
|
19714
|
+
const value = this.parseAssignment();
|
|
19715
|
+
return this.withLoc({ kind: "index_assign", obj: left.obj, index: left.index, op, value }, this.getLocToken(left) ?? token);
|
|
19716
|
+
}
|
|
19649
19717
|
}
|
|
19650
19718
|
return left;
|
|
19651
19719
|
}
|
|
@@ -19781,10 +19849,28 @@ var require_parser = __commonJS({
|
|
|
19781
19849
|
expr = this.withLoc({ kind: "member", obj: expr, field }, this.getLocToken(expr) ?? this.tokens[this.pos - 1]);
|
|
19782
19850
|
continue;
|
|
19783
19851
|
}
|
|
19852
|
+
if (this.check("as") && this.isTypeCastAs()) {
|
|
19853
|
+
const asToken = this.advance();
|
|
19854
|
+
const targetType = this.parseType();
|
|
19855
|
+
expr = this.withLoc({ kind: "type_cast", expr, targetType }, this.getLocToken(expr) ?? asToken);
|
|
19856
|
+
continue;
|
|
19857
|
+
}
|
|
19784
19858
|
break;
|
|
19785
19859
|
}
|
|
19786
19860
|
return expr;
|
|
19787
19861
|
}
|
|
19862
|
+
/** Returns true if the current 'as' token is a type cast (not a context block) */
|
|
19863
|
+
isTypeCastAs() {
|
|
19864
|
+
const next = this.tokens[this.pos + 1];
|
|
19865
|
+
if (!next)
|
|
19866
|
+
return false;
|
|
19867
|
+
const typeStartTokens = /* @__PURE__ */ new Set(["int", "bool", "float", "fixed", "string", "void", "BlockPos", "("]);
|
|
19868
|
+
if (typeStartTokens.has(next.kind))
|
|
19869
|
+
return true;
|
|
19870
|
+
if (next.kind === "ident" && (next.value === "double" || next.value === "byte" || next.value === "short" || next.value === "long" || next.value === "selector" || next.value === "Option"))
|
|
19871
|
+
return true;
|
|
19872
|
+
return false;
|
|
19873
|
+
}
|
|
19788
19874
|
parseArgs() {
|
|
19789
19875
|
const args = [];
|
|
19790
19876
|
if (!this.check(")")) {
|
|
@@ -19876,6 +19962,17 @@ var require_parser = __commonJS({
|
|
|
19876
19962
|
sel: this.parseSelectorValue(token.value)
|
|
19877
19963
|
}, token);
|
|
19878
19964
|
}
|
|
19965
|
+
if (token.kind === "ident" && token.value === "Some" && this.peek(1).kind === "(") {
|
|
19966
|
+
this.advance();
|
|
19967
|
+
this.advance();
|
|
19968
|
+
const value = this.parseExpr();
|
|
19969
|
+
this.expect(")");
|
|
19970
|
+
return this.withLoc({ kind: "some_lit", value }, token);
|
|
19971
|
+
}
|
|
19972
|
+
if (token.kind === "ident" && token.value === "None") {
|
|
19973
|
+
this.advance();
|
|
19974
|
+
return this.withLoc({ kind: "none_lit" }, token);
|
|
19975
|
+
}
|
|
19879
19976
|
if (token.kind === "ident") {
|
|
19880
19977
|
this.advance();
|
|
19881
19978
|
return this.withLoc({ kind: "ident", name: token.value }, token);
|
|
@@ -20168,7 +20265,7 @@ var require_parser = __commonJS({
|
|
|
20168
20265
|
const returnLen = this.typeTokenLength(inner);
|
|
20169
20266
|
return returnLen === 0 ? 0 : inner + returnLen - offset;
|
|
20170
20267
|
}
|
|
20171
|
-
const isNamedType = token.kind === "int" || token.kind === "bool" || token.kind === "float" || token.kind === "string" || token.kind === "void" || token.kind === "BlockPos" || token.kind === "ident";
|
|
20268
|
+
const isNamedType = token.kind === "int" || token.kind === "bool" || token.kind === "float" || token.kind === "fixed" || token.kind === "string" || token.kind === "void" || token.kind === "BlockPos" || token.kind === "ident";
|
|
20172
20269
|
if (!isNamedType) {
|
|
20173
20270
|
return 0;
|
|
20174
20271
|
}
|
|
@@ -20480,6 +20577,25 @@ var require_compile = __commonJS({
|
|
|
20480
20577
|
}
|
|
20481
20578
|
return false;
|
|
20482
20579
|
}
|
|
20580
|
+
function resolveImportPath(spec, fromFile, includeDirs) {
|
|
20581
|
+
const candidates = spec.endsWith(".mcrs") ? [spec] : [spec, spec + ".mcrs"];
|
|
20582
|
+
for (const candidate of candidates) {
|
|
20583
|
+
const rel = path3.resolve(path3.dirname(fromFile), candidate);
|
|
20584
|
+
if (fs2.existsSync(rel))
|
|
20585
|
+
return rel;
|
|
20586
|
+
const stdlibDir = path3.resolve(__dirname, "..", "src", "stdlib");
|
|
20587
|
+
const stdlibCandidate = candidate.replace(/^stdlib\//, "");
|
|
20588
|
+
const stdlib = path3.resolve(stdlibDir, stdlibCandidate);
|
|
20589
|
+
if (fs2.existsSync(stdlib))
|
|
20590
|
+
return stdlib;
|
|
20591
|
+
for (const dir of includeDirs) {
|
|
20592
|
+
const extra = path3.resolve(dir, candidate);
|
|
20593
|
+
if (fs2.existsSync(extra))
|
|
20594
|
+
return extra;
|
|
20595
|
+
}
|
|
20596
|
+
}
|
|
20597
|
+
return null;
|
|
20598
|
+
}
|
|
20483
20599
|
function countLines(source) {
|
|
20484
20600
|
return source === "" ? 0 : source.split("\n").length;
|
|
20485
20601
|
}
|
|
@@ -20493,6 +20609,7 @@ var require_compile = __commonJS({
|
|
|
20493
20609
|
function preprocessSourceWithMetadata(source, options = {}) {
|
|
20494
20610
|
const { filePath } = options;
|
|
20495
20611
|
const seen = options.seen ?? /* @__PURE__ */ new Set();
|
|
20612
|
+
const includeDirs = options.includeDirs ?? [];
|
|
20496
20613
|
if (filePath) {
|
|
20497
20614
|
seen.add(path3.resolve(filePath));
|
|
20498
20615
|
}
|
|
@@ -20509,22 +20626,20 @@ var require_compile = __commonJS({
|
|
|
20509
20626
|
if (!filePath) {
|
|
20510
20627
|
throw new diagnostics_1.DiagnosticError("ParseError", "Import statements require a file path", { line: i + 1, col: 1 }, lines);
|
|
20511
20628
|
}
|
|
20512
|
-
const importPath =
|
|
20629
|
+
const importPath = resolveImportPath(match[1], filePath, includeDirs);
|
|
20630
|
+
if (!importPath) {
|
|
20631
|
+
throw new diagnostics_1.DiagnosticError("ParseError", `Cannot import '${match[1]}'`, { file: filePath, line: i + 1, col: 1 }, lines);
|
|
20632
|
+
}
|
|
20513
20633
|
if (!seen.has(importPath)) {
|
|
20514
20634
|
seen.add(importPath);
|
|
20515
|
-
|
|
20516
|
-
try {
|
|
20517
|
-
importedSource = fs2.readFileSync(importPath, "utf-8");
|
|
20518
|
-
} catch {
|
|
20519
|
-
throw new diagnostics_1.DiagnosticError("ParseError", `Cannot import '${match[1]}'`, { file: filePath, line: i + 1, col: 1 }, lines);
|
|
20520
|
-
}
|
|
20635
|
+
const importedSource = fs2.readFileSync(importPath, "utf-8");
|
|
20521
20636
|
if (isLibrarySource(importedSource)) {
|
|
20522
|
-
const nested = preprocessSourceWithMetadata(importedSource, { filePath: importPath, seen });
|
|
20637
|
+
const nested = preprocessSourceWithMetadata(importedSource, { filePath: importPath, seen, includeDirs });
|
|
20523
20638
|
libraryImports.push({ source: importedSource, filePath: importPath });
|
|
20524
20639
|
if (nested.libraryImports)
|
|
20525
20640
|
libraryImports.push(...nested.libraryImports);
|
|
20526
20641
|
} else {
|
|
20527
|
-
imports.push(preprocessSourceWithMetadata(importedSource, { filePath: importPath, seen }));
|
|
20642
|
+
imports.push(preprocessSourceWithMetadata(importedSource, { filePath: importPath, seen, includeDirs }));
|
|
20528
20643
|
}
|
|
20529
20644
|
}
|
|
20530
20645
|
continue;
|
|
@@ -20717,6 +20832,57 @@ var require_lower = __commonJS({
|
|
|
20717
20832
|
};
|
|
20718
20833
|
return [initStmt, whileStmt];
|
|
20719
20834
|
}
|
|
20835
|
+
// --- Desugaring: for_in_array → let idx = 0; while(idx < len) { let v = arr[idx]; body; idx = idx + 1 } ---
|
|
20836
|
+
case "for_in_array": {
|
|
20837
|
+
const idxName = `__forin_idx_${stmt.binding}`;
|
|
20838
|
+
const initStmt = {
|
|
20839
|
+
kind: "let",
|
|
20840
|
+
name: idxName,
|
|
20841
|
+
type: { kind: "named", name: "int" },
|
|
20842
|
+
init: { kind: "int_lit", value: 0 },
|
|
20843
|
+
span: stmt.span
|
|
20844
|
+
};
|
|
20845
|
+
const bindingInit = {
|
|
20846
|
+
kind: "let",
|
|
20847
|
+
name: stmt.binding,
|
|
20848
|
+
type: void 0,
|
|
20849
|
+
init: {
|
|
20850
|
+
kind: "index",
|
|
20851
|
+
obj: { kind: "ident", name: stmt.arrayName },
|
|
20852
|
+
index: { kind: "ident", name: idxName }
|
|
20853
|
+
},
|
|
20854
|
+
span: stmt.span
|
|
20855
|
+
};
|
|
20856
|
+
const stepStmt = {
|
|
20857
|
+
kind: "expr",
|
|
20858
|
+
expr: {
|
|
20859
|
+
kind: "assign",
|
|
20860
|
+
target: idxName,
|
|
20861
|
+
value: {
|
|
20862
|
+
kind: "binary",
|
|
20863
|
+
op: "+",
|
|
20864
|
+
left: { kind: "ident", name: idxName },
|
|
20865
|
+
right: { kind: "int_lit", value: 1 }
|
|
20866
|
+
}
|
|
20867
|
+
},
|
|
20868
|
+
span: stmt.span
|
|
20869
|
+
};
|
|
20870
|
+
const body = [bindingInit, ...lowerBlock(stmt.body)];
|
|
20871
|
+
const step = [stepStmt];
|
|
20872
|
+
const whileStmt = {
|
|
20873
|
+
kind: "while",
|
|
20874
|
+
cond: {
|
|
20875
|
+
kind: "binary",
|
|
20876
|
+
op: "<",
|
|
20877
|
+
left: { kind: "ident", name: idxName },
|
|
20878
|
+
right: lowerExpr(stmt.lenExpr)
|
|
20879
|
+
},
|
|
20880
|
+
body,
|
|
20881
|
+
step,
|
|
20882
|
+
span: stmt.span
|
|
20883
|
+
};
|
|
20884
|
+
return [initStmt, whileStmt];
|
|
20885
|
+
}
|
|
20720
20886
|
case "foreach":
|
|
20721
20887
|
return {
|
|
20722
20888
|
kind: "foreach",
|
|
@@ -20772,6 +20938,15 @@ var require_lower = __commonJS({
|
|
|
20772
20938
|
};
|
|
20773
20939
|
case "raw":
|
|
20774
20940
|
return { kind: "raw", cmd: stmt.cmd, span: stmt.span };
|
|
20941
|
+
case "if_let_some":
|
|
20942
|
+
return {
|
|
20943
|
+
kind: "if_let_some",
|
|
20944
|
+
binding: stmt.binding,
|
|
20945
|
+
init: lowerExpr(stmt.init),
|
|
20946
|
+
then: lowerBlock(stmt.then),
|
|
20947
|
+
else_: stmt.else_ ? lowerBlock(stmt.else_) : void 0,
|
|
20948
|
+
span: stmt.span
|
|
20949
|
+
};
|
|
20775
20950
|
default: {
|
|
20776
20951
|
const _exhaustive = stmt;
|
|
20777
20952
|
throw new Error(`Unknown statement kind: ${_exhaustive.kind}`);
|
|
@@ -20886,6 +21061,35 @@ var require_lower = __commonJS({
|
|
|
20886
21061
|
return { kind: "member", obj: lowerExpr(expr.obj), field: expr.field, span: expr.span };
|
|
20887
21062
|
case "index":
|
|
20888
21063
|
return { kind: "index", obj: lowerExpr(expr.obj), index: lowerExpr(expr.index), span: expr.span };
|
|
21064
|
+
// --- Desugaring: compound index_assign → plain index_assign ---
|
|
21065
|
+
case "index_assign":
|
|
21066
|
+
if (expr.op !== "=") {
|
|
21067
|
+
const binOp = COMPOUND_TO_BINOP[expr.op];
|
|
21068
|
+
const obj = lowerExpr(expr.obj);
|
|
21069
|
+
const index = lowerExpr(expr.index);
|
|
21070
|
+
return {
|
|
21071
|
+
kind: "index_assign",
|
|
21072
|
+
obj,
|
|
21073
|
+
index,
|
|
21074
|
+
op: "=",
|
|
21075
|
+
value: {
|
|
21076
|
+
kind: "binary",
|
|
21077
|
+
op: binOp,
|
|
21078
|
+
left: { kind: "index", obj, index },
|
|
21079
|
+
right: lowerExpr(expr.value),
|
|
21080
|
+
span: expr.span
|
|
21081
|
+
},
|
|
21082
|
+
span: expr.span
|
|
21083
|
+
};
|
|
21084
|
+
}
|
|
21085
|
+
return {
|
|
21086
|
+
kind: "index_assign",
|
|
21087
|
+
obj: lowerExpr(expr.obj),
|
|
21088
|
+
index: lowerExpr(expr.index),
|
|
21089
|
+
op: expr.op,
|
|
21090
|
+
value: lowerExpr(expr.value),
|
|
21091
|
+
span: expr.span
|
|
21092
|
+
};
|
|
20889
21093
|
case "call":
|
|
20890
21094
|
return { kind: "call", fn: expr.fn, args: expr.args.map(lowerExpr), typeArgs: expr.typeArgs, span: expr.span };
|
|
20891
21095
|
case "invoke":
|
|
@@ -20902,6 +21106,12 @@ var require_lower = __commonJS({
|
|
|
20902
21106
|
return { kind: "path_expr", enumName: expr.enumName, variant: expr.variant, span: expr.span };
|
|
20903
21107
|
case "tuple_lit":
|
|
20904
21108
|
return { kind: "tuple_lit", elements: expr.elements.map(lowerExpr), span: expr.span };
|
|
21109
|
+
case "some_lit":
|
|
21110
|
+
return { kind: "some_lit", value: lowerExpr(expr.value), span: expr.span };
|
|
21111
|
+
case "none_lit":
|
|
21112
|
+
return { kind: "none_lit", span: expr.span };
|
|
21113
|
+
case "type_cast":
|
|
21114
|
+
return { kind: "type_cast", expr: lowerExpr(expr.expr), targetType: expr.targetType, span: expr.span };
|
|
20905
21115
|
case "lambda": {
|
|
20906
21116
|
const body = Array.isArray(expr.body) ? lowerBlock(expr.body) : lowerExpr(expr.body);
|
|
20907
21117
|
return {
|
|
@@ -20943,6 +21153,8 @@ var require_monomorphize = __commonJS({
|
|
|
20943
21153
|
return `arr_${typeSuffix(t.elem)}`;
|
|
20944
21154
|
case "tuple":
|
|
20945
21155
|
return `tup_${t.elements.map(typeSuffix).join("_")}`;
|
|
21156
|
+
case "option":
|
|
21157
|
+
return `opt_${typeSuffix(t.inner)}`;
|
|
20946
21158
|
default:
|
|
20947
21159
|
return "unknown";
|
|
20948
21160
|
}
|
|
@@ -20969,6 +21181,8 @@ var require_monomorphize = __commonJS({
|
|
|
20969
21181
|
return { kind: "array", elem: substType(t.elem, subst) };
|
|
20970
21182
|
case "tuple":
|
|
20971
21183
|
return { kind: "tuple", elements: t.elements.map((e) => substType(e, subst)) };
|
|
21184
|
+
case "option":
|
|
21185
|
+
return { kind: "option", inner: substType(t.inner, subst) };
|
|
20972
21186
|
case "function_type":
|
|
20973
21187
|
return { kind: "function_type", params: t.params.map((p) => substType(p, subst)), return: substType(t.return, subst) };
|
|
20974
21188
|
default:
|
|
@@ -21116,6 +21330,13 @@ var require_monomorphize = __commonJS({
|
|
|
21116
21330
|
};
|
|
21117
21331
|
case "execute":
|
|
21118
21332
|
return { ...stmt, body: this.rewriteBlock(stmt.body, ctx) };
|
|
21333
|
+
case "if_let_some":
|
|
21334
|
+
return {
|
|
21335
|
+
...stmt,
|
|
21336
|
+
init: this.rewriteExpr(stmt.init, ctx),
|
|
21337
|
+
then: this.rewriteBlock(stmt.then, ctx),
|
|
21338
|
+
else_: stmt.else_ ? this.rewriteBlock(stmt.else_, ctx) : void 0
|
|
21339
|
+
};
|
|
21119
21340
|
case "break":
|
|
21120
21341
|
case "continue":
|
|
21121
21342
|
case "raw":
|
|
@@ -21152,6 +21373,8 @@ var require_monomorphize = __commonJS({
|
|
|
21152
21373
|
return { ...expr, value: this.rewriteExpr(expr.value, ctx) };
|
|
21153
21374
|
case "member_assign":
|
|
21154
21375
|
return { ...expr, obj: this.rewriteExpr(expr.obj, ctx), value: this.rewriteExpr(expr.value, ctx) };
|
|
21376
|
+
case "index_assign":
|
|
21377
|
+
return { ...expr, obj: this.rewriteExpr(expr.obj, ctx), index: this.rewriteExpr(expr.index, ctx), value: this.rewriteExpr(expr.value, ctx) };
|
|
21155
21378
|
case "member":
|
|
21156
21379
|
return { ...expr, obj: this.rewriteExpr(expr.obj, ctx) };
|
|
21157
21380
|
case "index":
|
|
@@ -21172,6 +21395,10 @@ var require_monomorphize = __commonJS({
|
|
|
21172
21395
|
return { ...expr, parts: expr.parts.map((p) => typeof p === "string" ? p : this.rewriteExpr(p, ctx)) };
|
|
21173
21396
|
case "f_string":
|
|
21174
21397
|
return expr;
|
|
21398
|
+
case "some_lit":
|
|
21399
|
+
return { ...expr, value: this.rewriteExpr(expr.value, ctx) };
|
|
21400
|
+
case "none_lit":
|
|
21401
|
+
return expr;
|
|
21175
21402
|
// Literals / terminals — pass through unchanged
|
|
21176
21403
|
default:
|
|
21177
21404
|
return expr;
|
|
@@ -21223,7 +21450,7 @@ var require_monomorphize = __commonJS({
|
|
|
21223
21450
|
case "int_lit":
|
|
21224
21451
|
return { kind: "named", name: "int" };
|
|
21225
21452
|
case "float_lit":
|
|
21226
|
-
return { kind: "named", name: "
|
|
21453
|
+
return { kind: "named", name: "fixed" };
|
|
21227
21454
|
case "bool_lit":
|
|
21228
21455
|
return { kind: "named", name: "bool" };
|
|
21229
21456
|
case "str_lit":
|
|
@@ -21400,6 +21627,11 @@ var require_macro = __commonJS({
|
|
|
21400
21627
|
scanExpr(expr.obj, paramNames, macroParams);
|
|
21401
21628
|
scanExpr(expr.value, paramNames, macroParams);
|
|
21402
21629
|
break;
|
|
21630
|
+
case "index_assign":
|
|
21631
|
+
scanExpr(expr.obj, paramNames, macroParams);
|
|
21632
|
+
scanExpr(expr.index, paramNames, macroParams);
|
|
21633
|
+
scanExpr(expr.value, paramNames, macroParams);
|
|
21634
|
+
break;
|
|
21403
21635
|
case "member":
|
|
21404
21636
|
scanExpr(expr.obj, paramNames, macroParams);
|
|
21405
21637
|
break;
|
|
@@ -21465,17 +21697,26 @@ var require_lower2 = __commonJS({
|
|
|
21465
21697
|
fnParamInfo.set(`${ib.typeName}::${m.name}`, m.params);
|
|
21466
21698
|
}
|
|
21467
21699
|
}
|
|
21700
|
+
const timerCounter = { count: 0, timerId: 0 };
|
|
21701
|
+
const hirFnMap = /* @__PURE__ */ new Map();
|
|
21702
|
+
for (const f of hir.functions) {
|
|
21703
|
+
hirFnMap.set(f.name, f);
|
|
21704
|
+
}
|
|
21705
|
+
const specializedFnsRegistry = /* @__PURE__ */ new Map();
|
|
21468
21706
|
const allFunctions = [];
|
|
21469
21707
|
for (const f of hir.functions) {
|
|
21470
|
-
const { fn, helpers } = lowerFunction(f, hir.namespace, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, sourceFile);
|
|
21708
|
+
const { fn, helpers } = lowerFunction(f, hir.namespace, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, sourceFile, timerCounter, void 0, hirFnMap, specializedFnsRegistry);
|
|
21471
21709
|
allFunctions.push(fn, ...helpers);
|
|
21472
21710
|
}
|
|
21473
21711
|
for (const ib of hir.implBlocks) {
|
|
21474
21712
|
for (const m of ib.methods) {
|
|
21475
|
-
const { fn, helpers } = lowerImplMethod(m, ib.typeName, hir.namespace, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, sourceFile);
|
|
21713
|
+
const { fn, helpers } = lowerImplMethod(m, ib.typeName, hir.namespace, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, sourceFile, timerCounter);
|
|
21476
21714
|
allFunctions.push(fn, ...helpers);
|
|
21477
21715
|
}
|
|
21478
21716
|
}
|
|
21717
|
+
for (const fns of specializedFnsRegistry.values()) {
|
|
21718
|
+
allFunctions.push(...fns);
|
|
21719
|
+
}
|
|
21479
21720
|
return {
|
|
21480
21721
|
functions: allFunctions,
|
|
21481
21722
|
namespace: hir.namespace,
|
|
@@ -21483,7 +21724,7 @@ var require_lower2 = __commonJS({
|
|
|
21483
21724
|
};
|
|
21484
21725
|
}
|
|
21485
21726
|
var FnContext = class {
|
|
21486
|
-
constructor(namespace, fnName, structDefs = /* @__PURE__ */ new Map(), implMethods = /* @__PURE__ */ new Map(), macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map()) {
|
|
21727
|
+
constructor(namespace, fnName, structDefs = /* @__PURE__ */ new Map(), implMethods = /* @__PURE__ */ new Map(), macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map(), timerCounter = { count: 0, timerId: 0 }) {
|
|
21487
21728
|
this.tempCounter = 0;
|
|
21488
21729
|
this.blockCounter = 0;
|
|
21489
21730
|
this.blocks = [];
|
|
@@ -21491,8 +21732,15 @@ var require_lower2 = __commonJS({
|
|
|
21491
21732
|
this.helperFunctions = [];
|
|
21492
21733
|
this.structVars = /* @__PURE__ */ new Map();
|
|
21493
21734
|
this.tupleVars = /* @__PURE__ */ new Map();
|
|
21735
|
+
this.arrayVars = /* @__PURE__ */ new Map();
|
|
21494
21736
|
this.currentSourceLoc = void 0;
|
|
21495
21737
|
this.sourceFile = void 0;
|
|
21738
|
+
this.constTemps = /* @__PURE__ */ new Map();
|
|
21739
|
+
this.floatTemps = /* @__PURE__ */ new Set();
|
|
21740
|
+
this.doubleVars = /* @__PURE__ */ new Map();
|
|
21741
|
+
this.doubleVarCount = 0;
|
|
21742
|
+
this.hirFunctions = /* @__PURE__ */ new Map();
|
|
21743
|
+
this.specializedFnsRegistry = /* @__PURE__ */ new Map();
|
|
21496
21744
|
this.namespace = namespace;
|
|
21497
21745
|
this.fnName = fnName;
|
|
21498
21746
|
this.structDefs = structDefs;
|
|
@@ -21501,6 +21749,7 @@ var require_lower2 = __commonJS({
|
|
|
21501
21749
|
this.fnParamInfo = fnParamInfo;
|
|
21502
21750
|
this.currentMacroParams = macroInfo.get(fnName)?.macroParams ?? /* @__PURE__ */ new Set();
|
|
21503
21751
|
this.enumDefs = enumDefs;
|
|
21752
|
+
this.timerCounter = timerCounter;
|
|
21504
21753
|
const entry = this.makeBlock("entry");
|
|
21505
21754
|
this.currentBlock = entry;
|
|
21506
21755
|
}
|
|
@@ -21554,18 +21803,42 @@ var require_lower2 = __commonJS({
|
|
|
21554
21803
|
getFnName() {
|
|
21555
21804
|
return this.fnName;
|
|
21556
21805
|
}
|
|
21806
|
+
/** Allocate a unique NBT storage path for a double variable */
|
|
21807
|
+
freshDoubleVar(varName) {
|
|
21808
|
+
const path3 = `${this.namespace}_${this.fnName}_${varName}_${this.doubleVarCount++}`;
|
|
21809
|
+
this.doubleVars.set(varName, path3);
|
|
21810
|
+
return path3;
|
|
21811
|
+
}
|
|
21557
21812
|
};
|
|
21558
|
-
function lowerFunction(fn, namespace, structDefs = /* @__PURE__ */ new Map(), implMethods = /* @__PURE__ */ new Map(), macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map(), sourceFile) {
|
|
21559
|
-
const
|
|
21813
|
+
function lowerFunction(fn, namespace, structDefs = /* @__PURE__ */ new Map(), implMethods = /* @__PURE__ */ new Map(), macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map(), sourceFile, timerCounter = { count: 0, timerId: 0 }, arrayArgBindings, hirFnMap, specializedFnsRegistry, overrideName) {
|
|
21814
|
+
const mirFnName = overrideName ?? fn.name;
|
|
21815
|
+
const ctx = new FnContext(namespace, mirFnName, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, timerCounter);
|
|
21560
21816
|
ctx.sourceFile = sourceFile;
|
|
21817
|
+
if (hirFnMap)
|
|
21818
|
+
ctx.hirFunctions = hirFnMap;
|
|
21819
|
+
if (specializedFnsRegistry)
|
|
21820
|
+
ctx.specializedFnsRegistry = specializedFnsRegistry;
|
|
21561
21821
|
const fnMacroInfo = macroInfo.get(fn.name);
|
|
21562
|
-
|
|
21563
|
-
const
|
|
21564
|
-
|
|
21565
|
-
|
|
21822
|
+
if (arrayArgBindings) {
|
|
21823
|
+
for (const [paramName, arrInfo] of arrayArgBindings) {
|
|
21824
|
+
ctx.arrayVars.set(paramName, arrInfo);
|
|
21825
|
+
}
|
|
21826
|
+
}
|
|
21827
|
+
const params = [];
|
|
21566
21828
|
const scope = /* @__PURE__ */ new Map();
|
|
21567
|
-
|
|
21568
|
-
|
|
21829
|
+
let doubleParamSlot = 0;
|
|
21830
|
+
fn.params.forEach((p) => {
|
|
21831
|
+
if (p.type.kind === "array" && arrayArgBindings?.has(p.name)) {
|
|
21832
|
+
return;
|
|
21833
|
+
}
|
|
21834
|
+
if (p.type.kind === "named" && p.type.name === "double") {
|
|
21835
|
+
const path3 = `__dp${doubleParamSlot++}`;
|
|
21836
|
+
ctx.doubleVars.set(p.name, path3);
|
|
21837
|
+
return;
|
|
21838
|
+
}
|
|
21839
|
+
const t = ctx.freshTemp();
|
|
21840
|
+
params.push({ name: t, isMacroParam: fnMacroInfo?.macroParams.has(p.name) ?? false });
|
|
21841
|
+
scope.set(p.name, t);
|
|
21569
21842
|
});
|
|
21570
21843
|
lowerBlock(fn.body, ctx, scope);
|
|
21571
21844
|
const cur = ctx.current();
|
|
@@ -21576,7 +21849,7 @@ var require_lower2 = __commonJS({
|
|
|
21576
21849
|
const liveBlocks = ctx.blocks.filter((b) => reachable.has(b.id));
|
|
21577
21850
|
computePreds(liveBlocks);
|
|
21578
21851
|
const result = {
|
|
21579
|
-
name:
|
|
21852
|
+
name: mirFnName,
|
|
21580
21853
|
params,
|
|
21581
21854
|
blocks: liveBlocks,
|
|
21582
21855
|
entry: "entry",
|
|
@@ -21584,9 +21857,9 @@ var require_lower2 = __commonJS({
|
|
|
21584
21857
|
};
|
|
21585
21858
|
return { fn: result, helpers: ctx.helperFunctions };
|
|
21586
21859
|
}
|
|
21587
|
-
function lowerImplMethod(method, typeName, namespace, structDefs, implMethods, macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map(), sourceFile) {
|
|
21860
|
+
function lowerImplMethod(method, typeName, namespace, structDefs, implMethods, macroInfo = /* @__PURE__ */ new Map(), fnParamInfo = /* @__PURE__ */ new Map(), enumDefs = /* @__PURE__ */ new Map(), sourceFile, timerCounter = { count: 0, timerId: 0 }) {
|
|
21588
21861
|
const fnName = `${typeName}::${method.name}`;
|
|
21589
|
-
const ctx = new FnContext(namespace, fnName, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs);
|
|
21862
|
+
const ctx = new FnContext(namespace, fnName, structDefs, implMethods, macroInfo, fnParamInfo, enumDefs, timerCounter);
|
|
21590
21863
|
ctx.sourceFile = sourceFile;
|
|
21591
21864
|
const fields = structDefs.get(typeName) ?? [];
|
|
21592
21865
|
const hasSelf = method.params.length > 0 && method.params[0].name === "self";
|
|
@@ -21686,7 +21959,22 @@ var require_lower2 = __commonJS({
|
|
|
21686
21959
|
}
|
|
21687
21960
|
switch (stmt.kind) {
|
|
21688
21961
|
case "let": {
|
|
21689
|
-
if (stmt.init.kind === "
|
|
21962
|
+
if (stmt.init.kind === "some_lit") {
|
|
21963
|
+
const hasTemp = `__opt_${stmt.name}_has`;
|
|
21964
|
+
const valTemp = `__opt_${stmt.name}_val`;
|
|
21965
|
+
ctx.emit({ kind: "const", dst: hasTemp, value: 1 });
|
|
21966
|
+
const valOp = lowerExpr(stmt.init.value, ctx, scope);
|
|
21967
|
+
ctx.emit({ kind: "copy", dst: valTemp, src: valOp });
|
|
21968
|
+
const fieldTemps = /* @__PURE__ */ new Map([["has", hasTemp], ["val", valTemp]]);
|
|
21969
|
+
ctx.structVars.set(stmt.name, { typeName: "__option", fields: fieldTemps });
|
|
21970
|
+
} else if (stmt.init.kind === "none_lit") {
|
|
21971
|
+
const hasTemp = `__opt_${stmt.name}_has`;
|
|
21972
|
+
const valTemp = `__opt_${stmt.name}_val`;
|
|
21973
|
+
ctx.emit({ kind: "const", dst: hasTemp, value: 0 });
|
|
21974
|
+
ctx.emit({ kind: "const", dst: valTemp, value: 0 });
|
|
21975
|
+
const fieldTemps = /* @__PURE__ */ new Map([["has", hasTemp], ["val", valTemp]]);
|
|
21976
|
+
ctx.structVars.set(stmt.name, { typeName: "__option", fields: fieldTemps });
|
|
21977
|
+
} else if (stmt.init.kind === "struct_lit") {
|
|
21690
21978
|
const typeName = stmt.type?.kind === "struct" ? stmt.type.name : "__anon";
|
|
21691
21979
|
const fieldTemps = /* @__PURE__ */ new Map();
|
|
21692
21980
|
for (const field of stmt.init.fields) {
|
|
@@ -21696,6 +21984,14 @@ var require_lower2 = __commonJS({
|
|
|
21696
21984
|
fieldTemps.set(field.name, t);
|
|
21697
21985
|
}
|
|
21698
21986
|
ctx.structVars.set(stmt.name, { typeName, fields: fieldTemps });
|
|
21987
|
+
} else if (stmt.type?.kind === "option") {
|
|
21988
|
+
lowerExpr(stmt.init, ctx, scope);
|
|
21989
|
+
const hasTemp = `__opt_${stmt.name}_has`;
|
|
21990
|
+
const valTemp = `__opt_${stmt.name}_val`;
|
|
21991
|
+
ctx.emit({ kind: "copy", dst: hasTemp, src: { kind: "temp", name: "__rf_has" } });
|
|
21992
|
+
ctx.emit({ kind: "copy", dst: valTemp, src: { kind: "temp", name: "__rf_val" } });
|
|
21993
|
+
const fieldTemps = /* @__PURE__ */ new Map([["has", hasTemp], ["val", valTemp]]);
|
|
21994
|
+
ctx.structVars.set(stmt.name, { typeName: "__option", fields: fieldTemps });
|
|
21699
21995
|
} else if (stmt.type?.kind === "struct") {
|
|
21700
21996
|
const fields = ctx.structDefs.get(stmt.type.name);
|
|
21701
21997
|
if (fields) {
|
|
@@ -21705,6 +22001,11 @@ var require_lower2 = __commonJS({
|
|
|
21705
22001
|
const t = ctx.freshTemp();
|
|
21706
22002
|
ctx.emit({ kind: "copy", dst: t, src: { kind: "temp", name: `__rf_${fieldName}` } });
|
|
21707
22003
|
fieldTemps.set(fieldName, t);
|
|
22004
|
+
const rfSlot = `__rf_${fieldName}`;
|
|
22005
|
+
const constVal = ctx.constTemps.get(rfSlot);
|
|
22006
|
+
if (constVal !== void 0) {
|
|
22007
|
+
ctx.constTemps.set(t, constVal);
|
|
22008
|
+
}
|
|
21708
22009
|
}
|
|
21709
22010
|
ctx.structVars.set(stmt.name, { typeName: stmt.type.name, fields: fieldTemps });
|
|
21710
22011
|
} else {
|
|
@@ -21713,11 +22014,50 @@ var require_lower2 = __commonJS({
|
|
|
21713
22014
|
ctx.emit({ kind: "copy", dst: t, src: valOp });
|
|
21714
22015
|
scope.set(stmt.name, t);
|
|
21715
22016
|
}
|
|
22017
|
+
} else if (stmt.type?.kind === "named" && stmt.type.name === "double") {
|
|
22018
|
+
const path3 = ctx.freshDoubleVar(stmt.name);
|
|
22019
|
+
const ns = ctx.getNamespace();
|
|
22020
|
+
if (stmt.init.kind === "double_lit") {
|
|
22021
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d ${path3} set value ${stmt.init.value}d`, args: [] });
|
|
22022
|
+
} else {
|
|
22023
|
+
const initOp = lowerExpr(stmt.init, ctx, scope);
|
|
22024
|
+
const initTemp = ctx.freshTemp();
|
|
22025
|
+
ctx.emit({ kind: "copy", dst: initTemp, src: initOp });
|
|
22026
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:execute store result storage rs:d ${path3} double 0.0001 run scoreboard players get $${initTemp} __${ns}`, args: [] });
|
|
22027
|
+
}
|
|
22028
|
+
const t = ctx.freshTemp();
|
|
22029
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
22030
|
+
scope.set(stmt.name, t);
|
|
22031
|
+
} else if (stmt.init.kind === "array_lit") {
|
|
22032
|
+
const ns = `${ctx.getNamespace()}:arrays`;
|
|
22033
|
+
const pathPrefix = stmt.name;
|
|
22034
|
+
ctx.arrayVars.set(stmt.name, { ns, pathPrefix });
|
|
22035
|
+
const elems = stmt.init.elements;
|
|
22036
|
+
const allConst = elems.every((e) => e.kind === "int_lit");
|
|
22037
|
+
if (allConst) {
|
|
22038
|
+
const vals = elems.map((e) => e.value).join(", ");
|
|
22039
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage ${ns} ${pathPrefix} set value [${vals}]`, args: [] });
|
|
22040
|
+
} else {
|
|
22041
|
+
const zeros = elems.map(() => "0").join(", ");
|
|
22042
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage ${ns} ${pathPrefix} set value [${zeros}]`, args: [] });
|
|
22043
|
+
for (let i = 0; i < elems.length; i++) {
|
|
22044
|
+
const elemOp = lowerExpr(elems[i], ctx, scope);
|
|
22045
|
+
if (elemOp.kind !== "const" || elems[i].kind !== "int_lit") {
|
|
22046
|
+
ctx.emit({ kind: "nbt_write", ns, path: `${pathPrefix}[${i}]`, type: "int", scale: 1, src: elemOp });
|
|
22047
|
+
}
|
|
22048
|
+
}
|
|
22049
|
+
}
|
|
22050
|
+
const lenTemp = ctx.freshTemp();
|
|
22051
|
+
ctx.emit({ kind: "const", dst: lenTemp, value: elems.length });
|
|
22052
|
+
scope.set(stmt.name, lenTemp);
|
|
21716
22053
|
} else {
|
|
21717
22054
|
const valOp = lowerExpr(stmt.init, ctx, scope);
|
|
21718
22055
|
const t = ctx.freshTemp();
|
|
21719
22056
|
ctx.emit({ kind: "copy", dst: t, src: valOp });
|
|
21720
22057
|
scope.set(stmt.name, t);
|
|
22058
|
+
if (stmt.type?.kind === "named" && (stmt.type.name === "fixed" || stmt.type.name === "float")) {
|
|
22059
|
+
ctx.floatTemps.add(t);
|
|
22060
|
+
}
|
|
21721
22061
|
}
|
|
21722
22062
|
break;
|
|
21723
22063
|
}
|
|
@@ -21767,7 +22107,16 @@ var require_lower2 = __commonJS({
|
|
|
21767
22107
|
break;
|
|
21768
22108
|
}
|
|
21769
22109
|
case "return": {
|
|
21770
|
-
if (stmt.value?.kind === "
|
|
22110
|
+
if (stmt.value?.kind === "some_lit") {
|
|
22111
|
+
const valOp = lowerExpr(stmt.value.value, ctx, scope);
|
|
22112
|
+
ctx.emit({ kind: "copy", dst: "__rf_has", src: { kind: "const", value: 1 } });
|
|
22113
|
+
ctx.emit({ kind: "copy", dst: "__rf_val", src: valOp });
|
|
22114
|
+
ctx.terminate({ kind: "return", value: null });
|
|
22115
|
+
} else if (stmt.value?.kind === "none_lit") {
|
|
22116
|
+
ctx.emit({ kind: "copy", dst: "__rf_has", src: { kind: "const", value: 0 } });
|
|
22117
|
+
ctx.emit({ kind: "copy", dst: "__rf_val", src: { kind: "const", value: 0 } });
|
|
22118
|
+
ctx.terminate({ kind: "return", value: null });
|
|
22119
|
+
} else if (stmt.value?.kind === "struct_lit") {
|
|
21771
22120
|
for (const field of stmt.value.fields) {
|
|
21772
22121
|
const val = lowerExpr(field.value, ctx, scope);
|
|
21773
22122
|
ctx.emit({ kind: "copy", dst: `__rf_${field.name}`, src: val });
|
|
@@ -21779,6 +22128,18 @@ var require_lower2 = __commonJS({
|
|
|
21779
22128
|
ctx.emit({ kind: "copy", dst: `__rf_${i}`, src: val });
|
|
21780
22129
|
}
|
|
21781
22130
|
ctx.terminate({ kind: "return", value: null });
|
|
22131
|
+
} else if (stmt.value?.kind === "ident") {
|
|
22132
|
+
const sv = ctx.structVars.get(stmt.value.name);
|
|
22133
|
+
if (sv && sv.typeName === "__option") {
|
|
22134
|
+
const hasT = sv.fields.get("has");
|
|
22135
|
+
const valT = sv.fields.get("val");
|
|
22136
|
+
ctx.emit({ kind: "copy", dst: "__rf_has", src: { kind: "temp", name: hasT } });
|
|
22137
|
+
ctx.emit({ kind: "copy", dst: "__rf_val", src: { kind: "temp", name: valT } });
|
|
22138
|
+
ctx.terminate({ kind: "return", value: null });
|
|
22139
|
+
} else {
|
|
22140
|
+
const val = lowerExpr(stmt.value, ctx, scope);
|
|
22141
|
+
ctx.terminate({ kind: "return", value: val });
|
|
22142
|
+
}
|
|
21782
22143
|
} else {
|
|
21783
22144
|
const val = stmt.value ? lowerExpr(stmt.value, ctx, scope) : null;
|
|
21784
22145
|
ctx.terminate({ kind: "return", value: val });
|
|
@@ -21916,6 +22277,34 @@ var require_lower2 = __commonJS({
|
|
|
21916
22277
|
if (isPlaceholderTerm(ctx.current().term)) {
|
|
21917
22278
|
ctx.terminate({ kind: "jump", target: mergeBlock.id });
|
|
21918
22279
|
}
|
|
22280
|
+
} else if (arm.pattern.kind === "range_lit") {
|
|
22281
|
+
const range = arm.pattern.range;
|
|
22282
|
+
const armBody = ctx.newBlock("match_arm");
|
|
22283
|
+
const nextArm = ctx.newBlock("match_next");
|
|
22284
|
+
const checks = [];
|
|
22285
|
+
if (range.min !== void 0)
|
|
22286
|
+
checks.push({ op: "ge", bound: range.min });
|
|
22287
|
+
if (range.max !== void 0)
|
|
22288
|
+
checks.push({ op: "le", bound: range.max });
|
|
22289
|
+
if (checks.length === 0) {
|
|
22290
|
+
ctx.terminate({ kind: "jump", target: armBody.id });
|
|
22291
|
+
} else {
|
|
22292
|
+
for (let ci = 0; ci < checks.length; ci++) {
|
|
22293
|
+
const { op, bound } = checks[ci];
|
|
22294
|
+
const cmpTemp = ctx.freshTemp();
|
|
22295
|
+
ctx.emit({ kind: "cmp", dst: cmpTemp, op, a: matchVal, b: { kind: "const", value: bound } });
|
|
22296
|
+
const passBlock = ci === checks.length - 1 ? armBody : ctx.newBlock("match_range_check");
|
|
22297
|
+
ctx.terminate({ kind: "branch", cond: { kind: "temp", name: cmpTemp }, then: passBlock.id, else: nextArm.id });
|
|
22298
|
+
if (ci < checks.length - 1)
|
|
22299
|
+
ctx.switchTo(passBlock);
|
|
22300
|
+
}
|
|
22301
|
+
}
|
|
22302
|
+
ctx.switchTo(armBody);
|
|
22303
|
+
lowerBlock(arm.body, ctx, new Map(scope));
|
|
22304
|
+
if (isPlaceholderTerm(ctx.current().term)) {
|
|
22305
|
+
ctx.terminate({ kind: "jump", target: mergeBlock.id });
|
|
22306
|
+
}
|
|
22307
|
+
ctx.switchTo(nextArm);
|
|
21919
22308
|
} else {
|
|
21920
22309
|
const patOp = lowerExpr(arm.pattern, ctx, scope);
|
|
21921
22310
|
const cmpTemp = ctx.freshTemp();
|
|
@@ -21938,7 +22327,53 @@ var require_lower2 = __commonJS({
|
|
|
21938
22327
|
break;
|
|
21939
22328
|
}
|
|
21940
22329
|
case "raw": {
|
|
21941
|
-
|
|
22330
|
+
const ns = ctx.getNamespace();
|
|
22331
|
+
const rawCmd = stmt.cmd.replace(/__NS__/g, ns).replace(/__OBJ__/g, `__${ns}`);
|
|
22332
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:${rawCmd}`, args: [] });
|
|
22333
|
+
break;
|
|
22334
|
+
}
|
|
22335
|
+
case "if_let_some": {
|
|
22336
|
+
const sv = (() => {
|
|
22337
|
+
if (stmt.init.kind === "ident")
|
|
22338
|
+
return ctx.structVars.get(stmt.init.name);
|
|
22339
|
+
return void 0;
|
|
22340
|
+
})();
|
|
22341
|
+
let hasOp;
|
|
22342
|
+
let valTemp;
|
|
22343
|
+
if (sv && sv.typeName === "__option") {
|
|
22344
|
+
const hasT = sv.fields.get("has");
|
|
22345
|
+
const valT = sv.fields.get("val");
|
|
22346
|
+
hasOp = { kind: "temp", name: hasT };
|
|
22347
|
+
valTemp = valT;
|
|
22348
|
+
} else {
|
|
22349
|
+
lowerExpr(stmt.init, ctx, scope);
|
|
22350
|
+
const hasT = ctx.freshTemp();
|
|
22351
|
+
const valT = ctx.freshTemp();
|
|
22352
|
+
ctx.emit({ kind: "copy", dst: hasT, src: { kind: "temp", name: "__rf_has" } });
|
|
22353
|
+
ctx.emit({ kind: "copy", dst: valT, src: { kind: "temp", name: "__rf_val" } });
|
|
22354
|
+
hasOp = { kind: "temp", name: hasT };
|
|
22355
|
+
valTemp = valT;
|
|
22356
|
+
}
|
|
22357
|
+
const thenBlock = ctx.newBlock("ifl_then");
|
|
22358
|
+
const mergeBlock = ctx.newBlock("ifl_merge");
|
|
22359
|
+
const elseBlock = stmt.else_ ? ctx.newBlock("ifl_else") : mergeBlock;
|
|
22360
|
+
ctx.terminate({ kind: "branch", cond: hasOp, then: thenBlock.id, else: elseBlock.id });
|
|
22361
|
+
ctx.switchTo(thenBlock);
|
|
22362
|
+
const thenScope = new Map(scope);
|
|
22363
|
+
if (valTemp)
|
|
22364
|
+
thenScope.set(stmt.binding, valTemp);
|
|
22365
|
+
lowerBlock(stmt.then, ctx, thenScope);
|
|
22366
|
+
if (isPlaceholderTerm(ctx.current().term)) {
|
|
22367
|
+
ctx.terminate({ kind: "jump", target: mergeBlock.id });
|
|
22368
|
+
}
|
|
22369
|
+
if (stmt.else_) {
|
|
22370
|
+
ctx.switchTo(elseBlock);
|
|
22371
|
+
lowerBlock(stmt.else_, ctx, new Map(scope));
|
|
22372
|
+
if (isPlaceholderTerm(ctx.current().term)) {
|
|
22373
|
+
ctx.terminate({ kind: "jump", target: mergeBlock.id });
|
|
22374
|
+
}
|
|
22375
|
+
}
|
|
22376
|
+
ctx.switchTo(mergeBlock);
|
|
21942
22377
|
break;
|
|
21943
22378
|
}
|
|
21944
22379
|
default: {
|
|
@@ -21952,12 +22387,19 @@ var require_lower2 = __commonJS({
|
|
|
21952
22387
|
case "int_lit":
|
|
21953
22388
|
return { kind: "const", value: expr.value };
|
|
21954
22389
|
case "float_lit":
|
|
21955
|
-
return { kind: "const", value: expr.value };
|
|
22390
|
+
return { kind: "const", value: Math.round(expr.value * 1e4) };
|
|
21956
22391
|
case "byte_lit":
|
|
21957
22392
|
case "short_lit":
|
|
21958
22393
|
case "long_lit":
|
|
21959
|
-
case "double_lit":
|
|
21960
22394
|
return { kind: "const", value: expr.value };
|
|
22395
|
+
case "double_lit": {
|
|
22396
|
+
const path3 = ctx.freshDoubleVar(`dlit`);
|
|
22397
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d ${path3} set value ${expr.value}d`, args: [] });
|
|
22398
|
+
const t = ctx.freshTemp();
|
|
22399
|
+
ctx.emit({ kind: "nbt_read", dst: t, ns: "rs:d", path: path3, scale: 1e4 });
|
|
22400
|
+
ctx.floatTemps.add(t);
|
|
22401
|
+
return { kind: "temp", name: t };
|
|
22402
|
+
}
|
|
21961
22403
|
case "bool_lit": {
|
|
21962
22404
|
return { kind: "const", value: expr.value ? 1 : 0 };
|
|
21963
22405
|
}
|
|
@@ -21986,6 +22428,13 @@ var require_lower2 = __commonJS({
|
|
|
21986
22428
|
return { kind: "temp", name: t };
|
|
21987
22429
|
}
|
|
21988
22430
|
case "ident": {
|
|
22431
|
+
if (ctx.doubleVars.has(expr.name)) {
|
|
22432
|
+
const path3 = ctx.doubleVars.get(expr.name);
|
|
22433
|
+
const t2 = ctx.freshTemp();
|
|
22434
|
+
ctx.emit({ kind: "nbt_read", dst: t2, ns: "rs:d", path: path3, scale: 1e4 });
|
|
22435
|
+
ctx.floatTemps.add(t2);
|
|
22436
|
+
return { kind: "temp", name: t2 };
|
|
22437
|
+
}
|
|
21989
22438
|
const temp = scope.get(expr.name);
|
|
21990
22439
|
if (temp)
|
|
21991
22440
|
return { kind: "temp", name: temp };
|
|
@@ -22001,6 +22450,26 @@ var require_lower2 = __commonJS({
|
|
|
22001
22450
|
if (expr.op === "||") {
|
|
22002
22451
|
return lowerShortCircuitOr(expr, ctx, scope);
|
|
22003
22452
|
}
|
|
22453
|
+
const doubleArithOps = {
|
|
22454
|
+
"+": "math_hp:double_add",
|
|
22455
|
+
"-": "math_hp:double_sub",
|
|
22456
|
+
"*": "math_hp:double_mul",
|
|
22457
|
+
"/": "math_hp:double_div"
|
|
22458
|
+
};
|
|
22459
|
+
if (expr.op in doubleArithOps && isDoubleExpr(expr.left, ctx) && isDoubleExpr(expr.right, ctx)) {
|
|
22460
|
+
const ns = ctx.getNamespace();
|
|
22461
|
+
const leftPath = lowerDoubleExprToPath(expr.left, ctx, scope);
|
|
22462
|
+
const rightPath = lowerDoubleExprToPath(expr.right, ctx, scope);
|
|
22463
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d __dp0 set from storage rs:d ${leftPath}`, args: [] });
|
|
22464
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d __dp1 set from storage rs:d ${rightPath}`, args: [] });
|
|
22465
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:function ${doubleArithOps[expr.op]}`, args: [] });
|
|
22466
|
+
const resultPath = ctx.freshDoubleVar("dres");
|
|
22467
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d ${resultPath} set from storage rs:d __dp0`, args: [] });
|
|
22468
|
+
const t2 = ctx.freshTemp();
|
|
22469
|
+
ctx.emit({ kind: "nbt_read", dst: t2, ns: "rs:d", path: resultPath, scale: 1e4 });
|
|
22470
|
+
ctx.floatTemps.add(t2);
|
|
22471
|
+
return { kind: "temp", name: t2 };
|
|
22472
|
+
}
|
|
22004
22473
|
const left = lowerExpr(expr.left, ctx, scope);
|
|
22005
22474
|
const right = lowerExpr(expr.right, ctx, scope);
|
|
22006
22475
|
const t = ctx.freshTemp();
|
|
@@ -22020,7 +22489,29 @@ var require_lower2 = __commonJS({
|
|
|
22020
22489
|
">=": "ge"
|
|
22021
22490
|
};
|
|
22022
22491
|
if (expr.op in arithmeticOps) {
|
|
22023
|
-
|
|
22492
|
+
const isFloatLeft = left.kind === "temp" && ctx.floatTemps.has(left.name);
|
|
22493
|
+
const isFloatRight = right.kind === "temp" && ctx.floatTemps.has(right.name);
|
|
22494
|
+
if (expr.op === "*" && isFloatLeft && isFloatRight) {
|
|
22495
|
+
ctx.emit({ kind: "mul", dst: t, a: left, b: right });
|
|
22496
|
+
const scaleTemp = ctx.freshTemp();
|
|
22497
|
+
ctx.emit({ kind: "const", dst: scaleTemp, value: 1e4 });
|
|
22498
|
+
const corrected = ctx.freshTemp();
|
|
22499
|
+
ctx.emit({ kind: "div", dst: corrected, a: { kind: "temp", name: t }, b: { kind: "temp", name: scaleTemp } });
|
|
22500
|
+
ctx.floatTemps.add(corrected);
|
|
22501
|
+
return { kind: "temp", name: corrected };
|
|
22502
|
+
} else if (expr.op === "/" && isFloatLeft && isFloatRight) {
|
|
22503
|
+
const scaleTemp = ctx.freshTemp();
|
|
22504
|
+
ctx.emit({ kind: "const", dst: scaleTemp, value: 1e4 });
|
|
22505
|
+
const scaled = ctx.freshTemp();
|
|
22506
|
+
ctx.emit({ kind: "mul", dst: scaled, a: left, b: { kind: "temp", name: scaleTemp } });
|
|
22507
|
+
ctx.emit({ kind: "div", dst: t, a: { kind: "temp", name: scaled }, b: right });
|
|
22508
|
+
ctx.floatTemps.add(t);
|
|
22509
|
+
} else {
|
|
22510
|
+
ctx.emit({ kind: arithmeticOps[expr.op], dst: t, a: left, b: right });
|
|
22511
|
+
if (isFloatLeft || isFloatRight) {
|
|
22512
|
+
ctx.floatTemps.add(t);
|
|
22513
|
+
}
|
|
22514
|
+
}
|
|
22024
22515
|
} else if (expr.op in cmpOps) {
|
|
22025
22516
|
ctx.emit({ kind: "cmp", dst: t, op: cmpOps[expr.op], a: left, b: right });
|
|
22026
22517
|
} else {
|
|
@@ -22086,13 +22577,140 @@ var require_lower2 = __commonJS({
|
|
|
22086
22577
|
return { kind: "temp", name: t };
|
|
22087
22578
|
}
|
|
22088
22579
|
case "index": {
|
|
22580
|
+
if (expr.obj.kind === "ident") {
|
|
22581
|
+
const arrInfo = ctx.arrayVars.get(expr.obj.name);
|
|
22582
|
+
if (arrInfo) {
|
|
22583
|
+
const t2 = ctx.freshTemp();
|
|
22584
|
+
if (expr.index.kind === "int_lit") {
|
|
22585
|
+
ctx.emit({ kind: "nbt_read", dst: t2, ns: arrInfo.ns, path: `${arrInfo.pathPrefix}[${expr.index.value}]`, scale: 1 });
|
|
22586
|
+
} else {
|
|
22587
|
+
const idxOp = lowerExpr(expr.index, ctx, scope);
|
|
22588
|
+
ctx.emit({ kind: "nbt_read_dynamic", dst: t2, ns: arrInfo.ns, pathPrefix: arrInfo.pathPrefix, indexSrc: idxOp });
|
|
22589
|
+
}
|
|
22590
|
+
return { kind: "temp", name: t2 };
|
|
22591
|
+
}
|
|
22592
|
+
}
|
|
22089
22593
|
const obj = lowerExpr(expr.obj, ctx, scope);
|
|
22090
|
-
|
|
22594
|
+
lowerExpr(expr.index, ctx, scope);
|
|
22091
22595
|
const t = ctx.freshTemp();
|
|
22092
22596
|
ctx.emit({ kind: "copy", dst: t, src: obj });
|
|
22093
22597
|
return { kind: "temp", name: t };
|
|
22094
22598
|
}
|
|
22599
|
+
case "index_assign": {
|
|
22600
|
+
const valOp = lowerExpr(expr.value, ctx, scope);
|
|
22601
|
+
if (expr.obj.kind === "ident") {
|
|
22602
|
+
const arrInfo = ctx.arrayVars.get(expr.obj.name);
|
|
22603
|
+
if (arrInfo) {
|
|
22604
|
+
if (expr.index.kind === "int_lit") {
|
|
22605
|
+
ctx.emit({ kind: "nbt_write", ns: arrInfo.ns, path: `${arrInfo.pathPrefix}[${expr.index.value}]`, type: "int", scale: 1, src: valOp });
|
|
22606
|
+
} else {
|
|
22607
|
+
const idxOp = lowerExpr(expr.index, ctx, scope);
|
|
22608
|
+
ctx.emit({ kind: "nbt_write_dynamic", ns: arrInfo.ns, pathPrefix: arrInfo.pathPrefix, indexSrc: idxOp, valueSrc: valOp });
|
|
22609
|
+
}
|
|
22610
|
+
return valOp;
|
|
22611
|
+
}
|
|
22612
|
+
}
|
|
22613
|
+
return valOp;
|
|
22614
|
+
}
|
|
22095
22615
|
case "call": {
|
|
22616
|
+
if (expr.fn === "scoreboard_get" || expr.fn === "score") {
|
|
22617
|
+
const player = hirExprToStringLiteral(expr.args[0]);
|
|
22618
|
+
const obj = hirExprToStringLiteral(expr.args[1]);
|
|
22619
|
+
const t2 = ctx.freshTemp();
|
|
22620
|
+
ctx.emit({ kind: "score_read", dst: t2, player, obj });
|
|
22621
|
+
return { kind: "temp", name: t2 };
|
|
22622
|
+
}
|
|
22623
|
+
if (expr.fn === "scoreboard_set") {
|
|
22624
|
+
const player = hirExprToStringLiteral(expr.args[0]);
|
|
22625
|
+
const obj = hirExprToStringLiteral(expr.args[1]);
|
|
22626
|
+
const src = lowerExpr(expr.args[2], ctx, scope);
|
|
22627
|
+
ctx.emit({ kind: "score_write", player, obj, src });
|
|
22628
|
+
const t2 = ctx.freshTemp();
|
|
22629
|
+
ctx.emit({ kind: "const", dst: t2, value: 0 });
|
|
22630
|
+
return { kind: "temp", name: t2 };
|
|
22631
|
+
}
|
|
22632
|
+
if (expr.fn === "list_push") {
|
|
22633
|
+
if (expr.args[0].kind === "ident") {
|
|
22634
|
+
const arrInfo = ctx.arrayVars.get(expr.args[0].name);
|
|
22635
|
+
if (arrInfo) {
|
|
22636
|
+
const valOp = lowerExpr(expr.args[1], ctx, scope);
|
|
22637
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage ${arrInfo.ns} ${arrInfo.pathPrefix} append value 0`, args: [] });
|
|
22638
|
+
ctx.emit({ kind: "nbt_write", ns: arrInfo.ns, path: `${arrInfo.pathPrefix}[-1]`, type: "int", scale: 1, src: valOp });
|
|
22639
|
+
const t2 = ctx.freshTemp();
|
|
22640
|
+
ctx.emit({ kind: "const", dst: t2, value: 0 });
|
|
22641
|
+
return { kind: "temp", name: t2 };
|
|
22642
|
+
}
|
|
22643
|
+
}
|
|
22644
|
+
}
|
|
22645
|
+
if (expr.fn === "list_pop") {
|
|
22646
|
+
if (expr.args[0].kind === "ident") {
|
|
22647
|
+
const arrInfo = ctx.arrayVars.get(expr.args[0].name);
|
|
22648
|
+
if (arrInfo) {
|
|
22649
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data remove storage ${arrInfo.ns} ${arrInfo.pathPrefix}[-1]`, args: [] });
|
|
22650
|
+
const t2 = ctx.freshTemp();
|
|
22651
|
+
ctx.emit({ kind: "const", dst: t2, value: 0 });
|
|
22652
|
+
return { kind: "temp", name: t2 };
|
|
22653
|
+
}
|
|
22654
|
+
}
|
|
22655
|
+
}
|
|
22656
|
+
if (expr.fn === "list_len") {
|
|
22657
|
+
if (expr.args[0].kind === "ident") {
|
|
22658
|
+
const arrInfo = ctx.arrayVars.get(expr.args[0].name);
|
|
22659
|
+
if (arrInfo) {
|
|
22660
|
+
const t2 = ctx.freshTemp();
|
|
22661
|
+
ctx.emit({ kind: "nbt_read", dst: t2, ns: arrInfo.ns, path: `${arrInfo.pathPrefix}`, scale: 1 });
|
|
22662
|
+
return { kind: "temp", name: t2 };
|
|
22663
|
+
}
|
|
22664
|
+
}
|
|
22665
|
+
}
|
|
22666
|
+
if ((expr.fn === "setTimeout" || expr.fn === "setInterval") && expr.args.length === 2) {
|
|
22667
|
+
const ticksArg = expr.args[0];
|
|
22668
|
+
const callbackArg = expr.args[1];
|
|
22669
|
+
const ns = ctx.getNamespace();
|
|
22670
|
+
const id = ctx.timerCounter.count++;
|
|
22671
|
+
const callbackName = `__timeout_callback_${id}`;
|
|
22672
|
+
let ticksLiteral = null;
|
|
22673
|
+
if (ticksArg.kind === "int_lit") {
|
|
22674
|
+
ticksLiteral = ticksArg.value;
|
|
22675
|
+
}
|
|
22676
|
+
if (callbackArg.kind === "lambda") {
|
|
22677
|
+
const cbCtx = new FnContext(ns, callbackName, ctx.structDefs, ctx.implMethods, ctx.macroInfo, ctx.fnParamInfo, ctx.enumDefs, ctx.timerCounter);
|
|
22678
|
+
cbCtx.sourceFile = ctx.sourceFile;
|
|
22679
|
+
const cbBody = Array.isArray(callbackArg.body) ? callbackArg.body : [{ kind: "expr", expr: callbackArg.body }];
|
|
22680
|
+
const bodyStmts = [...cbBody];
|
|
22681
|
+
if (expr.fn === "setInterval" && ticksLiteral !== null) {
|
|
22682
|
+
bodyStmts.push({
|
|
22683
|
+
kind: "raw",
|
|
22684
|
+
cmd: `schedule function ${ns}:${callbackName} ${ticksLiteral}t`
|
|
22685
|
+
});
|
|
22686
|
+
}
|
|
22687
|
+
lowerBlock(bodyStmts, cbCtx, /* @__PURE__ */ new Map());
|
|
22688
|
+
const cbCur = cbCtx.current();
|
|
22689
|
+
if (isPlaceholderTerm(cbCur.term)) {
|
|
22690
|
+
cbCtx.terminate({ kind: "return", value: null });
|
|
22691
|
+
}
|
|
22692
|
+
const cbReachable = computeReachable(cbCtx.blocks, "entry");
|
|
22693
|
+
const cbLiveBlocks = cbCtx.blocks.filter((b) => cbReachable.has(b.id));
|
|
22694
|
+
computePreds(cbLiveBlocks);
|
|
22695
|
+
const cbFn = {
|
|
22696
|
+
name: callbackName,
|
|
22697
|
+
params: [],
|
|
22698
|
+
blocks: cbLiveBlocks,
|
|
22699
|
+
entry: "entry",
|
|
22700
|
+
isMacro: false
|
|
22701
|
+
};
|
|
22702
|
+
ctx.helperFunctions.push(cbFn, ...cbCtx.helperFunctions);
|
|
22703
|
+
}
|
|
22704
|
+
if (ticksLiteral !== null) {
|
|
22705
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:schedule function ${ns}:${callbackName} ${ticksLiteral}t`, args: [] });
|
|
22706
|
+
} else {
|
|
22707
|
+
const ticksOp = lowerExpr(ticksArg, ctx, scope);
|
|
22708
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:schedule function ${ns}:${callbackName} 1t`, args: [ticksOp] });
|
|
22709
|
+
}
|
|
22710
|
+
const t2 = ctx.freshTemp();
|
|
22711
|
+
ctx.emit({ kind: "const", dst: t2, value: 0 });
|
|
22712
|
+
return { kind: "temp", name: t2 };
|
|
22713
|
+
}
|
|
22096
22714
|
if (macro_1.BUILTIN_SET.has(expr.fn)) {
|
|
22097
22715
|
const cmd = formatBuiltinCall(expr.fn, expr.args, ctx.currentMacroParams);
|
|
22098
22716
|
ctx.emit({ kind: "call", dst: null, fn: `__raw:${cmd}`, args: [] });
|
|
@@ -22103,6 +22721,13 @@ var require_lower2 = __commonJS({
|
|
|
22103
22721
|
if (expr.args.length > 0 && expr.args[0].kind === "ident") {
|
|
22104
22722
|
const sv = ctx.structVars.get(expr.args[0].name);
|
|
22105
22723
|
if (sv) {
|
|
22724
|
+
if (sv.typeName === "Timer") {
|
|
22725
|
+
const idTemp = sv.fields.get("_id");
|
|
22726
|
+
const timerId = idTemp !== void 0 ? ctx.constTemps.get(idTemp) : void 0;
|
|
22727
|
+
if (timerId !== void 0) {
|
|
22728
|
+
return lowerTimerMethod(expr.fn, timerId, sv, ctx, scope, expr.args.slice(1));
|
|
22729
|
+
}
|
|
22730
|
+
}
|
|
22106
22731
|
const methodInfo = ctx.implMethods.get(sv.typeName)?.get(expr.fn);
|
|
22107
22732
|
if (methodInfo?.hasSelf) {
|
|
22108
22733
|
const fields = ctx.structDefs.get(sv.typeName) ?? [];
|
|
@@ -22128,11 +22753,12 @@ var require_lower2 = __commonJS({
|
|
|
22128
22753
|
if (targetMacro.macroParams.has(paramName)) {
|
|
22129
22754
|
const paramTypeName = targetMacro.paramTypes.get(paramName) ?? "int";
|
|
22130
22755
|
const isFloat = paramTypeName === "float";
|
|
22756
|
+
const isFixed = paramTypeName === "fixed";
|
|
22131
22757
|
macroArgs.push({
|
|
22132
22758
|
name: paramName,
|
|
22133
22759
|
value: args2[i],
|
|
22134
|
-
type: isFloat ? "double" : "int",
|
|
22135
|
-
scale: isFloat ? 0.01 : 1
|
|
22760
|
+
type: isFloat || isFixed ? "double" : "int",
|
|
22761
|
+
scale: isFloat ? 0.01 : isFixed ? 1e-4 : 1
|
|
22136
22762
|
});
|
|
22137
22763
|
}
|
|
22138
22764
|
}
|
|
@@ -22140,21 +22766,97 @@ var require_lower2 = __commonJS({
|
|
|
22140
22766
|
ctx.emit({ kind: "call_macro", dst: t2, fn: expr.fn, args: macroArgs });
|
|
22141
22767
|
return { kind: "temp", name: t2 };
|
|
22142
22768
|
}
|
|
22143
|
-
|
|
22144
|
-
|
|
22145
|
-
|
|
22146
|
-
|
|
22147
|
-
|
|
22148
|
-
|
|
22149
|
-
|
|
22150
|
-
|
|
22151
|
-
|
|
22152
|
-
|
|
22153
|
-
|
|
22154
|
-
|
|
22155
|
-
|
|
22156
|
-
|
|
22157
|
-
|
|
22769
|
+
{
|
|
22770
|
+
const targetHirFn = ctx.hirFunctions.get(expr.fn);
|
|
22771
|
+
if (targetHirFn && ctx.specializedFnsRegistry) {
|
|
22772
|
+
const arrayArgBindings = /* @__PURE__ */ new Map();
|
|
22773
|
+
for (let i = 0; i < expr.args.length; i++) {
|
|
22774
|
+
const arg = expr.args[i];
|
|
22775
|
+
if (arg.kind === "ident" && ctx.arrayVars.has(arg.name)) {
|
|
22776
|
+
const paramName = targetHirFn.params[i]?.name;
|
|
22777
|
+
if (paramName) {
|
|
22778
|
+
arrayArgBindings.set(paramName, ctx.arrayVars.get(arg.name));
|
|
22779
|
+
}
|
|
22780
|
+
}
|
|
22781
|
+
}
|
|
22782
|
+
if (arrayArgBindings.size > 0) {
|
|
22783
|
+
const bindingKey = [...arrayArgBindings.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([p, { ns, pathPrefix }]) => `${p}__${ns.replace(/[^a-zA-Z0-9]/g, "_")}__${pathPrefix.replace(/[^a-zA-Z0-9]/g, "_")}`).join("__");
|
|
22784
|
+
const specializedName = `${expr.fn}__arr_${bindingKey}`;
|
|
22785
|
+
if (!ctx.specializedFnsRegistry.has(specializedName)) {
|
|
22786
|
+
ctx.specializedFnsRegistry.set(specializedName, []);
|
|
22787
|
+
const { fn: specFn, helpers: specHelpers } = lowerFunction(targetHirFn, ctx.getNamespace(), ctx.structDefs, ctx.implMethods, ctx.macroInfo, ctx.fnParamInfo, ctx.enumDefs, ctx.sourceFile, ctx.timerCounter, arrayArgBindings, ctx.hirFunctions, ctx.specializedFnsRegistry, specializedName);
|
|
22788
|
+
ctx.specializedFnsRegistry.set(specializedName, [specFn, ...specHelpers]);
|
|
22789
|
+
}
|
|
22790
|
+
const nonArrayArgs = [];
|
|
22791
|
+
for (let i = 0; i < expr.args.length; i++) {
|
|
22792
|
+
const param = targetHirFn.params[i];
|
|
22793
|
+
if (!param || param.type.kind !== "array" || !arrayArgBindings.has(param.name)) {
|
|
22794
|
+
nonArrayArgs.push(lowerExpr(expr.args[i], ctx, scope));
|
|
22795
|
+
}
|
|
22796
|
+
}
|
|
22797
|
+
const t2 = ctx.freshTemp();
|
|
22798
|
+
ctx.emit({ kind: "call", dst: t2, fn: specializedName, args: nonArrayArgs });
|
|
22799
|
+
return { kind: "temp", name: t2 };
|
|
22800
|
+
}
|
|
22801
|
+
}
|
|
22802
|
+
}
|
|
22803
|
+
{
|
|
22804
|
+
const targetParams = ctx.fnParamInfo.get(expr.fn);
|
|
22805
|
+
if (targetParams) {
|
|
22806
|
+
const hasDoubleParam = targetParams.some((p) => p.type.kind === "named" && p.type.name === "double");
|
|
22807
|
+
if (hasDoubleParam) {
|
|
22808
|
+
const ns = ctx.getNamespace();
|
|
22809
|
+
const nonDoubleArgs = [];
|
|
22810
|
+
let doubleSlot = 0;
|
|
22811
|
+
for (let i = 0; i < targetParams.length && i < expr.args.length; i++) {
|
|
22812
|
+
const p = targetParams[i];
|
|
22813
|
+
if (p.type.kind === "named" && p.type.name === "double") {
|
|
22814
|
+
const arg = expr.args[i];
|
|
22815
|
+
if (arg.kind === "ident" && ctx.doubleVars.has(arg.name)) {
|
|
22816
|
+
const srcPath = ctx.doubleVars.get(arg.name);
|
|
22817
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d __dp${doubleSlot} set from storage rs:d ${srcPath}`, args: [] });
|
|
22818
|
+
} else {
|
|
22819
|
+
const argOp = lowerExpr(arg, ctx, scope);
|
|
22820
|
+
const tmp = ctx.freshTemp();
|
|
22821
|
+
ctx.emit({ kind: "copy", dst: tmp, src: argOp });
|
|
22822
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:execute store result storage rs:d __dp${doubleSlot} double 0.0001 run scoreboard players get $${tmp} __${ns}`, args: [] });
|
|
22823
|
+
}
|
|
22824
|
+
doubleSlot++;
|
|
22825
|
+
} else {
|
|
22826
|
+
nonDoubleArgs.push(lowerExpr(expr.args[i], ctx, scope));
|
|
22827
|
+
}
|
|
22828
|
+
}
|
|
22829
|
+
for (let i = targetParams.length; i < expr.args.length; i++) {
|
|
22830
|
+
nonDoubleArgs.push(lowerExpr(expr.args[i], ctx, scope));
|
|
22831
|
+
}
|
|
22832
|
+
const t2 = ctx.freshTemp();
|
|
22833
|
+
ctx.emit({ kind: "call", dst: t2, fn: expr.fn, args: nonDoubleArgs });
|
|
22834
|
+
return { kind: "temp", name: t2 };
|
|
22835
|
+
}
|
|
22836
|
+
}
|
|
22837
|
+
}
|
|
22838
|
+
const args = expr.args.map((a) => lowerExpr(a, ctx, scope));
|
|
22839
|
+
const t = ctx.freshTemp();
|
|
22840
|
+
ctx.emit({ kind: "call", dst: t, fn: expr.fn, args });
|
|
22841
|
+
return { kind: "temp", name: t };
|
|
22842
|
+
}
|
|
22843
|
+
case "invoke": {
|
|
22844
|
+
if (expr.callee.kind === "member" && expr.callee.obj.kind === "ident") {
|
|
22845
|
+
const sv = ctx.structVars.get(expr.callee.obj.name);
|
|
22846
|
+
if (sv) {
|
|
22847
|
+
if (sv.typeName === "Timer") {
|
|
22848
|
+
const idTemp = sv.fields.get("_id");
|
|
22849
|
+
const timerId = idTemp !== void 0 ? ctx.constTemps.get(idTemp) : void 0;
|
|
22850
|
+
if (timerId !== void 0) {
|
|
22851
|
+
return lowerTimerMethod(expr.callee.field, timerId, sv, ctx, scope, expr.args);
|
|
22852
|
+
}
|
|
22853
|
+
}
|
|
22854
|
+
const methodInfo = ctx.implMethods.get(sv.typeName)?.get(expr.callee.field);
|
|
22855
|
+
if (methodInfo?.hasSelf) {
|
|
22856
|
+
const fields = ctx.structDefs.get(sv.typeName) ?? [];
|
|
22857
|
+
const selfArgs = fields.map((f) => {
|
|
22858
|
+
const temp = sv.fields.get(f);
|
|
22859
|
+
return temp ? { kind: "temp", name: temp } : { kind: "const", value: 0 };
|
|
22158
22860
|
});
|
|
22159
22861
|
const explicitArgs = expr.args.map((a) => lowerExpr(a, ctx, scope));
|
|
22160
22862
|
const allArgs = [...selfArgs, ...explicitArgs];
|
|
@@ -22171,6 +22873,20 @@ var require_lower2 = __commonJS({
|
|
|
22171
22873
|
return { kind: "temp", name: t };
|
|
22172
22874
|
}
|
|
22173
22875
|
case "static_call": {
|
|
22876
|
+
if (expr.type === "Timer" && expr.method === "new" && expr.args.length === 1) {
|
|
22877
|
+
const id = ctx.timerCounter.timerId++;
|
|
22878
|
+
const ns = ctx.getNamespace();
|
|
22879
|
+
const playerName = `__timer_${id}`;
|
|
22880
|
+
ctx.emit({ kind: "score_write", player: `${playerName}_ticks`, obj: ns, src: { kind: "const", value: 0 } });
|
|
22881
|
+
ctx.emit({ kind: "score_write", player: `${playerName}_active`, obj: ns, src: { kind: "const", value: 0 } });
|
|
22882
|
+
const durationOp = lowerExpr(expr.args[0], ctx, scope);
|
|
22883
|
+
ctx.emit({ kind: "const", dst: "__rf__id", value: id });
|
|
22884
|
+
ctx.constTemps.set("__rf__id", id);
|
|
22885
|
+
ctx.emit({ kind: "copy", dst: "__rf__duration", src: durationOp });
|
|
22886
|
+
const t2 = ctx.freshTemp();
|
|
22887
|
+
ctx.emit({ kind: "const", dst: t2, value: 0 });
|
|
22888
|
+
return { kind: "temp", name: t2 };
|
|
22889
|
+
}
|
|
22174
22890
|
const args = expr.args.map((a) => lowerExpr(a, ctx, scope));
|
|
22175
22891
|
const t = ctx.freshTemp();
|
|
22176
22892
|
ctx.emit({ kind: "call", dst: t, fn: `${expr.type}::${expr.method}`, args });
|
|
@@ -22185,12 +22901,88 @@ var require_lower2 = __commonJS({
|
|
|
22185
22901
|
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
22186
22902
|
return { kind: "temp", name: t };
|
|
22187
22903
|
}
|
|
22904
|
+
case "some_lit": {
|
|
22905
|
+
const valOp = lowerExpr(expr.value, ctx, scope);
|
|
22906
|
+
ctx.emit({ kind: "copy", dst: "__rf_has", src: { kind: "const", value: 1 } });
|
|
22907
|
+
ctx.emit({ kind: "copy", dst: "__rf_val", src: valOp });
|
|
22908
|
+
const t = ctx.freshTemp();
|
|
22909
|
+
ctx.emit({ kind: "const", dst: t, value: 1 });
|
|
22910
|
+
return { kind: "temp", name: t };
|
|
22911
|
+
}
|
|
22912
|
+
case "none_lit": {
|
|
22913
|
+
ctx.emit({ kind: "copy", dst: "__rf_has", src: { kind: "const", value: 0 } });
|
|
22914
|
+
ctx.emit({ kind: "copy", dst: "__rf_val", src: { kind: "const", value: 0 } });
|
|
22915
|
+
const t = ctx.freshTemp();
|
|
22916
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
22917
|
+
return { kind: "temp", name: t };
|
|
22918
|
+
}
|
|
22919
|
+
case "type_cast": {
|
|
22920
|
+
const ns = ctx.getNamespace();
|
|
22921
|
+
const targetName = expr.targetType.kind === "named" ? expr.targetType.name : null;
|
|
22922
|
+
if (targetName === "double") {
|
|
22923
|
+
const innerOp2 = lowerExpr(expr.expr, ctx, scope);
|
|
22924
|
+
const innerTemp = ctx.freshTemp();
|
|
22925
|
+
ctx.emit({ kind: "copy", dst: innerTemp, src: innerOp2 });
|
|
22926
|
+
const path3 = ctx.freshDoubleVar(`cast`);
|
|
22927
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:execute store result storage rs:d ${path3} double 0.0001 run scoreboard players get $${innerTemp} __${ns}`, args: [] });
|
|
22928
|
+
const t2 = ctx.freshTemp();
|
|
22929
|
+
ctx.emit({ kind: "nbt_read", dst: t2, ns: "rs:d", path: path3, scale: 1e4 });
|
|
22930
|
+
ctx.floatTemps.add(t2);
|
|
22931
|
+
return { kind: "temp", name: t2 };
|
|
22932
|
+
}
|
|
22933
|
+
if (targetName === "fixed" || targetName === "float" || targetName === "int") {
|
|
22934
|
+
if (expr.expr.kind === "ident" && ctx.doubleVars.has(expr.expr.name)) {
|
|
22935
|
+
const path3 = ctx.doubleVars.get(expr.expr.name);
|
|
22936
|
+
const t3 = ctx.freshTemp();
|
|
22937
|
+
ctx.emit({ kind: "nbt_read", dst: t3, ns: "rs:d", path: path3, scale: 1e4 });
|
|
22938
|
+
if (targetName === "fixed" || targetName === "float") {
|
|
22939
|
+
ctx.floatTemps.add(t3);
|
|
22940
|
+
}
|
|
22941
|
+
return { kind: "temp", name: t3 };
|
|
22942
|
+
}
|
|
22943
|
+
const innerOp2 = lowerExpr(expr.expr, ctx, scope);
|
|
22944
|
+
const t2 = ctx.freshTemp();
|
|
22945
|
+
ctx.emit({ kind: "copy", dst: t2, src: innerOp2 });
|
|
22946
|
+
if (targetName === "fixed" || targetName === "float") {
|
|
22947
|
+
ctx.floatTemps.add(t2);
|
|
22948
|
+
}
|
|
22949
|
+
return { kind: "temp", name: t2 };
|
|
22950
|
+
}
|
|
22951
|
+
const innerOp = lowerExpr(expr.expr, ctx, scope);
|
|
22952
|
+
const t = ctx.freshTemp();
|
|
22953
|
+
ctx.emit({ kind: "copy", dst: t, src: innerOp });
|
|
22954
|
+
return { kind: "temp", name: t };
|
|
22955
|
+
}
|
|
22188
22956
|
default: {
|
|
22189
22957
|
const _exhaustive = expr;
|
|
22190
22958
|
throw new Error(`Unknown HIR expression kind: ${_exhaustive.kind}`);
|
|
22191
22959
|
}
|
|
22192
22960
|
}
|
|
22193
22961
|
}
|
|
22962
|
+
function isDoubleExpr(expr, ctx) {
|
|
22963
|
+
if (expr.kind === "ident" && ctx.doubleVars.has(expr.name))
|
|
22964
|
+
return true;
|
|
22965
|
+
if (expr.kind === "double_lit")
|
|
22966
|
+
return true;
|
|
22967
|
+
return false;
|
|
22968
|
+
}
|
|
22969
|
+
function lowerDoubleExprToPath(expr, ctx, scope) {
|
|
22970
|
+
if (expr.kind === "ident" && ctx.doubleVars.has(expr.name)) {
|
|
22971
|
+
return ctx.doubleVars.get(expr.name);
|
|
22972
|
+
}
|
|
22973
|
+
if (expr.kind === "double_lit") {
|
|
22974
|
+
const path4 = ctx.freshDoubleVar("dlit");
|
|
22975
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:data modify storage rs:d ${path4} set value ${expr.value}d`, args: [] });
|
|
22976
|
+
return path4;
|
|
22977
|
+
}
|
|
22978
|
+
const op = lowerExpr(expr, ctx, scope);
|
|
22979
|
+
const tmp = ctx.freshTemp();
|
|
22980
|
+
ctx.emit({ kind: "copy", dst: tmp, src: op });
|
|
22981
|
+
const ns = ctx.getNamespace();
|
|
22982
|
+
const path3 = ctx.freshDoubleVar("dtmp");
|
|
22983
|
+
ctx.emit({ kind: "call", dst: null, fn: `__raw:execute store result storage rs:d ${path3} double 0.0001 run scoreboard players get $${tmp} __${ns}`, args: [] });
|
|
22984
|
+
return path3;
|
|
22985
|
+
}
|
|
22194
22986
|
function lowerShortCircuitAnd(expr, ctx, scope) {
|
|
22195
22987
|
const left = lowerExpr(expr.left, ctx, scope);
|
|
22196
22988
|
const result = ctx.freshTemp();
|
|
@@ -22225,6 +23017,80 @@ var require_lower2 = __commonJS({
|
|
|
22225
23017
|
ctx.switchTo(merge);
|
|
22226
23018
|
return { kind: "temp", name: result };
|
|
22227
23019
|
}
|
|
23020
|
+
function lowerTimerMethod(method, timerId, sv, ctx, scope, extraArgs) {
|
|
23021
|
+
const ns = ctx.getNamespace();
|
|
23022
|
+
const player = `__timer_${timerId}`;
|
|
23023
|
+
const t = ctx.freshTemp();
|
|
23024
|
+
if (method === "start") {
|
|
23025
|
+
ctx.emit({ kind: "score_write", player: `${player}_active`, obj: ns, src: { kind: "const", value: 1 } });
|
|
23026
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23027
|
+
} else if (method === "pause") {
|
|
23028
|
+
ctx.emit({ kind: "score_write", player: `${player}_active`, obj: ns, src: { kind: "const", value: 0 } });
|
|
23029
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23030
|
+
} else if (method === "reset") {
|
|
23031
|
+
ctx.emit({ kind: "score_write", player: `${player}_ticks`, obj: ns, src: { kind: "const", value: 0 } });
|
|
23032
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23033
|
+
} else if (method === "tick") {
|
|
23034
|
+
const durationTemp = sv.fields.get("_duration");
|
|
23035
|
+
const activeTemp = ctx.freshTemp();
|
|
23036
|
+
const ticksTemp = ctx.freshTemp();
|
|
23037
|
+
ctx.emit({ kind: "score_read", dst: activeTemp, player: `${player}_active`, obj: ns });
|
|
23038
|
+
ctx.emit({ kind: "score_read", dst: ticksTemp, player: `${player}_ticks`, obj: ns });
|
|
23039
|
+
const innerThen = ctx.newBlock("timer_tick_inner");
|
|
23040
|
+
const innerMerge = ctx.newBlock("timer_tick_after_lt");
|
|
23041
|
+
const outerMerge = ctx.newBlock("timer_tick_done");
|
|
23042
|
+
const activeCheck = ctx.freshTemp();
|
|
23043
|
+
ctx.emit({ kind: "cmp", op: "eq", dst: activeCheck, a: { kind: "temp", name: activeTemp }, b: { kind: "const", value: 1 } });
|
|
23044
|
+
ctx.terminate({ kind: "branch", cond: { kind: "temp", name: activeCheck }, then: innerThen.id, else: outerMerge.id });
|
|
23045
|
+
ctx.switchTo(innerThen);
|
|
23046
|
+
const lessCheck = ctx.freshTemp();
|
|
23047
|
+
if (durationTemp) {
|
|
23048
|
+
ctx.emit({ kind: "cmp", op: "lt", dst: lessCheck, a: { kind: "temp", name: ticksTemp }, b: { kind: "temp", name: durationTemp } });
|
|
23049
|
+
} else {
|
|
23050
|
+
ctx.emit({ kind: "const", dst: lessCheck, value: 0 });
|
|
23051
|
+
}
|
|
23052
|
+
const doIncBlock = ctx.newBlock("timer_tick_inc");
|
|
23053
|
+
ctx.terminate({ kind: "branch", cond: { kind: "temp", name: lessCheck }, then: doIncBlock.id, else: innerMerge.id });
|
|
23054
|
+
ctx.switchTo(doIncBlock);
|
|
23055
|
+
const newTicks = ctx.freshTemp();
|
|
23056
|
+
ctx.emit({ kind: "add", dst: newTicks, a: { kind: "temp", name: ticksTemp }, b: { kind: "const", value: 1 } });
|
|
23057
|
+
ctx.emit({ kind: "score_write", player: `${player}_ticks`, obj: ns, src: { kind: "temp", name: newTicks } });
|
|
23058
|
+
ctx.terminate({ kind: "jump", target: innerMerge.id });
|
|
23059
|
+
ctx.switchTo(innerMerge);
|
|
23060
|
+
ctx.terminate({ kind: "jump", target: outerMerge.id });
|
|
23061
|
+
ctx.switchTo(outerMerge);
|
|
23062
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23063
|
+
} else if (method === "done") {
|
|
23064
|
+
const durationTemp = sv.fields.get("_duration");
|
|
23065
|
+
const ticksTemp = ctx.freshTemp();
|
|
23066
|
+
ctx.emit({ kind: "score_read", dst: ticksTemp, player: `${player}_ticks`, obj: ns });
|
|
23067
|
+
if (durationTemp) {
|
|
23068
|
+
ctx.emit({ kind: "cmp", op: "ge", dst: t, a: { kind: "temp", name: ticksTemp }, b: { kind: "temp", name: durationTemp } });
|
|
23069
|
+
} else {
|
|
23070
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23071
|
+
}
|
|
23072
|
+
} else if (method === "elapsed") {
|
|
23073
|
+
ctx.emit({ kind: "score_read", dst: t, player: `${player}_ticks`, obj: ns });
|
|
23074
|
+
} else if (method === "remaining") {
|
|
23075
|
+
const durationTemp = sv.fields.get("_duration");
|
|
23076
|
+
const ticksTemp = ctx.freshTemp();
|
|
23077
|
+
ctx.emit({ kind: "score_read", dst: ticksTemp, player: `${player}_ticks`, obj: ns });
|
|
23078
|
+
if (durationTemp) {
|
|
23079
|
+
ctx.emit({ kind: "sub", dst: t, a: { kind: "temp", name: durationTemp }, b: { kind: "temp", name: ticksTemp } });
|
|
23080
|
+
} else {
|
|
23081
|
+
ctx.emit({ kind: "const", dst: t, value: 0 });
|
|
23082
|
+
}
|
|
23083
|
+
} else {
|
|
23084
|
+
const fields = ["_id", "_duration"];
|
|
23085
|
+
const selfArgs = fields.map((f) => {
|
|
23086
|
+
const temp = sv.fields.get(f);
|
|
23087
|
+
return temp ? { kind: "temp", name: temp } : { kind: "const", value: 0 };
|
|
23088
|
+
});
|
|
23089
|
+
const explicitArgs = extraArgs.map((a) => lowerExpr(a, ctx, scope));
|
|
23090
|
+
ctx.emit({ kind: "call", dst: t, fn: `Timer::${method}`, args: [...selfArgs, ...explicitArgs] });
|
|
23091
|
+
}
|
|
23092
|
+
return { kind: "temp", name: t };
|
|
23093
|
+
}
|
|
22228
23094
|
function lowerExecuteSubcmd(sub) {
|
|
22229
23095
|
switch (sub.kind) {
|
|
22230
23096
|
case "as":
|
|
@@ -22312,13 +23178,34 @@ var require_lower2 = __commonJS({
|
|
|
22312
23178
|
break;
|
|
22313
23179
|
}
|
|
22314
23180
|
case "setblock": {
|
|
22315
|
-
const [
|
|
22316
|
-
|
|
23181
|
+
const [posOrX, blockOrY] = args;
|
|
23182
|
+
if (posOrX?.kind === "blockpos") {
|
|
23183
|
+
const px = coordStr(posOrX.x);
|
|
23184
|
+
const py = coordStr(posOrX.y);
|
|
23185
|
+
const pz = coordStr(posOrX.z);
|
|
23186
|
+
const blk = exprToCommandArg(blockOrY, macroParams).str;
|
|
23187
|
+
cmd = `setblock ${px} ${py} ${pz} ${blk}`;
|
|
23188
|
+
} else {
|
|
23189
|
+
const [x, y, z, block] = strs;
|
|
23190
|
+
cmd = `setblock ${x} ${y} ${z} ${block}`;
|
|
23191
|
+
}
|
|
22317
23192
|
break;
|
|
22318
23193
|
}
|
|
22319
23194
|
case "fill": {
|
|
22320
|
-
const [
|
|
22321
|
-
|
|
23195
|
+
const [p1, p2, blkArg] = args;
|
|
23196
|
+
if (p1?.kind === "blockpos" && p2?.kind === "blockpos") {
|
|
23197
|
+
const x1 = coordStr(p1.x);
|
|
23198
|
+
const y1 = coordStr(p1.y);
|
|
23199
|
+
const z1 = coordStr(p1.z);
|
|
23200
|
+
const x2 = coordStr(p2.x);
|
|
23201
|
+
const y2 = coordStr(p2.y);
|
|
23202
|
+
const z2 = coordStr(p2.z);
|
|
23203
|
+
const blk = exprToCommandArg(blkArg, macroParams).str;
|
|
23204
|
+
cmd = `fill ${x1} ${y1} ${z1} ${x2} ${y2} ${z2} ${blk}`;
|
|
23205
|
+
} else {
|
|
23206
|
+
const [x1, y1, z1, x2, y2, z2, block] = strs;
|
|
23207
|
+
cmd = `fill ${x1} ${y1} ${z1} ${x2} ${y2} ${z2} ${block}`;
|
|
23208
|
+
}
|
|
22322
23209
|
break;
|
|
22323
23210
|
}
|
|
22324
23211
|
case "say":
|
|
@@ -22401,6 +23288,16 @@ var require_lower2 = __commonJS({
|
|
|
22401
23288
|
}
|
|
22402
23289
|
return hasMacro ? `${MACRO_SENTINEL}${cmd}` : cmd;
|
|
22403
23290
|
}
|
|
23291
|
+
function coordStr(c) {
|
|
23292
|
+
switch (c.kind) {
|
|
23293
|
+
case "absolute":
|
|
23294
|
+
return String(c.value);
|
|
23295
|
+
case "relative":
|
|
23296
|
+
return c.offset === 0 ? "~" : `~${c.offset}`;
|
|
23297
|
+
case "local":
|
|
23298
|
+
return c.offset === 0 ? "^" : `^${c.offset}`;
|
|
23299
|
+
}
|
|
23300
|
+
}
|
|
22404
23301
|
function exprToCommandArg(expr, macroParams) {
|
|
22405
23302
|
switch (expr.kind) {
|
|
22406
23303
|
case "int_lit":
|
|
@@ -22455,6 +23352,20 @@ var require_lower2 = __commonJS({
|
|
|
22455
23352
|
return { str: "~", isMacro: false };
|
|
22456
23353
|
}
|
|
22457
23354
|
}
|
|
23355
|
+
function hirExprToStringLiteral(expr) {
|
|
23356
|
+
switch (expr.kind) {
|
|
23357
|
+
case "str_lit":
|
|
23358
|
+
return expr.value;
|
|
23359
|
+
case "mc_name":
|
|
23360
|
+
return expr.value;
|
|
23361
|
+
case "selector":
|
|
23362
|
+
return expr.raw;
|
|
23363
|
+
case "int_lit":
|
|
23364
|
+
return String(expr.value);
|
|
23365
|
+
default:
|
|
23366
|
+
return "";
|
|
23367
|
+
}
|
|
23368
|
+
}
|
|
22458
23369
|
}
|
|
22459
23370
|
});
|
|
22460
23371
|
|
|
@@ -22464,6 +23375,9 @@ var require_constant_fold = __commonJS({
|
|
|
22464
23375
|
"use strict";
|
|
22465
23376
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
22466
23377
|
exports2.constantFold = constantFold;
|
|
23378
|
+
function int32(n) {
|
|
23379
|
+
return n | 0;
|
|
23380
|
+
}
|
|
22467
23381
|
function constantFold(fn) {
|
|
22468
23382
|
return {
|
|
22469
23383
|
...fn,
|
|
@@ -22485,27 +23399,27 @@ var require_constant_fold = __commonJS({
|
|
|
22485
23399
|
switch (instr.kind) {
|
|
22486
23400
|
case "add":
|
|
22487
23401
|
if (isConst(instr.a) && isConst(instr.b))
|
|
22488
|
-
return { kind: "const", dst: instr.dst, value: instr.a.value + instr.b.value };
|
|
23402
|
+
return { kind: "const", dst: instr.dst, value: int32(instr.a.value + instr.b.value) };
|
|
22489
23403
|
break;
|
|
22490
23404
|
case "sub":
|
|
22491
23405
|
if (isConst(instr.a) && isConst(instr.b))
|
|
22492
|
-
return { kind: "const", dst: instr.dst, value: instr.a.value - instr.b.value };
|
|
23406
|
+
return { kind: "const", dst: instr.dst, value: int32(instr.a.value - instr.b.value) };
|
|
22493
23407
|
break;
|
|
22494
23408
|
case "mul":
|
|
22495
23409
|
if (isConst(instr.a) && isConst(instr.b))
|
|
22496
|
-
return { kind: "const", dst: instr.dst, value: instr.a.value * instr.b.value };
|
|
23410
|
+
return { kind: "const", dst: instr.dst, value: int32(instr.a.value * instr.b.value) };
|
|
22497
23411
|
break;
|
|
22498
23412
|
case "div":
|
|
22499
23413
|
if (isConst(instr.a) && isConst(instr.b) && instr.b.value !== 0)
|
|
22500
|
-
return { kind: "const", dst: instr.dst, value: Math.trunc(instr.a.value / instr.b.value) };
|
|
23414
|
+
return { kind: "const", dst: instr.dst, value: int32(Math.trunc(instr.a.value / instr.b.value)) };
|
|
22501
23415
|
break;
|
|
22502
23416
|
case "mod":
|
|
22503
23417
|
if (isConst(instr.a) && isConst(instr.b) && instr.b.value !== 0)
|
|
22504
|
-
return { kind: "const", dst: instr.dst, value: instr.a.value % instr.b.value };
|
|
23418
|
+
return { kind: "const", dst: instr.dst, value: int32(instr.a.value % instr.b.value) };
|
|
22505
23419
|
break;
|
|
22506
23420
|
case "neg":
|
|
22507
23421
|
if (isConst(instr.src))
|
|
22508
|
-
return { kind: "const", dst: instr.dst, value: -instr.src.value };
|
|
23422
|
+
return { kind: "const", dst: instr.dst, value: int32(-instr.src.value) };
|
|
22509
23423
|
break;
|
|
22510
23424
|
case "not":
|
|
22511
23425
|
if (isConst(instr.src))
|
|
@@ -22610,6 +23524,10 @@ var require_copy_prop = __commonJS({
|
|
|
22610
23524
|
return { ...instr, a: resolve(instr.a, copies), b: resolve(instr.b, copies) };
|
|
22611
23525
|
case "nbt_write":
|
|
22612
23526
|
return { ...instr, src: resolve(instr.src, copies) };
|
|
23527
|
+
case "nbt_write_dynamic":
|
|
23528
|
+
return { ...instr, indexSrc: resolve(instr.indexSrc, copies), valueSrc: resolve(instr.valueSrc, copies) };
|
|
23529
|
+
case "nbt_read_dynamic":
|
|
23530
|
+
return { ...instr, indexSrc: resolve(instr.indexSrc, copies) };
|
|
22613
23531
|
case "call":
|
|
22614
23532
|
return { ...instr, args: instr.args.map((a) => resolve(a, copies)) };
|
|
22615
23533
|
case "call_macro":
|
|
@@ -22618,6 +23536,8 @@ var require_copy_prop = __commonJS({
|
|
|
22618
23536
|
return { ...instr, cond: resolve(instr.cond, copies) };
|
|
22619
23537
|
case "return":
|
|
22620
23538
|
return { ...instr, value: instr.value ? resolve(instr.value, copies) : null };
|
|
23539
|
+
case "score_write":
|
|
23540
|
+
return { ...instr, src: resolve(instr.src, copies) };
|
|
22621
23541
|
default:
|
|
22622
23542
|
return instr;
|
|
22623
23543
|
}
|
|
@@ -22637,10 +23557,13 @@ var require_copy_prop = __commonJS({
|
|
|
22637
23557
|
case "or":
|
|
22638
23558
|
case "not":
|
|
22639
23559
|
case "nbt_read":
|
|
23560
|
+
case "nbt_read_dynamic":
|
|
22640
23561
|
return instr.dst;
|
|
22641
23562
|
case "call":
|
|
22642
23563
|
case "call_macro":
|
|
22643
23564
|
return instr.dst;
|
|
23565
|
+
case "score_read":
|
|
23566
|
+
return instr.dst;
|
|
22644
23567
|
default:
|
|
22645
23568
|
return null;
|
|
22646
23569
|
}
|
|
@@ -22715,10 +23638,10 @@ var require_dce = __commonJS({
|
|
|
22715
23638
|
return blocks.map((b) => ({ ...b, preds: predMap.get(b.id) ?? [] }));
|
|
22716
23639
|
}
|
|
22717
23640
|
function hasSideEffects(instr) {
|
|
22718
|
-
if (instr.kind === "call" || instr.kind === "call_macro" || instr.kind === "call_context" || instr.kind === "nbt_write")
|
|
23641
|
+
if (instr.kind === "call" || instr.kind === "call_macro" || instr.kind === "call_context" || instr.kind === "nbt_write" || instr.kind === "nbt_write_dynamic" || instr.kind === "score_write")
|
|
22719
23642
|
return true;
|
|
22720
23643
|
const dst = getDst(instr);
|
|
22721
|
-
if (dst && dst.startsWith("__rf_"))
|
|
23644
|
+
if (dst && (dst.startsWith("__rf_") || dst.startsWith("__opt_")))
|
|
22722
23645
|
return true;
|
|
22723
23646
|
return false;
|
|
22724
23647
|
}
|
|
@@ -22747,10 +23670,13 @@ var require_dce = __commonJS({
|
|
|
22747
23670
|
case "or":
|
|
22748
23671
|
case "not":
|
|
22749
23672
|
case "nbt_read":
|
|
23673
|
+
case "nbt_read_dynamic":
|
|
22750
23674
|
return instr.dst;
|
|
22751
23675
|
case "call":
|
|
22752
23676
|
case "call_macro":
|
|
22753
23677
|
return instr.dst;
|
|
23678
|
+
case "score_read":
|
|
23679
|
+
return instr.dst;
|
|
22754
23680
|
default:
|
|
22755
23681
|
return null;
|
|
22756
23682
|
}
|
|
@@ -22781,6 +23707,13 @@ var require_dce = __commonJS({
|
|
|
22781
23707
|
case "nbt_write":
|
|
22782
23708
|
addOp(instr.src);
|
|
22783
23709
|
break;
|
|
23710
|
+
case "nbt_write_dynamic":
|
|
23711
|
+
addOp(instr.indexSrc);
|
|
23712
|
+
addOp(instr.valueSrc);
|
|
23713
|
+
break;
|
|
23714
|
+
case "nbt_read_dynamic":
|
|
23715
|
+
addOp(instr.indexSrc);
|
|
23716
|
+
break;
|
|
22784
23717
|
case "call":
|
|
22785
23718
|
instr.args.forEach(addOp);
|
|
22786
23719
|
break;
|
|
@@ -22794,6 +23727,9 @@ var require_dce = __commonJS({
|
|
|
22794
23727
|
if (instr.value)
|
|
22795
23728
|
addOp(instr.value);
|
|
22796
23729
|
break;
|
|
23730
|
+
case "score_write":
|
|
23731
|
+
addOp(instr.src);
|
|
23732
|
+
break;
|
|
22797
23733
|
}
|
|
22798
23734
|
return temps;
|
|
22799
23735
|
}
|
|
@@ -23103,6 +24039,8 @@ var require_unroll = __commonJS({
|
|
|
23103
24039
|
return { ...instr, a: substituteOp(instr.a, sub), b: substituteOp(instr.b, sub) };
|
|
23104
24040
|
case "nbt_write":
|
|
23105
24041
|
return { ...instr, src: substituteOp(instr.src, sub) };
|
|
24042
|
+
case "nbt_write_dynamic":
|
|
24043
|
+
return { ...instr, indexSrc: substituteOp(instr.indexSrc, sub), valueSrc: substituteOp(instr.valueSrc, sub) };
|
|
23106
24044
|
case "call":
|
|
23107
24045
|
return { ...instr, args: instr.args.map((a) => substituteOp(a, sub)) };
|
|
23108
24046
|
case "call_macro":
|
|
@@ -23130,6 +24068,7 @@ var require_unroll = __commonJS({
|
|
|
23130
24068
|
case "or":
|
|
23131
24069
|
case "not":
|
|
23132
24070
|
case "nbt_read":
|
|
24071
|
+
case "nbt_read_dynamic":
|
|
23133
24072
|
return instr.dst;
|
|
23134
24073
|
case "call":
|
|
23135
24074
|
case "call_macro":
|
|
@@ -23526,6 +24465,8 @@ var require_lower3 = __commonJS({
|
|
|
23526
24465
|
this.blockFnNames = /* @__PURE__ */ new Map();
|
|
23527
24466
|
this.currentMIRFn = null;
|
|
23528
24467
|
this.blockMap = /* @__PURE__ */ new Map();
|
|
24468
|
+
this.dynIdxHelpers = /* @__PURE__ */ new Map();
|
|
24469
|
+
this.dynWrtHelpers = /* @__PURE__ */ new Map();
|
|
23529
24470
|
this.namespace = namespace;
|
|
23530
24471
|
this.objective = objective;
|
|
23531
24472
|
}
|
|
@@ -23544,6 +24485,62 @@ var require_lower3 = __commonJS({
|
|
|
23544
24485
|
addFunction(fn) {
|
|
23545
24486
|
this.functions.push(fn);
|
|
23546
24487
|
}
|
|
24488
|
+
/**
|
|
24489
|
+
* Get or create a macro helper function for dynamic array index reads.
|
|
24490
|
+
* The helper function is: $return run data get storage <ns> <pathPrefix>[$(arr_idx)] 1
|
|
24491
|
+
* Returns the qualified MC function name (namespace:fnName).
|
|
24492
|
+
*/
|
|
24493
|
+
getDynIdxHelper(ns, pathPrefix) {
|
|
24494
|
+
const key = `${ns}\0${pathPrefix}`;
|
|
24495
|
+
const existing = this.dynIdxHelpers.get(key);
|
|
24496
|
+
if (existing)
|
|
24497
|
+
return existing;
|
|
24498
|
+
const sanitize = (s) => s.replace(/[^a-z0-9_]/gi, "_").toLowerCase();
|
|
24499
|
+
const nsStr = sanitize(ns);
|
|
24500
|
+
const prefixStr = sanitize(pathPrefix);
|
|
24501
|
+
const helperName = `__dyn_idx_${nsStr}_${prefixStr}`;
|
|
24502
|
+
const qualifiedName = `${this.namespace}:${helperName}`;
|
|
24503
|
+
const macroLine = {
|
|
24504
|
+
kind: "macro_line",
|
|
24505
|
+
template: `return run data get storage ${ns} ${pathPrefix}[$(arr_idx)] 1`
|
|
24506
|
+
};
|
|
24507
|
+
this.addFunction({
|
|
24508
|
+
name: helperName,
|
|
24509
|
+
instructions: [macroLine],
|
|
24510
|
+
isMacro: true,
|
|
24511
|
+
macroParams: ["arr_idx"]
|
|
24512
|
+
});
|
|
24513
|
+
this.dynIdxHelpers.set(key, qualifiedName);
|
|
24514
|
+
return qualifiedName;
|
|
24515
|
+
}
|
|
24516
|
+
/**
|
|
24517
|
+
* Get or create a macro helper function for dynamic array index writes.
|
|
24518
|
+
* The helper function: $data modify storage <ns> <pathPrefix>[$(arr_idx)] set value $(arr_val)
|
|
24519
|
+
* Returns the qualified MC function name.
|
|
24520
|
+
*/
|
|
24521
|
+
getDynWrtHelper(ns, pathPrefix) {
|
|
24522
|
+
const key = `${ns}\0${pathPrefix}`;
|
|
24523
|
+
const existing = this.dynWrtHelpers.get(key);
|
|
24524
|
+
if (existing)
|
|
24525
|
+
return existing;
|
|
24526
|
+
const sanitize = (s) => s.replace(/[^a-z0-9_]/gi, "_").toLowerCase();
|
|
24527
|
+
const nsStr = sanitize(ns);
|
|
24528
|
+
const prefixStr = sanitize(pathPrefix);
|
|
24529
|
+
const helperName = `__dyn_wrt_${nsStr}_${prefixStr}`;
|
|
24530
|
+
const qualifiedName = `${this.namespace}:${helperName}`;
|
|
24531
|
+
const macroLine = {
|
|
24532
|
+
kind: "macro_line",
|
|
24533
|
+
template: `data modify storage ${ns} ${pathPrefix}[$(arr_idx)] set value $(arr_val)`
|
|
24534
|
+
};
|
|
24535
|
+
this.addFunction({
|
|
24536
|
+
name: helperName,
|
|
24537
|
+
instructions: [macroLine],
|
|
24538
|
+
isMacro: true,
|
|
24539
|
+
macroParams: ["arr_idx", "arr_val"]
|
|
24540
|
+
});
|
|
24541
|
+
this.dynWrtHelpers.set(key, qualifiedName);
|
|
24542
|
+
return qualifiedName;
|
|
24543
|
+
}
|
|
23547
24544
|
/** Attach sourceLoc to newly added instructions (from the given start index onward) */
|
|
23548
24545
|
tagSourceLoc(instrs, fromIndex, sourceLoc) {
|
|
23549
24546
|
if (!sourceLoc)
|
|
@@ -23725,6 +24722,27 @@ var require_lower3 = __commonJS({
|
|
|
23725
24722
|
});
|
|
23726
24723
|
break;
|
|
23727
24724
|
}
|
|
24725
|
+
case "nbt_read_dynamic": {
|
|
24726
|
+
const dst = ctx.slot(instr.dst);
|
|
24727
|
+
const idxSlot = operandToSlot(instr.indexSrc, ctx, instrs);
|
|
24728
|
+
instrs.push({
|
|
24729
|
+
kind: "store_score_to_nbt",
|
|
24730
|
+
ns: "rs:macro_args",
|
|
24731
|
+
path: "arr_idx",
|
|
24732
|
+
type: "int",
|
|
24733
|
+
scale: 1,
|
|
24734
|
+
src: idxSlot
|
|
24735
|
+
});
|
|
24736
|
+
const helperFn = ctx.getDynIdxHelper(instr.ns, instr.pathPrefix);
|
|
24737
|
+
instrs.push({ kind: "call_macro", fn: helperFn, storage: "rs:macro_args" });
|
|
24738
|
+
instrs.pop();
|
|
24739
|
+
instrs.push({
|
|
24740
|
+
kind: "store_cmd_to_score",
|
|
24741
|
+
dst,
|
|
24742
|
+
cmd: { kind: "call_macro", fn: helperFn, storage: "rs:macro_args" }
|
|
24743
|
+
});
|
|
24744
|
+
break;
|
|
24745
|
+
}
|
|
23728
24746
|
case "nbt_write": {
|
|
23729
24747
|
const srcSlot = operandToSlot(instr.src, ctx, instrs);
|
|
23730
24748
|
instrs.push({
|
|
@@ -23737,6 +24755,51 @@ var require_lower3 = __commonJS({
|
|
|
23737
24755
|
});
|
|
23738
24756
|
break;
|
|
23739
24757
|
}
|
|
24758
|
+
case "nbt_write_dynamic": {
|
|
24759
|
+
const idxSlot = operandToSlot(instr.indexSrc, ctx, instrs);
|
|
24760
|
+
const valSlot = operandToSlot(instr.valueSrc, ctx, instrs);
|
|
24761
|
+
instrs.push({
|
|
24762
|
+
kind: "store_score_to_nbt",
|
|
24763
|
+
ns: "rs:macro_args",
|
|
24764
|
+
path: "arr_idx",
|
|
24765
|
+
type: "int",
|
|
24766
|
+
scale: 1,
|
|
24767
|
+
src: idxSlot
|
|
24768
|
+
});
|
|
24769
|
+
instrs.push({
|
|
24770
|
+
kind: "store_score_to_nbt",
|
|
24771
|
+
ns: "rs:macro_args",
|
|
24772
|
+
path: "arr_val",
|
|
24773
|
+
type: "int",
|
|
24774
|
+
scale: 1,
|
|
24775
|
+
src: valSlot
|
|
24776
|
+
});
|
|
24777
|
+
const helperFn = ctx.getDynWrtHelper(instr.ns, instr.pathPrefix);
|
|
24778
|
+
instrs.push({ kind: "call_macro", fn: helperFn, storage: "rs:macro_args" });
|
|
24779
|
+
break;
|
|
24780
|
+
}
|
|
24781
|
+
case "score_read": {
|
|
24782
|
+
const dst = ctx.slot(instr.dst);
|
|
24783
|
+
instrs.push({
|
|
24784
|
+
kind: "store_cmd_to_score",
|
|
24785
|
+
dst,
|
|
24786
|
+
cmd: { kind: "raw", cmd: `scoreboard players get ${instr.player} ${instr.obj}` }
|
|
24787
|
+
});
|
|
24788
|
+
break;
|
|
24789
|
+
}
|
|
24790
|
+
case "score_write": {
|
|
24791
|
+
if (instr.src.kind === "const") {
|
|
24792
|
+
instrs.push({ kind: "raw", cmd: `scoreboard players set ${instr.player} ${instr.obj} ${instr.src.value}` });
|
|
24793
|
+
} else {
|
|
24794
|
+
const srcSlot = operandToSlot(instr.src, ctx, instrs);
|
|
24795
|
+
instrs.push({
|
|
24796
|
+
kind: "store_cmd_to_score",
|
|
24797
|
+
dst: { player: instr.player, obj: instr.obj },
|
|
24798
|
+
cmd: { kind: "raw", cmd: `scoreboard players get ${srcSlot.player} ${srcSlot.obj}` }
|
|
24799
|
+
});
|
|
24800
|
+
}
|
|
24801
|
+
break;
|
|
24802
|
+
}
|
|
23740
24803
|
case "call": {
|
|
23741
24804
|
for (let i = 0; i < instr.args.length; i++) {
|
|
23742
24805
|
const paramSlot = { player: `$p${i}`, obj: ctx.objective };
|
|
@@ -23913,7 +24976,7 @@ var require_dead_slot = __commonJS({
|
|
|
23913
24976
|
}
|
|
23914
24977
|
function extractSlotsFromRaw(cmd) {
|
|
23915
24978
|
const slots = [];
|
|
23916
|
-
const re = /(\$[\w
|
|
24979
|
+
const re = /(\$[\w.:]+)\s+(\S+)/g;
|
|
23917
24980
|
let m;
|
|
23918
24981
|
while ((m = re.exec(cmd)) !== null) {
|
|
23919
24982
|
slots.push({ player: m[1], obj: m[2] });
|
|
@@ -23968,7 +25031,11 @@ var require_dead_slot = __commonJS({
|
|
|
23968
25031
|
}
|
|
23969
25032
|
function isProtectedSlot(s) {
|
|
23970
25033
|
const p = s.player;
|
|
23971
|
-
|
|
25034
|
+
if (p === "$ret" || p.startsWith("$ret_") || /^\$p\d+$/.test(p))
|
|
25035
|
+
return true;
|
|
25036
|
+
if (p.includes("__opt_"))
|
|
25037
|
+
return true;
|
|
25038
|
+
return false;
|
|
23972
25039
|
}
|
|
23973
25040
|
function deadSlotElim(fn) {
|
|
23974
25041
|
const readSet = /* @__PURE__ */ new Set();
|
|
@@ -24030,7 +25097,7 @@ var require_const_imm = __commonJS({
|
|
|
24030
25097
|
}
|
|
24031
25098
|
function extractSlotsFromRaw(cmd) {
|
|
24032
25099
|
const slots = [];
|
|
24033
|
-
const re = /(\$[\w
|
|
25100
|
+
const re = /(\$[\w.:]+)\s+(\S+)/g;
|
|
24034
25101
|
let m;
|
|
24035
25102
|
while ((m = re.exec(cmd)) !== null) {
|
|
24036
25103
|
slots.push({ player: m[1], obj: m[2] });
|
|
@@ -24142,6 +25209,7 @@ var require_peephole = __commonJS({
|
|
|
24142
25209
|
"use strict";
|
|
24143
25210
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
24144
25211
|
exports2.execStorePeephole = execStorePeephole;
|
|
25212
|
+
var SET_ZERO_SET_ONE_RE = /^execute (.+) run scoreboard players set (\S+) (\S+) 1$/;
|
|
24145
25213
|
function execStorePeephole(fn) {
|
|
24146
25214
|
const instrs = fn.instructions;
|
|
24147
25215
|
if (instrs.length < 2)
|
|
@@ -24162,6 +25230,19 @@ var require_peephole = __commonJS({
|
|
|
24162
25230
|
i += 2;
|
|
24163
25231
|
continue;
|
|
24164
25232
|
}
|
|
25233
|
+
if (next && curr.kind === "score_set" && curr.value === 0 && next.kind === "raw") {
|
|
25234
|
+
const m = SET_ZERO_SET_ONE_RE.exec(next.cmd);
|
|
25235
|
+
if (m && m[2] === curr.dst.player && m[3] === curr.dst.obj) {
|
|
25236
|
+
const cond = m[1];
|
|
25237
|
+
result.push({
|
|
25238
|
+
kind: "raw",
|
|
25239
|
+
cmd: `execute store success score ${curr.dst.player} ${curr.dst.obj} ${cond}`
|
|
25240
|
+
});
|
|
25241
|
+
changed = true;
|
|
25242
|
+
i += 2;
|
|
25243
|
+
continue;
|
|
25244
|
+
}
|
|
25245
|
+
}
|
|
24165
25246
|
result.push(curr);
|
|
24166
25247
|
i++;
|
|
24167
25248
|
}
|
|
@@ -24256,6 +25337,47 @@ var require_sourcemap = __commonJS({
|
|
|
24256
25337
|
}
|
|
24257
25338
|
});
|
|
24258
25339
|
|
|
25340
|
+
// ../../dist/src/types/mc-version.js
|
|
25341
|
+
var require_mc_version = __commonJS({
|
|
25342
|
+
"../../dist/src/types/mc-version.js"(exports2) {
|
|
25343
|
+
"use strict";
|
|
25344
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
25345
|
+
exports2.DEFAULT_MC_VERSION = exports2.McVersion = void 0;
|
|
25346
|
+
exports2.parseMcVersion = parseMcVersion;
|
|
25347
|
+
exports2.compareMcVersion = compareMcVersion;
|
|
25348
|
+
var McVersion;
|
|
25349
|
+
(function(McVersion2) {
|
|
25350
|
+
McVersion2[McVersion2["v1_19"] = 19e3] = "v1_19";
|
|
25351
|
+
McVersion2[McVersion2["v1_20"] = 2e4] = "v1_20";
|
|
25352
|
+
McVersion2[McVersion2["v1_20_2"] = 20002] = "v1_20_2";
|
|
25353
|
+
McVersion2[McVersion2["v1_20_4"] = 20004] = "v1_20_4";
|
|
25354
|
+
McVersion2[McVersion2["v1_21"] = 21e3] = "v1_21";
|
|
25355
|
+
McVersion2[McVersion2["v1_21_4"] = 21004] = "v1_21_4";
|
|
25356
|
+
})(McVersion || (exports2.McVersion = McVersion = {}));
|
|
25357
|
+
function parseMcVersion(s) {
|
|
25358
|
+
const parts = s.trim().split(".");
|
|
25359
|
+
if (parts.length < 2 || parts.length > 3) {
|
|
25360
|
+
throw new Error(`Invalid MC version: "${s}" \u2014 expected format "1.20" or "1.20.2"`);
|
|
25361
|
+
}
|
|
25362
|
+
const [majorStr, minorStr, patchStr = "0"] = parts;
|
|
25363
|
+
const major = parseInt(majorStr, 10);
|
|
25364
|
+
const minor = parseInt(minorStr, 10);
|
|
25365
|
+
const patch = parseInt(patchStr, 10);
|
|
25366
|
+
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
25367
|
+
throw new Error(`Invalid MC version: "${s}" \u2014 non-numeric component`);
|
|
25368
|
+
}
|
|
25369
|
+
if (major !== 1) {
|
|
25370
|
+
throw new Error(`Invalid MC version: "${s}" \u2014 only Minecraft 1.x is supported`);
|
|
25371
|
+
}
|
|
25372
|
+
return minor * 1e3 + patch;
|
|
25373
|
+
}
|
|
25374
|
+
function compareMcVersion(a, b) {
|
|
25375
|
+
return a - b;
|
|
25376
|
+
}
|
|
25377
|
+
exports2.DEFAULT_MC_VERSION = McVersion.v1_21;
|
|
25378
|
+
}
|
|
25379
|
+
});
|
|
25380
|
+
|
|
24259
25381
|
// ../../dist/src/emit/index.js
|
|
24260
25382
|
var require_emit = __commonJS({
|
|
24261
25383
|
"../../dist/src/emit/index.js"(exports2) {
|
|
@@ -24263,12 +25385,15 @@ var require_emit = __commonJS({
|
|
|
24263
25385
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
24264
25386
|
exports2.emit = emit;
|
|
24265
25387
|
var sourcemap_1 = require_sourcemap();
|
|
25388
|
+
var mc_version_1 = require_mc_version();
|
|
24266
25389
|
function emit(module3, options) {
|
|
24267
25390
|
const { namespace } = options;
|
|
24268
25391
|
const tickFns = options.tickFunctions ?? [];
|
|
24269
25392
|
const loadFns = options.loadFunctions ?? [];
|
|
25393
|
+
const scheduleFns = options.scheduleFunctions ?? [];
|
|
24270
25394
|
const objective = module3.objective;
|
|
24271
25395
|
const genSourceMap = options.generateSourceMap ?? false;
|
|
25396
|
+
const mcVersion = options.mcVersion ?? mc_version_1.DEFAULT_MC_VERSION;
|
|
24272
25397
|
const files = [];
|
|
24273
25398
|
files.push({
|
|
24274
25399
|
path: "pack.mcmeta",
|
|
@@ -24285,17 +25410,24 @@ var require_emit = __commonJS({
|
|
|
24285
25410
|
const fnPath = fnNameToPath(fn.name, namespace);
|
|
24286
25411
|
if (genSourceMap) {
|
|
24287
25412
|
const builder = new sourcemap_1.SourceMapBuilder(fnPath);
|
|
24288
|
-
const lines = emitFunctionWithSourceMap(fn, namespace, objective, builder);
|
|
25413
|
+
const lines = emitFunctionWithSourceMap(fn, namespace, objective, builder, mcVersion);
|
|
24289
25414
|
files.push({ path: fnPath, content: lines.join("\n") + "\n" });
|
|
24290
25415
|
const map = builder.build();
|
|
24291
25416
|
if (map) {
|
|
24292
25417
|
files.push({ path: (0, sourcemap_1.sourceMapPath)(fnPath), content: (0, sourcemap_1.serializeSourceMap)(map) });
|
|
24293
25418
|
}
|
|
24294
25419
|
} else {
|
|
24295
|
-
const lines = emitFunction(fn, namespace, objective);
|
|
25420
|
+
const lines = emitFunction(fn, namespace, objective, mcVersion);
|
|
24296
25421
|
files.push({ path: fnPath, content: lines.join("\n") + "\n" });
|
|
24297
25422
|
}
|
|
24298
25423
|
}
|
|
25424
|
+
for (const { name, ticks } of scheduleFns) {
|
|
25425
|
+
files.push({
|
|
25426
|
+
path: `data/${namespace}/function/_schedule_${name}.mcfunction`,
|
|
25427
|
+
content: `schedule function ${namespace}:${name} ${ticks}t
|
|
25428
|
+
`
|
|
25429
|
+
});
|
|
25430
|
+
}
|
|
24299
25431
|
if (loadFns.length > 0 || true) {
|
|
24300
25432
|
const loadValues = [`${namespace}:load`, ...loadFns.map((fn) => `${namespace}:${fn}`)];
|
|
24301
25433
|
files.push({
|
|
@@ -24312,17 +25444,17 @@ var require_emit = __commonJS({
|
|
|
24312
25444
|
}
|
|
24313
25445
|
return files;
|
|
24314
25446
|
}
|
|
24315
|
-
function emitFunction(fn, namespace, objective) {
|
|
25447
|
+
function emitFunction(fn, namespace, objective, mcVersion) {
|
|
24316
25448
|
const lines = [];
|
|
24317
25449
|
for (const instr of fn.instructions) {
|
|
24318
|
-
lines.push(emitInstr(instr, namespace, objective));
|
|
25450
|
+
lines.push(emitInstr(instr, namespace, objective, mcVersion));
|
|
24319
25451
|
}
|
|
24320
25452
|
return lines;
|
|
24321
25453
|
}
|
|
24322
|
-
function emitFunctionWithSourceMap(fn, namespace, objective, builder) {
|
|
25454
|
+
function emitFunctionWithSourceMap(fn, namespace, objective, builder, mcVersion) {
|
|
24323
25455
|
const lines = [];
|
|
24324
25456
|
for (const instr of fn.instructions) {
|
|
24325
|
-
lines.push(emitInstr(instr, namespace, objective));
|
|
25457
|
+
lines.push(emitInstr(instr, namespace, objective, mcVersion));
|
|
24326
25458
|
builder.addLine(instr.sourceLoc);
|
|
24327
25459
|
}
|
|
24328
25460
|
return lines;
|
|
@@ -24331,7 +25463,7 @@ var require_emit = __commonJS({
|
|
|
24331
25463
|
const mcName = name.replace(/::/g, "/").toLowerCase();
|
|
24332
25464
|
return `data/${namespace}/function/${mcName}.mcfunction`;
|
|
24333
25465
|
}
|
|
24334
|
-
function emitInstr(instr, ns, obj) {
|
|
25466
|
+
function emitInstr(instr, ns, obj, mcVersion) {
|
|
24335
25467
|
switch (instr.kind) {
|
|
24336
25468
|
case "score_set":
|
|
24337
25469
|
return `scoreboard players set ${slot(instr.dst)} ${instr.value}`;
|
|
@@ -24354,11 +25486,11 @@ var require_emit = __commonJS({
|
|
|
24354
25486
|
case "score_swap":
|
|
24355
25487
|
return `scoreboard players operation ${slot(instr.a)} >< ${slot(instr.b)}`;
|
|
24356
25488
|
case "store_cmd_to_score":
|
|
24357
|
-
return `execute store result score ${slot(instr.dst)} run ${emitInstr(instr.cmd, ns, obj)}`;
|
|
25489
|
+
return `execute store result score ${slot(instr.dst)} run ${emitInstr(instr.cmd, ns, obj, mcVersion)}`;
|
|
24358
25490
|
case "store_score_to_nbt":
|
|
24359
25491
|
return `execute store result storage ${instr.ns} ${instr.path} ${instr.type} ${instr.scale} run scoreboard players get ${slot(instr.src)}`;
|
|
24360
25492
|
case "store_nbt_to_score":
|
|
24361
|
-
return `execute store result score ${slot(instr.dst)} run data get storage ${instr.ns} ${instr.path} ${instr.scale}`;
|
|
25493
|
+
return `execute store result score ${slot(instr.dst)} run data get storage ${instr.ns} ${instr.path} ${Number.isInteger(instr.scale) ? instr.scale.toFixed(1) : instr.scale}`;
|
|
24362
25494
|
case "nbt_set_literal":
|
|
24363
25495
|
return `data modify storage ${instr.ns} ${instr.path} set value ${instr.value}`;
|
|
24364
25496
|
case "nbt_copy":
|
|
@@ -24366,7 +25498,10 @@ var require_emit = __commonJS({
|
|
|
24366
25498
|
case "call":
|
|
24367
25499
|
return `function ${instr.fn}`;
|
|
24368
25500
|
case "call_macro":
|
|
24369
|
-
|
|
25501
|
+
if (mcVersion >= mc_version_1.McVersion.v1_20_2) {
|
|
25502
|
+
return `function ${instr.fn} with storage ${instr.storage}`;
|
|
25503
|
+
}
|
|
25504
|
+
return `function ${instr.fn}`;
|
|
24370
25505
|
case "call_if_matches":
|
|
24371
25506
|
return `execute if score ${slot(instr.slot)} matches ${instr.range} run function ${instr.fn}`;
|
|
24372
25507
|
case "call_unless_matches":
|
|
@@ -24377,12 +25512,15 @@ var require_emit = __commonJS({
|
|
|
24377
25512
|
return `execute unless score ${slot(instr.a)} ${cmpToMC(instr.op)} ${slot(instr.b)} run function ${instr.fn}`;
|
|
24378
25513
|
case "call_context": {
|
|
24379
25514
|
const subcmds = instr.subcommands.map(emitSubcmd).join(" ");
|
|
24380
|
-
return `execute ${subcmds} run function ${instr.fn}`;
|
|
25515
|
+
return subcmds ? `execute ${subcmds} run function ${instr.fn}` : `function ${instr.fn}`;
|
|
24381
25516
|
}
|
|
24382
25517
|
case "return_value":
|
|
24383
25518
|
return `scoreboard players operation $ret ${instr.slot.obj} = ${slot(instr.slot)}`;
|
|
24384
25519
|
case "macro_line":
|
|
24385
|
-
|
|
25520
|
+
if (mcVersion >= mc_version_1.McVersion.v1_20_2) {
|
|
25521
|
+
return `$${instr.template}`;
|
|
25522
|
+
}
|
|
25523
|
+
return macroLineCompat(instr.template);
|
|
24386
25524
|
case "raw":
|
|
24387
25525
|
return instr.cmd;
|
|
24388
25526
|
}
|
|
@@ -24407,6 +25545,9 @@ var require_emit = __commonJS({
|
|
|
24407
25545
|
return ">=";
|
|
24408
25546
|
}
|
|
24409
25547
|
}
|
|
25548
|
+
function macroLineCompat(template) {
|
|
25549
|
+
return template.replace(/\$\((\w+)\)/g, (_m, p) => `{storage:rs:macro_args,path:${p}}`);
|
|
25550
|
+
}
|
|
24410
25551
|
function emitSubcmd(sub) {
|
|
24411
25552
|
switch (sub.kind) {
|
|
24412
25553
|
case "as":
|
|
@@ -24444,16 +25585,22 @@ var require_coroutine = __commonJS({
|
|
|
24444
25585
|
exports2.coroutineTransform = coroutineTransform;
|
|
24445
25586
|
function coroutineTransform(mod, infos) {
|
|
24446
25587
|
if (infos.length === 0)
|
|
24447
|
-
return { module: mod, generatedTickFunctions: [] };
|
|
25588
|
+
return { module: mod, generatedTickFunctions: [], warnings: [] };
|
|
24448
25589
|
const infoMap = new Map(infos.map((i) => [i.fnName, i]));
|
|
24449
25590
|
const newFunctions = [];
|
|
24450
25591
|
const tickFns = [];
|
|
25592
|
+
const warnings = [];
|
|
24451
25593
|
for (const fn of mod.functions) {
|
|
24452
25594
|
const info = infoMap.get(fn.name);
|
|
24453
25595
|
if (!info) {
|
|
24454
25596
|
newFunctions.push(fn);
|
|
24455
25597
|
continue;
|
|
24456
25598
|
}
|
|
25599
|
+
if (fnContainsMacroCalls(fn)) {
|
|
25600
|
+
warnings.push(`@coroutine cannot be applied to functions containing macro calls (skipped: ${fn.name})`);
|
|
25601
|
+
newFunctions.push(fn);
|
|
25602
|
+
continue;
|
|
25603
|
+
}
|
|
24457
25604
|
const transformed = transformCoroutine(fn, info, mod.objective);
|
|
24458
25605
|
newFunctions.push(transformed.initFn);
|
|
24459
25606
|
newFunctions.push(...transformed.continuations);
|
|
@@ -24462,9 +25609,24 @@ var require_coroutine = __commonJS({
|
|
|
24462
25609
|
}
|
|
24463
25610
|
return {
|
|
24464
25611
|
module: { ...mod, functions: newFunctions },
|
|
24465
|
-
generatedTickFunctions: tickFns
|
|
25612
|
+
generatedTickFunctions: tickFns,
|
|
25613
|
+
warnings
|
|
24466
25614
|
};
|
|
24467
25615
|
}
|
|
25616
|
+
function fnContainsMacroCalls(fn) {
|
|
25617
|
+
for (const block of fn.blocks) {
|
|
25618
|
+
for (const instr of [...block.instrs, block.term]) {
|
|
25619
|
+
if (instr.kind === "call_macro")
|
|
25620
|
+
return true;
|
|
25621
|
+
if (instr.kind === "call" && instr.fn.startsWith("__raw:")) {
|
|
25622
|
+
const cmd = instr.fn.slice(6);
|
|
25623
|
+
if (cmd.startsWith("") || cmd.includes("${"))
|
|
25624
|
+
return true;
|
|
25625
|
+
}
|
|
25626
|
+
}
|
|
25627
|
+
}
|
|
25628
|
+
return false;
|
|
25629
|
+
}
|
|
24468
25630
|
function transformCoroutine(fn, info, objective) {
|
|
24469
25631
|
const prefix = `_coro_${fn.name}`;
|
|
24470
25632
|
const pcTemp = `${prefix}_pc`;
|
|
@@ -24983,8 +26145,12 @@ var require_coroutine = __commonJS({
|
|
|
24983
26145
|
return { ...instr, dst: rTemp(instr.dst), src: rOp(instr.src) };
|
|
24984
26146
|
case "nbt_read":
|
|
24985
26147
|
return { ...instr, dst: rTemp(instr.dst) };
|
|
26148
|
+
case "nbt_read_dynamic":
|
|
26149
|
+
return { ...instr, dst: rTemp(instr.dst), indexSrc: rOp(instr.indexSrc) };
|
|
24986
26150
|
case "nbt_write":
|
|
24987
26151
|
return { ...instr, src: rOp(instr.src) };
|
|
26152
|
+
case "nbt_write_dynamic":
|
|
26153
|
+
return { ...instr, indexSrc: rOp(instr.indexSrc), valueSrc: rOp(instr.valueSrc) };
|
|
24988
26154
|
case "call":
|
|
24989
26155
|
return { ...instr, dst: instr.dst ? rTemp(instr.dst) : null, args: instr.args.map(rOp) };
|
|
24990
26156
|
case "call_macro":
|
|
@@ -25026,6 +26192,7 @@ var require_coroutine = __commonJS({
|
|
|
25026
26192
|
case "or":
|
|
25027
26193
|
case "not":
|
|
25028
26194
|
case "nbt_read":
|
|
26195
|
+
case "nbt_read_dynamic":
|
|
25029
26196
|
return instr.dst;
|
|
25030
26197
|
case "call":
|
|
25031
26198
|
case "call_macro":
|
|
@@ -25060,6 +26227,13 @@ var require_coroutine = __commonJS({
|
|
|
25060
26227
|
case "nbt_write":
|
|
25061
26228
|
addOp(instr.src);
|
|
25062
26229
|
break;
|
|
26230
|
+
case "nbt_write_dynamic":
|
|
26231
|
+
addOp(instr.indexSrc);
|
|
26232
|
+
addOp(instr.valueSrc);
|
|
26233
|
+
break;
|
|
26234
|
+
case "nbt_read_dynamic":
|
|
26235
|
+
addOp(instr.indexSrc);
|
|
26236
|
+
break;
|
|
25063
26237
|
case "call":
|
|
25064
26238
|
instr.args.forEach(addOp);
|
|
25065
26239
|
break;
|
|
@@ -25289,67 +26463,1367 @@ var require_budget = __commonJS({
|
|
|
25289
26463
|
}
|
|
25290
26464
|
});
|
|
25291
26465
|
|
|
25292
|
-
// ../../dist/src/
|
|
25293
|
-
var
|
|
25294
|
-
"../../dist/src/
|
|
26466
|
+
// ../../dist/src/events/types.js
|
|
26467
|
+
var require_types = __commonJS({
|
|
26468
|
+
"../../dist/src/events/types.js"(exports2) {
|
|
25295
26469
|
"use strict";
|
|
25296
26470
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
25297
|
-
exports2.
|
|
25298
|
-
|
|
25299
|
-
|
|
25300
|
-
|
|
26471
|
+
exports2.EVENT_TYPES = void 0;
|
|
26472
|
+
exports2.isEventTypeName = isEventTypeName;
|
|
26473
|
+
exports2.getEventParamSpecs = getEventParamSpecs;
|
|
26474
|
+
exports2.EVENT_TYPES = {
|
|
26475
|
+
PlayerDeath: {
|
|
26476
|
+
tag: "rs.just_died",
|
|
26477
|
+
params: ["player: Player"],
|
|
26478
|
+
detection: "scoreboard"
|
|
26479
|
+
},
|
|
26480
|
+
PlayerJoin: {
|
|
26481
|
+
tag: "rs.just_joined",
|
|
26482
|
+
params: ["player: Player"],
|
|
26483
|
+
detection: "tag"
|
|
26484
|
+
},
|
|
26485
|
+
BlockBreak: {
|
|
26486
|
+
tag: "rs.just_broke_block",
|
|
26487
|
+
params: ["player: Player", "block: string"],
|
|
26488
|
+
detection: "advancement"
|
|
26489
|
+
},
|
|
26490
|
+
EntityKill: {
|
|
26491
|
+
tag: "rs.just_killed",
|
|
26492
|
+
params: ["player: Player"],
|
|
26493
|
+
detection: "scoreboard"
|
|
26494
|
+
},
|
|
26495
|
+
ItemUse: {
|
|
26496
|
+
tag: "rs.just_used_item",
|
|
26497
|
+
params: ["player: Player"],
|
|
26498
|
+
detection: "scoreboard"
|
|
26499
|
+
}
|
|
26500
|
+
};
|
|
26501
|
+
function isEventTypeName(value) {
|
|
26502
|
+
return value in exports2.EVENT_TYPES;
|
|
26503
|
+
}
|
|
26504
|
+
function getEventParamSpecs(eventType) {
|
|
26505
|
+
return exports2.EVENT_TYPES[eventType].params.map(parseEventParam);
|
|
26506
|
+
}
|
|
26507
|
+
function parseEventParam(spec) {
|
|
26508
|
+
const match = spec.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*:\s*([A-Za-z_][A-Za-z0-9_]*)$/);
|
|
26509
|
+
if (!match) {
|
|
26510
|
+
throw new Error(`Invalid event parameter spec: ${spec}`);
|
|
26511
|
+
}
|
|
26512
|
+
const [, name, typeName] = match;
|
|
26513
|
+
return {
|
|
26514
|
+
name,
|
|
26515
|
+
type: toTypeNode(typeName)
|
|
26516
|
+
};
|
|
26517
|
+
}
|
|
26518
|
+
function toTypeNode(typeName) {
|
|
26519
|
+
if (typeName === "Player") {
|
|
26520
|
+
return { kind: "entity", entityType: "Player" };
|
|
26521
|
+
}
|
|
26522
|
+
if (typeName === "string" || typeName === "int" || typeName === "bool" || typeName === "float" || typeName === "fixed" || typeName === "void" || typeName === "BlockPos" || typeName === "byte" || typeName === "short" || typeName === "long" || typeName === "double") {
|
|
26523
|
+
return { kind: "named", name: typeName };
|
|
26524
|
+
}
|
|
26525
|
+
return { kind: "struct", name: typeName };
|
|
26526
|
+
}
|
|
26527
|
+
}
|
|
26528
|
+
});
|
|
26529
|
+
|
|
26530
|
+
// ../../dist/src/typechecker/index.js
|
|
26531
|
+
var require_typechecker = __commonJS({
|
|
26532
|
+
"../../dist/src/typechecker/index.js"(exports2) {
|
|
26533
|
+
"use strict";
|
|
26534
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
26535
|
+
exports2.TypeChecker = void 0;
|
|
25301
26536
|
var diagnostics_1 = require_diagnostics();
|
|
25302
|
-
var
|
|
25303
|
-
var
|
|
25304
|
-
|
|
25305
|
-
|
|
25306
|
-
|
|
25307
|
-
|
|
25308
|
-
|
|
25309
|
-
|
|
25310
|
-
|
|
25311
|
-
|
|
25312
|
-
|
|
25313
|
-
|
|
25314
|
-
|
|
25315
|
-
|
|
25316
|
-
|
|
25317
|
-
|
|
25318
|
-
|
|
25319
|
-
|
|
25320
|
-
|
|
25321
|
-
|
|
25322
|
-
|
|
25323
|
-
|
|
25324
|
-
|
|
25325
|
-
|
|
25326
|
-
|
|
25327
|
-
|
|
25328
|
-
|
|
25329
|
-
|
|
25330
|
-
|
|
25331
|
-
|
|
26537
|
+
var types_1 = require_types();
|
|
26538
|
+
var ENTITY_HIERARCHY = {
|
|
26539
|
+
"entity": null,
|
|
26540
|
+
"Player": "entity",
|
|
26541
|
+
"Mob": "entity",
|
|
26542
|
+
"HostileMob": "Mob",
|
|
26543
|
+
"PassiveMob": "Mob",
|
|
26544
|
+
"Zombie": "HostileMob",
|
|
26545
|
+
"Skeleton": "HostileMob",
|
|
26546
|
+
"Creeper": "HostileMob",
|
|
26547
|
+
"Spider": "HostileMob",
|
|
26548
|
+
"Enderman": "HostileMob",
|
|
26549
|
+
"Blaze": "HostileMob",
|
|
26550
|
+
"Witch": "HostileMob",
|
|
26551
|
+
"Slime": "HostileMob",
|
|
26552
|
+
"ZombieVillager": "HostileMob",
|
|
26553
|
+
"Husk": "HostileMob",
|
|
26554
|
+
"Drowned": "HostileMob",
|
|
26555
|
+
"Stray": "HostileMob",
|
|
26556
|
+
"WitherSkeleton": "HostileMob",
|
|
26557
|
+
"CaveSpider": "HostileMob",
|
|
26558
|
+
"Pig": "PassiveMob",
|
|
26559
|
+
"Cow": "PassiveMob",
|
|
26560
|
+
"Sheep": "PassiveMob",
|
|
26561
|
+
"Chicken": "PassiveMob",
|
|
26562
|
+
"Villager": "PassiveMob",
|
|
26563
|
+
"WanderingTrader": "PassiveMob",
|
|
26564
|
+
"ArmorStand": "entity",
|
|
26565
|
+
"Item": "entity",
|
|
26566
|
+
"Arrow": "entity"
|
|
26567
|
+
};
|
|
26568
|
+
var MC_TYPE_TO_ENTITY = {
|
|
26569
|
+
"zombie": "Zombie",
|
|
26570
|
+
"minecraft:zombie": "Zombie",
|
|
26571
|
+
"skeleton": "Skeleton",
|
|
26572
|
+
"minecraft:skeleton": "Skeleton",
|
|
26573
|
+
"creeper": "Creeper",
|
|
26574
|
+
"minecraft:creeper": "Creeper",
|
|
26575
|
+
"spider": "Spider",
|
|
26576
|
+
"minecraft:spider": "Spider",
|
|
26577
|
+
"enderman": "Enderman",
|
|
26578
|
+
"minecraft:enderman": "Enderman",
|
|
26579
|
+
"blaze": "Blaze",
|
|
26580
|
+
"minecraft:blaze": "Blaze",
|
|
26581
|
+
"witch": "Witch",
|
|
26582
|
+
"minecraft:witch": "Witch",
|
|
26583
|
+
"slime": "Slime",
|
|
26584
|
+
"minecraft:slime": "Slime",
|
|
26585
|
+
"zombie_villager": "ZombieVillager",
|
|
26586
|
+
"minecraft:zombie_villager": "ZombieVillager",
|
|
26587
|
+
"husk": "Husk",
|
|
26588
|
+
"minecraft:husk": "Husk",
|
|
26589
|
+
"drowned": "Drowned",
|
|
26590
|
+
"minecraft:drowned": "Drowned",
|
|
26591
|
+
"stray": "Stray",
|
|
26592
|
+
"minecraft:stray": "Stray",
|
|
26593
|
+
"wither_skeleton": "WitherSkeleton",
|
|
26594
|
+
"minecraft:wither_skeleton": "WitherSkeleton",
|
|
26595
|
+
"cave_spider": "CaveSpider",
|
|
26596
|
+
"minecraft:cave_spider": "CaveSpider",
|
|
26597
|
+
"pig": "Pig",
|
|
26598
|
+
"minecraft:pig": "Pig",
|
|
26599
|
+
"cow": "Cow",
|
|
26600
|
+
"minecraft:cow": "Cow",
|
|
26601
|
+
"sheep": "Sheep",
|
|
26602
|
+
"minecraft:sheep": "Sheep",
|
|
26603
|
+
"chicken": "Chicken",
|
|
26604
|
+
"minecraft:chicken": "Chicken",
|
|
26605
|
+
"villager": "Villager",
|
|
26606
|
+
"minecraft:villager": "Villager",
|
|
26607
|
+
"wandering_trader": "WanderingTrader",
|
|
26608
|
+
"minecraft:wandering_trader": "WanderingTrader",
|
|
26609
|
+
"armor_stand": "ArmorStand",
|
|
26610
|
+
"minecraft:armor_stand": "ArmorStand",
|
|
26611
|
+
"item": "Item",
|
|
26612
|
+
"minecraft:item": "Item",
|
|
26613
|
+
"arrow": "Arrow",
|
|
26614
|
+
"minecraft:arrow": "Arrow"
|
|
26615
|
+
};
|
|
26616
|
+
var VOID_TYPE = { kind: "named", name: "void" };
|
|
26617
|
+
var INT_TYPE = { kind: "named", name: "int" };
|
|
26618
|
+
var STRING_TYPE = { kind: "named", name: "string" };
|
|
26619
|
+
var FORMAT_STRING_TYPE = { kind: "named", name: "format_string" };
|
|
26620
|
+
var BUILTIN_SIGNATURES = {
|
|
26621
|
+
setTimeout: {
|
|
26622
|
+
params: [INT_TYPE, { kind: "function_type", params: [], return: VOID_TYPE }],
|
|
26623
|
+
return: VOID_TYPE
|
|
26624
|
+
},
|
|
26625
|
+
setInterval: {
|
|
26626
|
+
params: [INT_TYPE, { kind: "function_type", params: [], return: VOID_TYPE }],
|
|
26627
|
+
return: INT_TYPE
|
|
26628
|
+
},
|
|
26629
|
+
clearInterval: {
|
|
26630
|
+
params: [INT_TYPE],
|
|
26631
|
+
return: VOID_TYPE
|
|
25332
26632
|
}
|
|
25333
|
-
|
|
25334
|
-
|
|
25335
|
-
|
|
25336
|
-
|
|
25337
|
-
|
|
25338
|
-
|
|
25339
|
-
|
|
25340
|
-
|
|
25341
|
-
|
|
25342
|
-
|
|
25343
|
-
|
|
25344
|
-
|
|
25345
|
-
|
|
26633
|
+
};
|
|
26634
|
+
var TypeChecker = class {
|
|
26635
|
+
constructor(source, filePath) {
|
|
26636
|
+
this.lintWarnings = [];
|
|
26637
|
+
this.functions = /* @__PURE__ */ new Map();
|
|
26638
|
+
this.implMethods = /* @__PURE__ */ new Map();
|
|
26639
|
+
this.structs = /* @__PURE__ */ new Map();
|
|
26640
|
+
this.enums = /* @__PURE__ */ new Map();
|
|
26641
|
+
this.consts = /* @__PURE__ */ new Map();
|
|
26642
|
+
this.globals = /* @__PURE__ */ new Map();
|
|
26643
|
+
this.currentFn = null;
|
|
26644
|
+
this.currentReturnType = null;
|
|
26645
|
+
this.scope = /* @__PURE__ */ new Map();
|
|
26646
|
+
this.selfTypeStack = ["entity"];
|
|
26647
|
+
this.loopDepth = 0;
|
|
26648
|
+
this.condDepth = 0;
|
|
26649
|
+
this.richTextBuiltins = /* @__PURE__ */ new Map([
|
|
26650
|
+
["say", { messageIndex: 0 }],
|
|
26651
|
+
["announce", { messageIndex: 0 }],
|
|
26652
|
+
["tell", { messageIndex: 1 }],
|
|
26653
|
+
["tellraw", { messageIndex: 1 }],
|
|
26654
|
+
["title", { messageIndex: 1 }],
|
|
26655
|
+
["actionbar", { messageIndex: 1 }],
|
|
26656
|
+
["subtitle", { messageIndex: 1 }]
|
|
26657
|
+
]);
|
|
26658
|
+
this.collector = new diagnostics_1.DiagnosticCollector(source, filePath);
|
|
26659
|
+
this.filePath = filePath;
|
|
25346
26660
|
}
|
|
25347
|
-
|
|
25348
|
-
const
|
|
26661
|
+
getNodeLocation(node) {
|
|
26662
|
+
const span = node?.span;
|
|
26663
|
+
return {
|
|
26664
|
+
line: span?.line ?? 1,
|
|
26665
|
+
col: span?.col ?? 1
|
|
26666
|
+
};
|
|
26667
|
+
}
|
|
26668
|
+
report(message, node) {
|
|
26669
|
+
const { line, col } = this.getNodeLocation(node);
|
|
26670
|
+
this.collector.error("TypeError", message, line, col);
|
|
26671
|
+
}
|
|
26672
|
+
warnLint(message, node) {
|
|
26673
|
+
const { line, col } = this.getNodeLocation(node);
|
|
26674
|
+
const filePart = this.filePath ? `${this.filePath}:` : "";
|
|
26675
|
+
this.lintWarnings.push(`${filePart}line ${line}, col ${col}: ${message}`);
|
|
26676
|
+
}
|
|
26677
|
+
/** Returns lint warnings (non-blocking). */
|
|
26678
|
+
getWarnings() {
|
|
26679
|
+
return this.lintWarnings;
|
|
26680
|
+
}
|
|
26681
|
+
/**
|
|
26682
|
+
* Type check a program. Returns collected errors.
|
|
26683
|
+
*/
|
|
26684
|
+
check(program) {
|
|
26685
|
+
for (const fn of program.declarations) {
|
|
26686
|
+
this.functions.set(fn.name, fn);
|
|
26687
|
+
}
|
|
26688
|
+
for (const global of program.globals ?? []) {
|
|
26689
|
+
this.globals.set(global.name, this.normalizeType(global.type));
|
|
26690
|
+
}
|
|
26691
|
+
for (const implBlock of program.implBlocks ?? []) {
|
|
26692
|
+
let methods = this.implMethods.get(implBlock.typeName);
|
|
26693
|
+
if (!methods) {
|
|
26694
|
+
methods = /* @__PURE__ */ new Map();
|
|
26695
|
+
this.implMethods.set(implBlock.typeName, methods);
|
|
26696
|
+
}
|
|
26697
|
+
for (const method of implBlock.methods) {
|
|
26698
|
+
const selfIndex = method.params.findIndex((param) => param.name === "self");
|
|
26699
|
+
if (selfIndex > 0) {
|
|
26700
|
+
this.report(`Method '${method.name}' must declare 'self' as the first parameter`, method.params[selfIndex]);
|
|
26701
|
+
}
|
|
26702
|
+
if (selfIndex === 0) {
|
|
26703
|
+
const selfType = this.normalizeType(method.params[0].type);
|
|
26704
|
+
if (selfType.kind !== "struct" || selfType.name !== implBlock.typeName) {
|
|
26705
|
+
this.report(`Method '${method.name}' has invalid 'self' type`, method.params[0]);
|
|
26706
|
+
}
|
|
26707
|
+
}
|
|
26708
|
+
methods.set(method.name, method);
|
|
26709
|
+
}
|
|
26710
|
+
}
|
|
26711
|
+
for (const struct of program.structs ?? []) {
|
|
26712
|
+
const fields = /* @__PURE__ */ new Map();
|
|
26713
|
+
for (const field of struct.fields) {
|
|
26714
|
+
fields.set(field.name, field.type);
|
|
26715
|
+
}
|
|
26716
|
+
this.structs.set(struct.name, fields);
|
|
26717
|
+
}
|
|
26718
|
+
for (const enumDecl of program.enums ?? []) {
|
|
26719
|
+
const variants = /* @__PURE__ */ new Map();
|
|
26720
|
+
for (const variant of enumDecl.variants) {
|
|
26721
|
+
variants.set(variant.name, variant.value ?? 0);
|
|
26722
|
+
}
|
|
26723
|
+
this.enums.set(enumDecl.name, variants);
|
|
26724
|
+
}
|
|
26725
|
+
for (const constDecl of program.consts ?? []) {
|
|
26726
|
+
const constType = this.normalizeType(constDecl.type);
|
|
26727
|
+
const actualType = this.inferType(constDecl.value);
|
|
26728
|
+
if (!this.typesMatch(constType, actualType)) {
|
|
26729
|
+
this.report(`Type mismatch: expected ${this.typeToString(constType)}, got ${this.typeToString(actualType)}`, constDecl.value);
|
|
26730
|
+
}
|
|
26731
|
+
this.consts.set(constDecl.name, constType);
|
|
26732
|
+
}
|
|
26733
|
+
for (const fn of program.declarations) {
|
|
26734
|
+
this.checkFunction(fn);
|
|
26735
|
+
}
|
|
26736
|
+
for (const implBlock of program.implBlocks ?? []) {
|
|
26737
|
+
for (const method of implBlock.methods) {
|
|
26738
|
+
this.checkFunction(method);
|
|
26739
|
+
}
|
|
26740
|
+
}
|
|
26741
|
+
return this.collector.getErrors();
|
|
26742
|
+
}
|
|
26743
|
+
checkFunction(fn) {
|
|
26744
|
+
if (fn.typeParams && fn.typeParams.length > 0)
|
|
26745
|
+
return;
|
|
26746
|
+
this.currentFn = fn;
|
|
26747
|
+
this.currentReturnType = this.normalizeType(fn.returnType);
|
|
26748
|
+
this.scope = /* @__PURE__ */ new Map();
|
|
26749
|
+
let seenDefault = false;
|
|
26750
|
+
this.checkFunctionDecorators(fn);
|
|
26751
|
+
for (const [name, type] of this.consts.entries()) {
|
|
26752
|
+
this.scope.set(name, { type, mutable: false });
|
|
26753
|
+
}
|
|
26754
|
+
for (const [name, type] of this.globals.entries()) {
|
|
26755
|
+
this.scope.set(name, { type, mutable: true });
|
|
26756
|
+
}
|
|
26757
|
+
for (const param of fn.params) {
|
|
26758
|
+
this.scope.set(param.name, { type: this.normalizeType(param.type), mutable: true });
|
|
26759
|
+
if (param.default) {
|
|
26760
|
+
seenDefault = true;
|
|
26761
|
+
this.checkExpr(param.default);
|
|
26762
|
+
const defaultType = this.inferType(param.default);
|
|
26763
|
+
const paramType = this.normalizeType(param.type);
|
|
26764
|
+
if (!this.typesMatch(paramType, defaultType)) {
|
|
26765
|
+
this.report(`Default value for '${param.name}' must be ${this.typeToString(paramType)}, got ${this.typeToString(defaultType)}`, param.default);
|
|
26766
|
+
}
|
|
26767
|
+
} else if (seenDefault) {
|
|
26768
|
+
this.report(`Parameter '${param.name}' cannot follow a default parameter`, param);
|
|
26769
|
+
}
|
|
26770
|
+
}
|
|
26771
|
+
this.checkBlock(fn.body);
|
|
26772
|
+
this.currentFn = null;
|
|
26773
|
+
this.currentReturnType = null;
|
|
26774
|
+
}
|
|
26775
|
+
checkFunctionDecorators(fn) {
|
|
26776
|
+
const eventDecorators = fn.decorators.filter((decorator) => decorator.name === "on");
|
|
26777
|
+
if (eventDecorators.length === 0) {
|
|
26778
|
+
return;
|
|
26779
|
+
}
|
|
26780
|
+
if (eventDecorators.length > 1) {
|
|
26781
|
+
this.report(`Function '${fn.name}' cannot have multiple @on decorators`, fn);
|
|
26782
|
+
return;
|
|
26783
|
+
}
|
|
26784
|
+
const eventType = eventDecorators[0].args?.eventType;
|
|
26785
|
+
if (!eventType) {
|
|
26786
|
+
this.report(`Function '${fn.name}' is missing an event type in @on(...)`, fn);
|
|
26787
|
+
return;
|
|
26788
|
+
}
|
|
26789
|
+
if (!(0, types_1.isEventTypeName)(eventType)) {
|
|
26790
|
+
this.report(`Unknown event type '${eventType}'`, fn);
|
|
26791
|
+
return;
|
|
26792
|
+
}
|
|
26793
|
+
const expectedParams = (0, types_1.getEventParamSpecs)(eventType);
|
|
26794
|
+
if (fn.params.length !== expectedParams.length) {
|
|
26795
|
+
this.report(`Event handler '${fn.name}' for ${eventType} must declare ${expectedParams.length} parameter(s), got ${fn.params.length}`, fn);
|
|
26796
|
+
return;
|
|
26797
|
+
}
|
|
26798
|
+
for (let i = 0; i < expectedParams.length; i++) {
|
|
26799
|
+
const actual = this.normalizeType(fn.params[i].type);
|
|
26800
|
+
const expected = this.normalizeType(expectedParams[i].type);
|
|
26801
|
+
if (!this.typesMatch(expected, actual)) {
|
|
26802
|
+
this.report(`Event handler '${fn.name}' parameter ${i + 1} must be ${this.typeToString(expected)}, got ${this.typeToString(actual)}`, fn.params[i]);
|
|
26803
|
+
}
|
|
26804
|
+
}
|
|
26805
|
+
}
|
|
26806
|
+
checkBlock(stmts) {
|
|
26807
|
+
for (const stmt of stmts) {
|
|
26808
|
+
this.checkStmt(stmt);
|
|
26809
|
+
}
|
|
26810
|
+
}
|
|
26811
|
+
checkStmt(stmt) {
|
|
26812
|
+
switch (stmt.kind) {
|
|
26813
|
+
case "let":
|
|
26814
|
+
this.checkLetStmt(stmt);
|
|
26815
|
+
break;
|
|
26816
|
+
case "let_destruct":
|
|
26817
|
+
this.checkLetDestructStmt(stmt);
|
|
26818
|
+
break;
|
|
26819
|
+
case "return":
|
|
26820
|
+
this.checkReturnStmt(stmt);
|
|
26821
|
+
break;
|
|
26822
|
+
case "if":
|
|
26823
|
+
this.checkExpr(stmt.cond);
|
|
26824
|
+
this.condDepth++;
|
|
26825
|
+
this.checkIfBranches(stmt);
|
|
26826
|
+
this.condDepth--;
|
|
26827
|
+
break;
|
|
26828
|
+
case "while":
|
|
26829
|
+
this.checkExpr(stmt.cond);
|
|
26830
|
+
this.loopDepth++;
|
|
26831
|
+
this.checkBlock(stmt.body);
|
|
26832
|
+
this.loopDepth--;
|
|
26833
|
+
break;
|
|
26834
|
+
case "for":
|
|
26835
|
+
if (stmt.init)
|
|
26836
|
+
this.checkStmt(stmt.init);
|
|
26837
|
+
this.checkExpr(stmt.cond);
|
|
26838
|
+
this.checkExpr(stmt.step);
|
|
26839
|
+
this.loopDepth++;
|
|
26840
|
+
this.checkBlock(stmt.body);
|
|
26841
|
+
this.loopDepth--;
|
|
26842
|
+
break;
|
|
26843
|
+
case "foreach":
|
|
26844
|
+
this.checkExpr(stmt.iterable);
|
|
26845
|
+
if (stmt.iterable.kind === "selector") {
|
|
26846
|
+
const entityType = this.inferEntityTypeFromSelector(stmt.iterable.sel);
|
|
26847
|
+
this.scope.set(stmt.binding, {
|
|
26848
|
+
type: { kind: "entity", entityType },
|
|
26849
|
+
mutable: false
|
|
26850
|
+
// Entity bindings are not reassignable
|
|
26851
|
+
});
|
|
26852
|
+
this.pushSelfType(entityType);
|
|
26853
|
+
this.loopDepth++;
|
|
26854
|
+
this.checkBlock(stmt.body);
|
|
26855
|
+
this.loopDepth--;
|
|
26856
|
+
this.popSelfType();
|
|
26857
|
+
} else {
|
|
26858
|
+
const iterableType = this.inferType(stmt.iterable);
|
|
26859
|
+
if (iterableType.kind === "array") {
|
|
26860
|
+
this.scope.set(stmt.binding, { type: iterableType.elem, mutable: true });
|
|
26861
|
+
} else {
|
|
26862
|
+
this.scope.set(stmt.binding, { type: { kind: "named", name: "void" }, mutable: true });
|
|
26863
|
+
}
|
|
26864
|
+
this.loopDepth++;
|
|
26865
|
+
this.checkBlock(stmt.body);
|
|
26866
|
+
this.loopDepth--;
|
|
26867
|
+
}
|
|
26868
|
+
break;
|
|
26869
|
+
case "match":
|
|
26870
|
+
this.checkExpr(stmt.expr);
|
|
26871
|
+
for (const arm of stmt.arms) {
|
|
26872
|
+
if (arm.pattern) {
|
|
26873
|
+
this.checkExpr(arm.pattern);
|
|
26874
|
+
const subjectType = this.inferType(stmt.expr);
|
|
26875
|
+
const patternType = this.inferType(arm.pattern);
|
|
26876
|
+
const isUnknown = (t) => t.kind === "named" && t.name === "void";
|
|
26877
|
+
if (!isUnknown(subjectType) && !isUnknown(patternType) && !this.typesMatch(subjectType, patternType)) {
|
|
26878
|
+
this.report("Match arm pattern type must match subject type", arm.pattern);
|
|
26879
|
+
}
|
|
26880
|
+
}
|
|
26881
|
+
this.checkBlock(arm.body);
|
|
26882
|
+
}
|
|
26883
|
+
break;
|
|
26884
|
+
case "as_block": {
|
|
26885
|
+
const entityType = this.inferEntityTypeFromSelector(stmt.selector);
|
|
26886
|
+
this.pushSelfType(entityType);
|
|
26887
|
+
this.checkBlock(stmt.body);
|
|
26888
|
+
this.popSelfType();
|
|
26889
|
+
break;
|
|
26890
|
+
}
|
|
26891
|
+
case "at_block":
|
|
26892
|
+
this.checkBlock(stmt.body);
|
|
26893
|
+
break;
|
|
26894
|
+
case "as_at": {
|
|
26895
|
+
const entityType = this.inferEntityTypeFromSelector(stmt.as_sel);
|
|
26896
|
+
this.pushSelfType(entityType);
|
|
26897
|
+
this.checkBlock(stmt.body);
|
|
26898
|
+
this.popSelfType();
|
|
26899
|
+
break;
|
|
26900
|
+
}
|
|
26901
|
+
case "execute":
|
|
26902
|
+
for (const sub of stmt.subcommands) {
|
|
26903
|
+
if (sub.kind === "as" && sub.selector) {
|
|
26904
|
+
const entityType = this.inferEntityTypeFromSelector(sub.selector);
|
|
26905
|
+
this.pushSelfType(entityType);
|
|
26906
|
+
}
|
|
26907
|
+
}
|
|
26908
|
+
this.checkBlock(stmt.body);
|
|
26909
|
+
for (const sub of stmt.subcommands) {
|
|
26910
|
+
if (sub.kind === "as") {
|
|
26911
|
+
this.popSelfType();
|
|
26912
|
+
}
|
|
26913
|
+
}
|
|
26914
|
+
break;
|
|
26915
|
+
case "expr":
|
|
26916
|
+
this.checkExpr(stmt.expr);
|
|
26917
|
+
break;
|
|
26918
|
+
case "raw":
|
|
26919
|
+
break;
|
|
26920
|
+
}
|
|
26921
|
+
}
|
|
26922
|
+
checkLetDestructStmt(stmt) {
|
|
26923
|
+
this.checkExpr(stmt.init);
|
|
26924
|
+
const initType = this.inferType(stmt.init);
|
|
26925
|
+
if (stmt.type) {
|
|
26926
|
+
const normalized = this.normalizeType(stmt.type);
|
|
26927
|
+
if (normalized.kind !== "tuple") {
|
|
26928
|
+
this.report(`Destructuring type annotation must be a tuple type`, stmt);
|
|
26929
|
+
return;
|
|
26930
|
+
}
|
|
26931
|
+
if (normalized.elements.length !== stmt.names.length) {
|
|
26932
|
+
this.report(`Destructuring pattern has ${stmt.names.length} bindings but type has ${normalized.elements.length} elements`, stmt);
|
|
26933
|
+
}
|
|
26934
|
+
for (let i = 0; i < stmt.names.length; i++) {
|
|
26935
|
+
const elemType = normalized.elements[i] ?? { kind: "named", name: "int" };
|
|
26936
|
+
this.scope.set(stmt.names[i], { type: elemType, mutable: true });
|
|
26937
|
+
}
|
|
26938
|
+
} else if (initType.kind === "tuple") {
|
|
26939
|
+
if (initType.elements.length !== stmt.names.length) {
|
|
26940
|
+
this.report(`Destructuring pattern has ${stmt.names.length} bindings but tuple has ${initType.elements.length} elements`, stmt);
|
|
26941
|
+
}
|
|
26942
|
+
for (let i = 0; i < stmt.names.length; i++) {
|
|
26943
|
+
const elemType = initType.elements[i] ?? { kind: "named", name: "int" };
|
|
26944
|
+
this.scope.set(stmt.names[i], { type: elemType, mutable: true });
|
|
26945
|
+
}
|
|
26946
|
+
} else {
|
|
26947
|
+
for (const name of stmt.names) {
|
|
26948
|
+
this.scope.set(name, { type: INT_TYPE, mutable: true });
|
|
26949
|
+
}
|
|
26950
|
+
}
|
|
26951
|
+
}
|
|
26952
|
+
checkLetStmt(stmt) {
|
|
26953
|
+
const expectedType = stmt.type ? this.normalizeType(stmt.type) : void 0;
|
|
26954
|
+
this.checkExpr(stmt.init, expectedType);
|
|
26955
|
+
const type = expectedType ?? this.inferType(stmt.init);
|
|
26956
|
+
this.scope.set(stmt.name, { type, mutable: true });
|
|
26957
|
+
const actualType = this.inferType(stmt.init, expectedType);
|
|
26958
|
+
if (expectedType && stmt.init.kind !== "struct_lit" && stmt.init.kind !== "array_lit" && !(actualType.kind === "named" && actualType.name === "void")) {
|
|
26959
|
+
if (this.isNumericMismatch(expectedType, actualType)) {
|
|
26960
|
+
this.report(`Type mismatch: cannot implicitly convert ${this.typeToString(actualType)} to ${this.typeToString(expectedType)} (use an explicit cast: 'as ${this.typeToString(expectedType)}')`, stmt);
|
|
26961
|
+
} else if (!this.typesMatch(expectedType, actualType)) {
|
|
26962
|
+
this.report(`Type mismatch: expected ${this.typeToString(expectedType)}, got ${this.typeToString(actualType)}`, stmt);
|
|
26963
|
+
}
|
|
26964
|
+
}
|
|
26965
|
+
}
|
|
26966
|
+
checkReturnStmt(stmt) {
|
|
26967
|
+
if (!this.currentReturnType)
|
|
26968
|
+
return;
|
|
26969
|
+
const expectedType = this.currentReturnType;
|
|
26970
|
+
if (stmt.value) {
|
|
26971
|
+
const actualType = this.inferType(stmt.value, expectedType);
|
|
26972
|
+
this.checkExpr(stmt.value, expectedType);
|
|
26973
|
+
const returnIsFloat = expectedType.kind === "named" && expectedType.name === "float";
|
|
26974
|
+
if (returnIsFloat && stmt.value.kind === "binary") {
|
|
26975
|
+
const arithmeticOps = ["+", "-", "*", "/", "%"];
|
|
26976
|
+
if (arithmeticOps.includes(stmt.value.op)) {
|
|
26977
|
+
this.warnLint(`[FloatArithmetic] 'float' is a system boundary type (MC NBT float); use 'fixed' for arithmetic instead.`, stmt.value);
|
|
26978
|
+
}
|
|
26979
|
+
}
|
|
26980
|
+
if (this.isNumericMismatch(expectedType, actualType)) {
|
|
26981
|
+
this.report(`Return type mismatch: cannot implicitly convert ${this.typeToString(actualType)} to ${this.typeToString(expectedType)} (use an explicit cast: 'as ${this.typeToString(expectedType)}')`, stmt);
|
|
26982
|
+
} else if (!this.typesMatch(expectedType, actualType)) {
|
|
26983
|
+
this.report(`Return type mismatch: expected ${this.typeToString(expectedType)}, got ${this.typeToString(actualType)}`, stmt);
|
|
26984
|
+
}
|
|
26985
|
+
} else {
|
|
26986
|
+
if (expectedType.kind !== "named" || expectedType.name !== "void") {
|
|
26987
|
+
this.report(`Missing return value: expected ${this.typeToString(expectedType)}`, stmt);
|
|
26988
|
+
}
|
|
26989
|
+
}
|
|
26990
|
+
}
|
|
26991
|
+
checkExpr(expr, expectedType) {
|
|
26992
|
+
switch (expr.kind) {
|
|
26993
|
+
case "ident":
|
|
26994
|
+
if (!this.scope.has(expr.name)) {
|
|
26995
|
+
this.report(`Variable '${expr.name}' used before declaration`, expr);
|
|
26996
|
+
}
|
|
26997
|
+
break;
|
|
26998
|
+
case "call":
|
|
26999
|
+
this.checkCallExpr(expr);
|
|
27000
|
+
break;
|
|
27001
|
+
case "invoke":
|
|
27002
|
+
this.checkInvokeExpr(expr);
|
|
27003
|
+
break;
|
|
27004
|
+
case "member":
|
|
27005
|
+
this.checkMemberExpr(expr);
|
|
27006
|
+
break;
|
|
27007
|
+
case "static_call":
|
|
27008
|
+
this.checkStaticCallExpr(expr);
|
|
27009
|
+
break;
|
|
27010
|
+
case "binary": {
|
|
27011
|
+
this.checkExpr(expr.left);
|
|
27012
|
+
this.checkExpr(expr.right);
|
|
27013
|
+
const arithmeticOps = ["+", "-", "*", "/", "%"];
|
|
27014
|
+
if (arithmeticOps.includes(expr.op)) {
|
|
27015
|
+
const leftType = this.inferType(expr.left);
|
|
27016
|
+
const rightType = this.inferType(expr.right);
|
|
27017
|
+
const leftIsFloat = leftType.kind === "named" && leftType.name === "float";
|
|
27018
|
+
const rightIsFloat = rightType.kind === "named" && rightType.name === "float";
|
|
27019
|
+
if (leftIsFloat || rightIsFloat) {
|
|
27020
|
+
this.warnLint(`[FloatArithmetic] 'float' is a system boundary type (MC NBT); use 'fixed' for arithmetic. Float arithmetic results are undefined.`, expr);
|
|
27021
|
+
}
|
|
27022
|
+
}
|
|
27023
|
+
break;
|
|
27024
|
+
}
|
|
27025
|
+
case "is_check": {
|
|
27026
|
+
this.checkExpr(expr.expr);
|
|
27027
|
+
const checkedType = this.inferType(expr.expr);
|
|
27028
|
+
if (checkedType.kind !== "entity") {
|
|
27029
|
+
this.report(`'is' checks require an entity expression, got ${this.typeToString(checkedType)}`, expr.expr);
|
|
27030
|
+
}
|
|
27031
|
+
break;
|
|
27032
|
+
}
|
|
27033
|
+
case "unary":
|
|
27034
|
+
this.checkExpr(expr.operand);
|
|
27035
|
+
break;
|
|
27036
|
+
case "assign":
|
|
27037
|
+
if (!this.scope.has(expr.target)) {
|
|
27038
|
+
this.report(`Variable '${expr.target}' used before declaration`, expr);
|
|
27039
|
+
} else if (!this.scope.get(expr.target)?.mutable) {
|
|
27040
|
+
this.report(`Cannot assign to const '${expr.target}'`, expr);
|
|
27041
|
+
}
|
|
27042
|
+
this.checkExpr(expr.value, this.scope.get(expr.target)?.type);
|
|
27043
|
+
break;
|
|
27044
|
+
case "member_assign":
|
|
27045
|
+
this.checkExpr(expr.obj);
|
|
27046
|
+
this.checkExpr(expr.value);
|
|
27047
|
+
break;
|
|
27048
|
+
case "index_assign":
|
|
27049
|
+
this.checkExpr(expr.obj);
|
|
27050
|
+
this.checkExpr(expr.index);
|
|
27051
|
+
this.checkExpr(expr.value);
|
|
27052
|
+
break;
|
|
27053
|
+
case "index":
|
|
27054
|
+
this.checkExpr(expr.obj);
|
|
27055
|
+
this.checkExpr(expr.index);
|
|
27056
|
+
const indexType = this.inferType(expr.index);
|
|
27057
|
+
if (indexType.kind !== "named" || indexType.name !== "int") {
|
|
27058
|
+
this.report("Array index must be int", expr.index);
|
|
27059
|
+
}
|
|
27060
|
+
break;
|
|
27061
|
+
case "struct_lit":
|
|
27062
|
+
for (const field of expr.fields) {
|
|
27063
|
+
this.checkExpr(field.value);
|
|
27064
|
+
}
|
|
27065
|
+
break;
|
|
27066
|
+
case "str_interp":
|
|
27067
|
+
for (const part of expr.parts) {
|
|
27068
|
+
if (typeof part !== "string") {
|
|
27069
|
+
this.checkExpr(part);
|
|
27070
|
+
}
|
|
27071
|
+
}
|
|
27072
|
+
break;
|
|
27073
|
+
case "f_string":
|
|
27074
|
+
for (const part of expr.parts) {
|
|
27075
|
+
if (part.kind !== "expr") {
|
|
27076
|
+
continue;
|
|
27077
|
+
}
|
|
27078
|
+
this.checkExpr(part.expr);
|
|
27079
|
+
const partType = this.inferType(part.expr);
|
|
27080
|
+
const isUnknown = partType.kind === "named" && partType.name === "void";
|
|
27081
|
+
if (!isUnknown && !(partType.kind === "named" && (partType.name === "int" || partType.name === "string" || partType.name === "format_string"))) {
|
|
27082
|
+
this.report(`f-string placeholder must be int or string, got ${this.typeToString(partType)}`, part.expr);
|
|
27083
|
+
}
|
|
27084
|
+
}
|
|
27085
|
+
break;
|
|
27086
|
+
case "array_lit":
|
|
27087
|
+
for (const elem of expr.elements) {
|
|
27088
|
+
this.checkExpr(elem);
|
|
27089
|
+
}
|
|
27090
|
+
break;
|
|
27091
|
+
case "tuple_lit":
|
|
27092
|
+
if (expr.elements.length < 2 || expr.elements.length > 8) {
|
|
27093
|
+
this.report(`Tuple must have 2-8 elements, got ${expr.elements.length}`, expr);
|
|
27094
|
+
}
|
|
27095
|
+
for (const elem of expr.elements) {
|
|
27096
|
+
this.checkExpr(elem);
|
|
27097
|
+
}
|
|
27098
|
+
break;
|
|
27099
|
+
case "lambda":
|
|
27100
|
+
this.checkLambdaExpr(expr, expectedType);
|
|
27101
|
+
break;
|
|
27102
|
+
case "path_expr":
|
|
27103
|
+
if (!this.enums.has(expr.enumName)) {
|
|
27104
|
+
this.report(`Unknown enum '${expr.enumName}'`, expr);
|
|
27105
|
+
} else {
|
|
27106
|
+
const variants = this.enums.get(expr.enumName);
|
|
27107
|
+
if (!variants.has(expr.variant)) {
|
|
27108
|
+
this.report(`Enum '${expr.enumName}' has no variant '${expr.variant}'`, expr);
|
|
27109
|
+
}
|
|
27110
|
+
}
|
|
27111
|
+
break;
|
|
27112
|
+
case "blockpos":
|
|
27113
|
+
break;
|
|
27114
|
+
// Literals don't need checking
|
|
27115
|
+
case "int_lit":
|
|
27116
|
+
case "float_lit":
|
|
27117
|
+
case "bool_lit":
|
|
27118
|
+
case "str_lit":
|
|
27119
|
+
case "mc_name":
|
|
27120
|
+
case "range_lit":
|
|
27121
|
+
case "selector":
|
|
27122
|
+
case "byte_lit":
|
|
27123
|
+
case "short_lit":
|
|
27124
|
+
case "long_lit":
|
|
27125
|
+
case "double_lit":
|
|
27126
|
+
break;
|
|
27127
|
+
case "type_cast":
|
|
27128
|
+
this.checkExpr(expr.expr);
|
|
27129
|
+
break;
|
|
27130
|
+
}
|
|
27131
|
+
}
|
|
27132
|
+
checkCallExpr(expr) {
|
|
27133
|
+
if (expr.fn === "tp" || expr.fn === "tp_to") {
|
|
27134
|
+
this.checkTpCall(expr);
|
|
27135
|
+
}
|
|
27136
|
+
const richTextBuiltin = this.richTextBuiltins.get(expr.fn);
|
|
27137
|
+
if (richTextBuiltin) {
|
|
27138
|
+
this.checkRichTextBuiltinCall(expr, richTextBuiltin.messageIndex);
|
|
27139
|
+
return;
|
|
27140
|
+
}
|
|
27141
|
+
const builtin = BUILTIN_SIGNATURES[expr.fn];
|
|
27142
|
+
if (builtin) {
|
|
27143
|
+
if (expr.fn === "setTimeout" || expr.fn === "setInterval") {
|
|
27144
|
+
if (this.loopDepth > 0) {
|
|
27145
|
+
this.report(`${expr.fn}() cannot be called inside a loop. Declare timers at the top level.`, expr);
|
|
27146
|
+
} else if (this.condDepth > 0) {
|
|
27147
|
+
this.report(`${expr.fn}() cannot be called inside an if/else body. Declare timers at the top level.`, expr);
|
|
27148
|
+
}
|
|
27149
|
+
}
|
|
27150
|
+
this.checkFunctionCallArgs(expr.args, builtin.params, expr.fn, expr);
|
|
27151
|
+
return;
|
|
27152
|
+
}
|
|
27153
|
+
const fn = this.functions.get(expr.fn);
|
|
27154
|
+
if (fn) {
|
|
27155
|
+
if (fn.typeParams && fn.typeParams.length > 0) {
|
|
27156
|
+
const requiredParams2 = fn.params.filter((param) => !param.default).length;
|
|
27157
|
+
if (expr.args.length < requiredParams2 || expr.args.length > fn.params.length) {
|
|
27158
|
+
this.report(`Function '${expr.fn}' expects ${requiredParams2}-${fn.params.length} arguments, got ${expr.args.length}`, expr);
|
|
27159
|
+
}
|
|
27160
|
+
for (const arg of expr.args)
|
|
27161
|
+
this.checkExpr(arg);
|
|
27162
|
+
return;
|
|
27163
|
+
}
|
|
27164
|
+
const requiredParams = fn.params.filter((param) => !param.default).length;
|
|
27165
|
+
if (expr.args.length < requiredParams || expr.args.length > fn.params.length) {
|
|
27166
|
+
const expectedRange = requiredParams === fn.params.length ? `${fn.params.length}` : `${requiredParams}-${fn.params.length}`;
|
|
27167
|
+
this.report(`Function '${expr.fn}' expects ${expectedRange} arguments, got ${expr.args.length}`, expr);
|
|
27168
|
+
}
|
|
27169
|
+
for (let i = 0; i < expr.args.length; i++) {
|
|
27170
|
+
const paramType = fn.params[i] ? this.normalizeType(fn.params[i].type) : void 0;
|
|
27171
|
+
if (paramType) {
|
|
27172
|
+
this.checkExpr(expr.args[i], paramType);
|
|
27173
|
+
}
|
|
27174
|
+
const argType = this.inferType(expr.args[i], paramType);
|
|
27175
|
+
if (paramType && !this.typesMatch(paramType, argType)) {
|
|
27176
|
+
this.report(`Argument ${i + 1} of '${expr.fn}' expects ${this.typeToString(paramType)}, got ${this.typeToString(argType)}`, expr.args[i]);
|
|
27177
|
+
}
|
|
27178
|
+
}
|
|
27179
|
+
return;
|
|
27180
|
+
}
|
|
27181
|
+
const varType = this.scope.get(expr.fn)?.type;
|
|
27182
|
+
if (varType?.kind === "function_type") {
|
|
27183
|
+
this.checkFunctionCallArgs(expr.args, varType.params, expr.fn, expr);
|
|
27184
|
+
return;
|
|
27185
|
+
}
|
|
27186
|
+
const implMethod = this.resolveInstanceMethod(expr);
|
|
27187
|
+
if (implMethod) {
|
|
27188
|
+
this.checkFunctionCallArgs(expr.args, implMethod.params.map((param) => this.normalizeType(param.type)), implMethod.name, expr);
|
|
27189
|
+
return;
|
|
27190
|
+
}
|
|
27191
|
+
for (const arg of expr.args) {
|
|
27192
|
+
this.checkExpr(arg);
|
|
27193
|
+
}
|
|
27194
|
+
}
|
|
27195
|
+
checkRichTextBuiltinCall(expr, messageIndex) {
|
|
27196
|
+
for (let i = 0; i < expr.args.length; i++) {
|
|
27197
|
+
this.checkExpr(expr.args[i], i === messageIndex ? void 0 : STRING_TYPE);
|
|
27198
|
+
}
|
|
27199
|
+
const message = expr.args[messageIndex];
|
|
27200
|
+
if (!message) {
|
|
27201
|
+
return;
|
|
27202
|
+
}
|
|
27203
|
+
const messageType = this.inferType(message);
|
|
27204
|
+
if (messageType.kind !== "named" || messageType.name !== "string" && messageType.name !== "format_string") {
|
|
27205
|
+
this.report(`Argument ${messageIndex + 1} of '${expr.fn}' expects string or format_string, got ${this.typeToString(messageType)}`, message);
|
|
27206
|
+
}
|
|
27207
|
+
}
|
|
27208
|
+
checkInvokeExpr(expr) {
|
|
27209
|
+
this.checkExpr(expr.callee);
|
|
27210
|
+
const calleeType = this.inferType(expr.callee);
|
|
27211
|
+
if (calleeType.kind !== "function_type") {
|
|
27212
|
+
this.report("Attempted to call a non-function value", expr.callee);
|
|
27213
|
+
for (const arg of expr.args) {
|
|
27214
|
+
this.checkExpr(arg);
|
|
27215
|
+
}
|
|
27216
|
+
return;
|
|
27217
|
+
}
|
|
27218
|
+
this.checkFunctionCallArgs(expr.args, calleeType.params, "lambda", expr);
|
|
27219
|
+
}
|
|
27220
|
+
checkFunctionCallArgs(args, params, calleeName, node) {
|
|
27221
|
+
if (args.length !== params.length) {
|
|
27222
|
+
this.report(`Function '${calleeName}' expects ${params.length} arguments, got ${args.length}`, node);
|
|
27223
|
+
}
|
|
27224
|
+
for (let i = 0; i < args.length; i++) {
|
|
27225
|
+
const paramType = params[i];
|
|
27226
|
+
if (!paramType) {
|
|
27227
|
+
this.checkExpr(args[i]);
|
|
27228
|
+
continue;
|
|
27229
|
+
}
|
|
27230
|
+
this.checkExpr(args[i], paramType);
|
|
27231
|
+
const argType = this.inferType(args[i], paramType);
|
|
27232
|
+
if (!this.typesMatch(paramType, argType)) {
|
|
27233
|
+
this.report(`Argument ${i + 1} of '${calleeName}' expects ${this.typeToString(paramType)}, got ${this.typeToString(argType)}`, args[i]);
|
|
27234
|
+
}
|
|
27235
|
+
}
|
|
27236
|
+
}
|
|
27237
|
+
checkTpCall(expr) {
|
|
27238
|
+
const dest = expr.args[1];
|
|
27239
|
+
if (!dest) {
|
|
27240
|
+
return;
|
|
27241
|
+
}
|
|
27242
|
+
const destType = this.inferType(dest);
|
|
27243
|
+
if (destType.kind === "named" && destType.name === "BlockPos") {
|
|
27244
|
+
return;
|
|
27245
|
+
}
|
|
27246
|
+
if (dest.kind === "selector" && !dest.isSingle) {
|
|
27247
|
+
this.report("tp destination must be a single-entity selector (@s, @p, @r, or limit=1)", dest);
|
|
27248
|
+
}
|
|
27249
|
+
}
|
|
27250
|
+
checkMemberExpr(expr) {
|
|
27251
|
+
if (!(expr.obj.kind === "ident" && this.enums.has(expr.obj.name))) {
|
|
27252
|
+
this.checkExpr(expr.obj);
|
|
27253
|
+
}
|
|
27254
|
+
if (expr.obj.kind === "ident") {
|
|
27255
|
+
if (this.enums.has(expr.obj.name)) {
|
|
27256
|
+
const enumVariants = this.enums.get(expr.obj.name);
|
|
27257
|
+
if (!enumVariants.has(expr.field)) {
|
|
27258
|
+
this.report(`Enum '${expr.obj.name}' has no variant '${expr.field}'`, expr);
|
|
27259
|
+
}
|
|
27260
|
+
return;
|
|
27261
|
+
}
|
|
27262
|
+
const varSymbol = this.scope.get(expr.obj.name);
|
|
27263
|
+
const varType = varSymbol?.type;
|
|
27264
|
+
if (varType) {
|
|
27265
|
+
if (varType.kind === "struct") {
|
|
27266
|
+
const structFields = this.structs.get(varType.name);
|
|
27267
|
+
if (structFields && !structFields.has(expr.field)) {
|
|
27268
|
+
this.report(`Struct '${varType.name}' has no field '${expr.field}'`, expr);
|
|
27269
|
+
}
|
|
27270
|
+
} else if (varType.kind === "array") {
|
|
27271
|
+
if (expr.field !== "len" && expr.field !== "push" && expr.field !== "pop") {
|
|
27272
|
+
this.report(`Array has no field '${expr.field}'`, expr);
|
|
27273
|
+
}
|
|
27274
|
+
} else if (varType.kind === "named") {
|
|
27275
|
+
if (varType.name !== "void") {
|
|
27276
|
+
if (["int", "bool", "float", "fixed", "string", "byte", "short", "long", "double"].includes(varType.name)) {
|
|
27277
|
+
this.report(`Cannot access member '${expr.field}' on ${this.typeToString(varType)}`, expr);
|
|
27278
|
+
}
|
|
27279
|
+
}
|
|
27280
|
+
}
|
|
27281
|
+
}
|
|
27282
|
+
}
|
|
27283
|
+
}
|
|
27284
|
+
checkStaticCallExpr(expr) {
|
|
27285
|
+
if (expr.type === "Timer" && expr.method === "new") {
|
|
27286
|
+
if (this.loopDepth > 0) {
|
|
27287
|
+
this.report(`Timer::new() cannot be called inside a loop. Declare timers at the top level.`, expr);
|
|
27288
|
+
} else if (this.condDepth > 0) {
|
|
27289
|
+
this.report(`Timer::new() cannot be called inside an if/else body. Declare timers at the top level.`, expr);
|
|
27290
|
+
}
|
|
27291
|
+
}
|
|
27292
|
+
const method = this.implMethods.get(expr.type)?.get(expr.method);
|
|
27293
|
+
if (!method) {
|
|
27294
|
+
this.report(`Type '${expr.type}' has no static method '${expr.method}'`, expr);
|
|
27295
|
+
for (const arg of expr.args) {
|
|
27296
|
+
this.checkExpr(arg);
|
|
27297
|
+
}
|
|
27298
|
+
return;
|
|
27299
|
+
}
|
|
27300
|
+
if (method.params[0]?.name === "self") {
|
|
27301
|
+
this.report(`Method '${expr.type}::${expr.method}' is an instance method`, expr);
|
|
27302
|
+
return;
|
|
27303
|
+
}
|
|
27304
|
+
this.checkFunctionCallArgs(expr.args, method.params.map((param) => this.normalizeType(param.type)), `${expr.type}::${expr.method}`, expr);
|
|
27305
|
+
}
|
|
27306
|
+
checkLambdaExpr(expr, expectedType) {
|
|
27307
|
+
const normalizedExpected = expectedType ? this.normalizeType(expectedType) : void 0;
|
|
27308
|
+
const expectedFnType = normalizedExpected?.kind === "function_type" ? normalizedExpected : void 0;
|
|
27309
|
+
const lambdaType = this.inferLambdaType(expr, expectedFnType);
|
|
27310
|
+
if (expectedFnType && !this.typesMatch(expectedFnType, lambdaType)) {
|
|
27311
|
+
this.report(`Type mismatch: expected ${this.typeToString(expectedFnType)}, got ${this.typeToString(lambdaType)}`, expr);
|
|
27312
|
+
return;
|
|
27313
|
+
}
|
|
27314
|
+
const outerScope = this.scope;
|
|
27315
|
+
const outerReturnType = this.currentReturnType;
|
|
27316
|
+
const lambdaScope = new Map(this.scope);
|
|
27317
|
+
const paramTypes = expectedFnType?.params ?? lambdaType.params;
|
|
27318
|
+
for (let i = 0; i < expr.params.length; i++) {
|
|
27319
|
+
lambdaScope.set(expr.params[i].name, {
|
|
27320
|
+
type: paramTypes[i] ?? { kind: "named", name: "void" },
|
|
27321
|
+
mutable: true
|
|
27322
|
+
});
|
|
27323
|
+
}
|
|
27324
|
+
this.scope = lambdaScope;
|
|
27325
|
+
this.currentReturnType = expr.returnType ? this.normalizeType(expr.returnType) : expectedFnType?.return ?? lambdaType.return;
|
|
27326
|
+
if (Array.isArray(expr.body)) {
|
|
27327
|
+
this.checkBlock(expr.body);
|
|
27328
|
+
} else {
|
|
27329
|
+
this.checkExpr(expr.body, this.currentReturnType);
|
|
27330
|
+
const actualType = this.inferType(expr.body, this.currentReturnType);
|
|
27331
|
+
if (!this.typesMatch(this.currentReturnType, actualType)) {
|
|
27332
|
+
this.report(`Return type mismatch: expected ${this.typeToString(this.currentReturnType)}, got ${this.typeToString(actualType)}`, expr.body);
|
|
27333
|
+
}
|
|
27334
|
+
}
|
|
27335
|
+
this.scope = outerScope;
|
|
27336
|
+
this.currentReturnType = outerReturnType;
|
|
27337
|
+
}
|
|
27338
|
+
checkIfBranches(stmt) {
|
|
27339
|
+
const narrowed = this.getThenBranchNarrowing(stmt.cond);
|
|
27340
|
+
if (narrowed) {
|
|
27341
|
+
const thenScope = new Map(this.scope);
|
|
27342
|
+
thenScope.set(narrowed.name, { type: narrowed.type, mutable: narrowed.mutable });
|
|
27343
|
+
const outerScope = this.scope;
|
|
27344
|
+
this.scope = thenScope;
|
|
27345
|
+
this.checkBlock(stmt.then);
|
|
27346
|
+
this.scope = outerScope;
|
|
27347
|
+
} else {
|
|
27348
|
+
this.checkBlock(stmt.then);
|
|
27349
|
+
}
|
|
27350
|
+
if (stmt.else_) {
|
|
27351
|
+
this.checkBlock(stmt.else_);
|
|
27352
|
+
}
|
|
27353
|
+
}
|
|
27354
|
+
getThenBranchNarrowing(cond) {
|
|
27355
|
+
if (cond.kind !== "is_check" || cond.expr.kind !== "ident") {
|
|
27356
|
+
return null;
|
|
27357
|
+
}
|
|
27358
|
+
const symbol = this.scope.get(cond.expr.name);
|
|
27359
|
+
if (!symbol || symbol.type.kind !== "entity") {
|
|
27360
|
+
return null;
|
|
27361
|
+
}
|
|
27362
|
+
return {
|
|
27363
|
+
name: cond.expr.name,
|
|
27364
|
+
type: { kind: "entity", entityType: cond.entityType },
|
|
27365
|
+
mutable: symbol.mutable
|
|
27366
|
+
};
|
|
27367
|
+
}
|
|
27368
|
+
inferType(expr, expectedType) {
|
|
27369
|
+
switch (expr.kind) {
|
|
27370
|
+
case "int_lit":
|
|
27371
|
+
return { kind: "named", name: "int" };
|
|
27372
|
+
case "float_lit":
|
|
27373
|
+
return { kind: "named", name: "fixed" };
|
|
27374
|
+
case "byte_lit":
|
|
27375
|
+
return { kind: "named", name: "byte" };
|
|
27376
|
+
case "short_lit":
|
|
27377
|
+
return { kind: "named", name: "short" };
|
|
27378
|
+
case "long_lit":
|
|
27379
|
+
return { kind: "named", name: "long" };
|
|
27380
|
+
case "double_lit":
|
|
27381
|
+
return { kind: "named", name: "double" };
|
|
27382
|
+
case "bool_lit":
|
|
27383
|
+
return { kind: "named", name: "bool" };
|
|
27384
|
+
case "str_lit":
|
|
27385
|
+
case "mc_name":
|
|
27386
|
+
return { kind: "named", name: "string" };
|
|
27387
|
+
case "str_interp":
|
|
27388
|
+
for (const part of expr.parts) {
|
|
27389
|
+
if (typeof part !== "string") {
|
|
27390
|
+
this.checkExpr(part);
|
|
27391
|
+
}
|
|
27392
|
+
}
|
|
27393
|
+
return { kind: "named", name: "string" };
|
|
27394
|
+
case "f_string":
|
|
27395
|
+
for (const part of expr.parts) {
|
|
27396
|
+
if (part.kind === "expr") {
|
|
27397
|
+
this.checkExpr(part.expr);
|
|
27398
|
+
}
|
|
27399
|
+
}
|
|
27400
|
+
return FORMAT_STRING_TYPE;
|
|
27401
|
+
case "blockpos":
|
|
27402
|
+
return { kind: "named", name: "BlockPos" };
|
|
27403
|
+
case "ident":
|
|
27404
|
+
return this.scope.get(expr.name)?.type ?? { kind: "named", name: "void" };
|
|
27405
|
+
case "call": {
|
|
27406
|
+
const builtin = BUILTIN_SIGNATURES[expr.fn];
|
|
27407
|
+
if (builtin) {
|
|
27408
|
+
return builtin.return;
|
|
27409
|
+
}
|
|
27410
|
+
if (expr.fn === "__array_push") {
|
|
27411
|
+
return VOID_TYPE;
|
|
27412
|
+
}
|
|
27413
|
+
if (expr.fn === "__array_pop") {
|
|
27414
|
+
const target = expr.args[0];
|
|
27415
|
+
if (target && target.kind === "ident") {
|
|
27416
|
+
const targetType = this.scope.get(target.name)?.type;
|
|
27417
|
+
if (targetType?.kind === "array")
|
|
27418
|
+
return targetType.elem;
|
|
27419
|
+
}
|
|
27420
|
+
return INT_TYPE;
|
|
27421
|
+
}
|
|
27422
|
+
if (expr.fn === "bossbar_get_value") {
|
|
27423
|
+
return INT_TYPE;
|
|
27424
|
+
}
|
|
27425
|
+
if (expr.fn === "random_sequence") {
|
|
27426
|
+
return VOID_TYPE;
|
|
27427
|
+
}
|
|
27428
|
+
const varType = this.scope.get(expr.fn)?.type;
|
|
27429
|
+
if (varType?.kind === "function_type") {
|
|
27430
|
+
return varType.return;
|
|
27431
|
+
}
|
|
27432
|
+
const implMethod = this.resolveInstanceMethod(expr);
|
|
27433
|
+
if (implMethod) {
|
|
27434
|
+
return this.normalizeType(implMethod.returnType);
|
|
27435
|
+
}
|
|
27436
|
+
const fn = this.functions.get(expr.fn);
|
|
27437
|
+
if (fn) {
|
|
27438
|
+
if (fn.typeParams && fn.typeParams.length > 0) {
|
|
27439
|
+
return expectedType ?? INT_TYPE;
|
|
27440
|
+
}
|
|
27441
|
+
return this.normalizeType(fn.returnType);
|
|
27442
|
+
}
|
|
27443
|
+
return INT_TYPE;
|
|
27444
|
+
}
|
|
27445
|
+
case "static_call": {
|
|
27446
|
+
const method = this.implMethods.get(expr.type)?.get(expr.method);
|
|
27447
|
+
return method ? this.normalizeType(method.returnType) : { kind: "named", name: "void" };
|
|
27448
|
+
}
|
|
27449
|
+
case "invoke": {
|
|
27450
|
+
const calleeType = this.inferType(expr.callee);
|
|
27451
|
+
if (calleeType.kind === "function_type") {
|
|
27452
|
+
return calleeType.return;
|
|
27453
|
+
}
|
|
27454
|
+
return { kind: "named", name: "void" };
|
|
27455
|
+
}
|
|
27456
|
+
case "path_expr":
|
|
27457
|
+
if (this.enums.has(expr.enumName)) {
|
|
27458
|
+
return { kind: "enum", name: expr.enumName };
|
|
27459
|
+
}
|
|
27460
|
+
return { kind: "named", name: "void" };
|
|
27461
|
+
case "member":
|
|
27462
|
+
if (expr.obj.kind === "ident" && this.enums.has(expr.obj.name)) {
|
|
27463
|
+
return { kind: "enum", name: expr.obj.name };
|
|
27464
|
+
}
|
|
27465
|
+
if (expr.obj.kind === "ident") {
|
|
27466
|
+
const objTypeNode = this.scope.get(expr.obj.name)?.type;
|
|
27467
|
+
if (objTypeNode?.kind === "array" && expr.field === "len") {
|
|
27468
|
+
return { kind: "named", name: "int" };
|
|
27469
|
+
}
|
|
27470
|
+
}
|
|
27471
|
+
return { kind: "named", name: "void" };
|
|
27472
|
+
case "index": {
|
|
27473
|
+
const objType = this.inferType(expr.obj);
|
|
27474
|
+
if (objType.kind === "array")
|
|
27475
|
+
return objType.elem;
|
|
27476
|
+
return { kind: "named", name: "void" };
|
|
27477
|
+
}
|
|
27478
|
+
case "binary":
|
|
27479
|
+
if (["==", "!=", "<", "<=", ">", ">=", "&&", "||"].includes(expr.op)) {
|
|
27480
|
+
return { kind: "named", name: "bool" };
|
|
27481
|
+
}
|
|
27482
|
+
return this.inferType(expr.left);
|
|
27483
|
+
case "is_check":
|
|
27484
|
+
return { kind: "named", name: "bool" };
|
|
27485
|
+
case "unary":
|
|
27486
|
+
if (expr.op === "!")
|
|
27487
|
+
return { kind: "named", name: "bool" };
|
|
27488
|
+
return this.inferType(expr.operand);
|
|
27489
|
+
case "selector": {
|
|
27490
|
+
const entityType = this.inferEntityTypeFromSelector(expr.sel);
|
|
27491
|
+
return { kind: "selector", entityType: entityType ?? void 0 };
|
|
27492
|
+
}
|
|
27493
|
+
case "array_lit":
|
|
27494
|
+
if (expr.elements.length > 0) {
|
|
27495
|
+
return { kind: "array", elem: this.inferType(expr.elements[0]) };
|
|
27496
|
+
}
|
|
27497
|
+
return { kind: "array", elem: { kind: "named", name: "int" } };
|
|
27498
|
+
case "struct_lit":
|
|
27499
|
+
if (expectedType) {
|
|
27500
|
+
const normalized = this.normalizeType(expectedType);
|
|
27501
|
+
if (normalized.kind === "struct") {
|
|
27502
|
+
return normalized;
|
|
27503
|
+
}
|
|
27504
|
+
}
|
|
27505
|
+
return { kind: "named", name: "void" };
|
|
27506
|
+
case "tuple_lit":
|
|
27507
|
+
return {
|
|
27508
|
+
kind: "tuple",
|
|
27509
|
+
elements: expr.elements.map((e) => this.inferType(e))
|
|
27510
|
+
};
|
|
27511
|
+
case "some_lit": {
|
|
27512
|
+
const innerType = this.inferType(expr.value, expectedType?.kind === "option" ? expectedType.inner : void 0);
|
|
27513
|
+
return { kind: "option", inner: innerType };
|
|
27514
|
+
}
|
|
27515
|
+
case "none_lit": {
|
|
27516
|
+
if (expectedType?.kind === "option")
|
|
27517
|
+
return expectedType;
|
|
27518
|
+
return { kind: "option", inner: { kind: "named", name: "void" } };
|
|
27519
|
+
}
|
|
27520
|
+
case "type_cast":
|
|
27521
|
+
return this.normalizeType(expr.targetType);
|
|
27522
|
+
case "lambda":
|
|
27523
|
+
return this.inferLambdaType(expr, expectedType && this.normalizeType(expectedType).kind === "function_type" ? this.normalizeType(expectedType) : void 0);
|
|
27524
|
+
default:
|
|
27525
|
+
return { kind: "named", name: "void" };
|
|
27526
|
+
}
|
|
27527
|
+
}
|
|
27528
|
+
inferLambdaType(expr, expectedType) {
|
|
27529
|
+
const params = expr.params.map((param, index) => {
|
|
27530
|
+
if (param.type) {
|
|
27531
|
+
return this.normalizeType(param.type);
|
|
27532
|
+
}
|
|
27533
|
+
const inferred = expectedType?.params[index];
|
|
27534
|
+
if (inferred) {
|
|
27535
|
+
return inferred;
|
|
27536
|
+
}
|
|
27537
|
+
this.report(`Lambda parameter '${param.name}' requires a type annotation`, expr);
|
|
27538
|
+
return { kind: "named", name: "void" };
|
|
27539
|
+
});
|
|
27540
|
+
let returnType = expr.returnType ? this.normalizeType(expr.returnType) : expectedType?.return;
|
|
27541
|
+
if (!returnType) {
|
|
27542
|
+
returnType = Array.isArray(expr.body) ? { kind: "named", name: "void" } : this.inferType(expr.body);
|
|
27543
|
+
}
|
|
27544
|
+
return { kind: "function_type", params, return: returnType };
|
|
27545
|
+
}
|
|
27546
|
+
// ---------------------------------------------------------------------------
|
|
27547
|
+
// Entity Type Helpers
|
|
27548
|
+
// ---------------------------------------------------------------------------
|
|
27549
|
+
/** Infer entity type from a selector */
|
|
27550
|
+
inferEntityTypeFromSelector(selector) {
|
|
27551
|
+
if (selector.kind === "@a" || selector.kind === "@p" || selector.kind === "@r") {
|
|
27552
|
+
return "Player";
|
|
27553
|
+
}
|
|
27554
|
+
if (selector.filters?.type) {
|
|
27555
|
+
const mcType = selector.filters.type.toLowerCase();
|
|
27556
|
+
return MC_TYPE_TO_ENTITY[mcType] ?? "entity";
|
|
27557
|
+
}
|
|
27558
|
+
if (selector.kind === "@s") {
|
|
27559
|
+
return this.selfTypeStack[this.selfTypeStack.length - 1];
|
|
27560
|
+
}
|
|
27561
|
+
return "entity";
|
|
27562
|
+
}
|
|
27563
|
+
resolveInstanceMethod(expr) {
|
|
27564
|
+
const receiver = expr.args[0];
|
|
27565
|
+
if (!receiver) {
|
|
27566
|
+
return null;
|
|
27567
|
+
}
|
|
27568
|
+
const receiverType = this.inferType(receiver);
|
|
27569
|
+
if (receiverType.kind !== "struct") {
|
|
27570
|
+
return null;
|
|
27571
|
+
}
|
|
27572
|
+
const method = this.implMethods.get(receiverType.name)?.get(expr.fn);
|
|
27573
|
+
if (!method || method.params[0]?.name !== "self") {
|
|
27574
|
+
return null;
|
|
27575
|
+
}
|
|
27576
|
+
return method;
|
|
27577
|
+
}
|
|
27578
|
+
/** Check if childType is a subtype of parentType */
|
|
27579
|
+
isEntitySubtype(childType, parentType) {
|
|
27580
|
+
if (childType === parentType)
|
|
27581
|
+
return true;
|
|
27582
|
+
let current = childType;
|
|
27583
|
+
while (current !== null) {
|
|
27584
|
+
if (current === parentType)
|
|
27585
|
+
return true;
|
|
27586
|
+
current = ENTITY_HIERARCHY[current];
|
|
27587
|
+
}
|
|
27588
|
+
return false;
|
|
27589
|
+
}
|
|
27590
|
+
/** Push a new self type context */
|
|
27591
|
+
pushSelfType(entityType) {
|
|
27592
|
+
this.selfTypeStack.push(entityType);
|
|
27593
|
+
}
|
|
27594
|
+
/** Pop self type context */
|
|
27595
|
+
popSelfType() {
|
|
27596
|
+
if (this.selfTypeStack.length > 1) {
|
|
27597
|
+
this.selfTypeStack.pop();
|
|
27598
|
+
}
|
|
27599
|
+
}
|
|
27600
|
+
/** Get current @s type */
|
|
27601
|
+
getCurrentSelfType() {
|
|
27602
|
+
return this.selfTypeStack[this.selfTypeStack.length - 1];
|
|
27603
|
+
}
|
|
27604
|
+
/** Returns true if expected/actual are a numeric type mismatch (int vs float/fixed/double).
|
|
27605
|
+
* These pairs are NOT implicitly compatible — require explicit `as` cast.
|
|
27606
|
+
* Only int↔byte/short/long remain implicitly compatible (MC NBT narrowing). */
|
|
27607
|
+
isNumericMismatch(expected, actual) {
|
|
27608
|
+
if (expected.kind !== "named" || actual.kind !== "named")
|
|
27609
|
+
return false;
|
|
27610
|
+
const numericPairs = [
|
|
27611
|
+
["int", "float"],
|
|
27612
|
+
["float", "int"],
|
|
27613
|
+
["int", "fixed"],
|
|
27614
|
+
["fixed", "int"],
|
|
27615
|
+
["int", "double"],
|
|
27616
|
+
["double", "int"],
|
|
27617
|
+
["float", "double"],
|
|
27618
|
+
["double", "float"],
|
|
27619
|
+
["fixed", "double"],
|
|
27620
|
+
["double", "fixed"]
|
|
27621
|
+
// float and fixed are compatible (float is deprecated alias for fixed)
|
|
27622
|
+
];
|
|
27623
|
+
return numericPairs.some(([e, a]) => expected.name === e && actual.name === a);
|
|
27624
|
+
}
|
|
27625
|
+
typesMatch(expected, actual) {
|
|
27626
|
+
if (expected.kind === "named" && expected.name === "int" && actual.kind === "enum") {
|
|
27627
|
+
return true;
|
|
27628
|
+
}
|
|
27629
|
+
if (expected.kind === "enum" && actual.kind === "named" && actual.name === "int") {
|
|
27630
|
+
return true;
|
|
27631
|
+
}
|
|
27632
|
+
if (expected.kind === "selector" && actual.kind === "entity") {
|
|
27633
|
+
return true;
|
|
27634
|
+
}
|
|
27635
|
+
if (expected.kind === "entity" && actual.kind === "selector") {
|
|
27636
|
+
return true;
|
|
27637
|
+
}
|
|
27638
|
+
if (expected.kind === "entity" && actual.kind === "entity") {
|
|
27639
|
+
return this.isEntitySubtype(actual.entityType, expected.entityType);
|
|
27640
|
+
}
|
|
27641
|
+
if (expected.kind === "selector" && actual.kind === "selector") {
|
|
27642
|
+
return true;
|
|
27643
|
+
}
|
|
27644
|
+
if (expected.kind !== actual.kind)
|
|
27645
|
+
return false;
|
|
27646
|
+
if (expected.kind === "named" && actual.kind === "named") {
|
|
27647
|
+
if (actual.name === "void")
|
|
27648
|
+
return true;
|
|
27649
|
+
if (expected.name === actual.name)
|
|
27650
|
+
return true;
|
|
27651
|
+
const floatFixed = (expected.name === "float" || expected.name === "fixed") && (actual.name === "float" || actual.name === "fixed");
|
|
27652
|
+
if (floatFixed)
|
|
27653
|
+
return true;
|
|
27654
|
+
const nbtNarrowing = [
|
|
27655
|
+
["int", "byte"],
|
|
27656
|
+
["byte", "int"],
|
|
27657
|
+
["int", "short"],
|
|
27658
|
+
["short", "int"],
|
|
27659
|
+
["int", "long"],
|
|
27660
|
+
["long", "int"]
|
|
27661
|
+
];
|
|
27662
|
+
if (nbtNarrowing.some(([e, a]) => expected.name === e && actual.name === a))
|
|
27663
|
+
return true;
|
|
27664
|
+
return false;
|
|
27665
|
+
}
|
|
27666
|
+
if (expected.kind === "array" && actual.kind === "array") {
|
|
27667
|
+
return this.typesMatch(expected.elem, actual.elem);
|
|
27668
|
+
}
|
|
27669
|
+
if (expected.kind === "struct" && actual.kind === "struct") {
|
|
27670
|
+
return expected.name === actual.name;
|
|
27671
|
+
}
|
|
27672
|
+
if (expected.kind === "enum" && actual.kind === "enum") {
|
|
27673
|
+
return expected.name === actual.name;
|
|
27674
|
+
}
|
|
27675
|
+
if (expected.kind === "function_type" && actual.kind === "function_type") {
|
|
27676
|
+
return expected.params.length === actual.params.length && expected.params.every((param, index) => this.typesMatch(param, actual.params[index])) && this.typesMatch(expected.return, actual.return);
|
|
27677
|
+
}
|
|
27678
|
+
if (expected.kind === "tuple" && actual.kind === "tuple") {
|
|
27679
|
+
return expected.elements.length === actual.elements.length && expected.elements.every((elem, i) => this.typesMatch(elem, actual.elements[i]));
|
|
27680
|
+
}
|
|
27681
|
+
if (expected.kind === "option" && actual.kind === "option") {
|
|
27682
|
+
return this.typesMatch(expected.inner, actual.inner);
|
|
27683
|
+
}
|
|
27684
|
+
if (expected.kind === "option" && actual.kind === "named" && actual.name === "void") {
|
|
27685
|
+
return true;
|
|
27686
|
+
}
|
|
27687
|
+
return false;
|
|
27688
|
+
}
|
|
27689
|
+
typeToString(type) {
|
|
27690
|
+
switch (type.kind) {
|
|
27691
|
+
case "named":
|
|
27692
|
+
return type.name;
|
|
27693
|
+
case "array":
|
|
27694
|
+
return `${this.typeToString(type.elem)}[]`;
|
|
27695
|
+
case "struct":
|
|
27696
|
+
return type.name;
|
|
27697
|
+
case "enum":
|
|
27698
|
+
return type.name;
|
|
27699
|
+
case "function_type":
|
|
27700
|
+
return `(${type.params.map((param) => this.typeToString(param)).join(", ")}) -> ${this.typeToString(type.return)}`;
|
|
27701
|
+
case "entity":
|
|
27702
|
+
return type.entityType;
|
|
27703
|
+
case "selector":
|
|
27704
|
+
return "selector";
|
|
27705
|
+
case "tuple":
|
|
27706
|
+
return `(${type.elements.map((e) => this.typeToString(e)).join(", ")})`;
|
|
27707
|
+
case "option":
|
|
27708
|
+
return `Option<${this.typeToString(type.inner)}>`;
|
|
27709
|
+
default:
|
|
27710
|
+
return "unknown";
|
|
27711
|
+
}
|
|
27712
|
+
}
|
|
27713
|
+
normalizeType(type) {
|
|
27714
|
+
if (type.kind === "array") {
|
|
27715
|
+
return { kind: "array", elem: this.normalizeType(type.elem) };
|
|
27716
|
+
}
|
|
27717
|
+
if (type.kind === "option") {
|
|
27718
|
+
return { kind: "option", inner: this.normalizeType(type.inner) };
|
|
27719
|
+
}
|
|
27720
|
+
if (type.kind === "tuple") {
|
|
27721
|
+
return { kind: "tuple", elements: type.elements.map((e) => this.normalizeType(e)) };
|
|
27722
|
+
}
|
|
27723
|
+
if (type.kind === "function_type") {
|
|
27724
|
+
return {
|
|
27725
|
+
kind: "function_type",
|
|
27726
|
+
params: type.params.map((param) => this.normalizeType(param)),
|
|
27727
|
+
return: this.normalizeType(type.return)
|
|
27728
|
+
};
|
|
27729
|
+
}
|
|
27730
|
+
if ((type.kind === "struct" || type.kind === "enum") && this.enums.has(type.name)) {
|
|
27731
|
+
return { kind: "enum", name: type.name };
|
|
27732
|
+
}
|
|
27733
|
+
if (type.kind === "struct" && type.name in ENTITY_HIERARCHY) {
|
|
27734
|
+
return { kind: "entity", entityType: type.name };
|
|
27735
|
+
}
|
|
27736
|
+
if (type.kind === "named" && type.name in ENTITY_HIERARCHY) {
|
|
27737
|
+
return { kind: "entity", entityType: type.name };
|
|
27738
|
+
}
|
|
27739
|
+
return type;
|
|
27740
|
+
}
|
|
27741
|
+
};
|
|
27742
|
+
exports2.TypeChecker = TypeChecker;
|
|
27743
|
+
}
|
|
27744
|
+
});
|
|
27745
|
+
|
|
27746
|
+
// ../../dist/src/emit/compile.js
|
|
27747
|
+
var require_compile2 = __commonJS({
|
|
27748
|
+
"../../dist/src/emit/compile.js"(exports2) {
|
|
27749
|
+
"use strict";
|
|
27750
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
27751
|
+
exports2.compile = compile;
|
|
27752
|
+
var lexer_1 = require_lexer();
|
|
27753
|
+
var parser_1 = require_parser();
|
|
27754
|
+
var compile_1 = require_compile();
|
|
27755
|
+
var diagnostics_1 = require_diagnostics();
|
|
27756
|
+
var lower_1 = require_lower();
|
|
27757
|
+
var monomorphize_1 = require_monomorphize();
|
|
27758
|
+
var lower_2 = require_lower2();
|
|
27759
|
+
var pipeline_1 = require_pipeline();
|
|
27760
|
+
var lower_3 = require_lower3();
|
|
27761
|
+
var pipeline_2 = require_pipeline2();
|
|
27762
|
+
var index_1 = require_emit();
|
|
27763
|
+
var coroutine_1 = require_coroutine();
|
|
27764
|
+
var budget_1 = require_budget();
|
|
27765
|
+
var mc_version_1 = require_mc_version();
|
|
27766
|
+
var typechecker_1 = require_typechecker();
|
|
27767
|
+
function compile(source, options = {}) {
|
|
27768
|
+
const { namespace = "redscript", filePath, generateSourceMap = false, mcVersion = mc_version_1.DEFAULT_MC_VERSION, lenient = false, includeDirs } = options;
|
|
27769
|
+
const warnings = [];
|
|
27770
|
+
const preprocessed = (0, compile_1.preprocessSourceWithMetadata)(source, { filePath, includeDirs });
|
|
27771
|
+
const processedSource = preprocessed.source;
|
|
27772
|
+
const lexer = new lexer_1.Lexer(processedSource);
|
|
27773
|
+
const tokens = lexer.tokenize();
|
|
27774
|
+
const parser = new parser_1.Parser(tokens, processedSource, filePath);
|
|
27775
|
+
const ast = parser.parse(namespace);
|
|
27776
|
+
warnings.push(...parser.warnings);
|
|
27777
|
+
for (const li of preprocessed.libraryImports ?? []) {
|
|
27778
|
+
const libPreprocessed = (0, compile_1.preprocessSourceWithMetadata)(li.source, { filePath: li.filePath });
|
|
27779
|
+
const libTokens = new lexer_1.Lexer(libPreprocessed.source, li.filePath).tokenize();
|
|
27780
|
+
const libParser = new parser_1.Parser(libTokens, libPreprocessed.source, li.filePath);
|
|
27781
|
+
const libAst = libParser.parse(namespace);
|
|
27782
|
+
warnings.push(...libParser.warnings);
|
|
27783
|
+
for (const fn of libAst.declarations)
|
|
27784
|
+
fn.isLibraryFn = true;
|
|
27785
|
+
ast.declarations.push(...libAst.declarations);
|
|
27786
|
+
ast.structs.push(...libAst.structs);
|
|
27787
|
+
ast.implBlocks.push(...libAst.implBlocks);
|
|
27788
|
+
ast.enums.push(...libAst.enums);
|
|
27789
|
+
ast.consts.push(...libAst.consts);
|
|
27790
|
+
ast.globals.push(...libAst.globals);
|
|
27791
|
+
}
|
|
27792
|
+
if (options.librarySources) {
|
|
27793
|
+
for (const libSrc of options.librarySources) {
|
|
27794
|
+
const libTokens = new lexer_1.Lexer(libSrc).tokenize();
|
|
27795
|
+
const libAst = new parser_1.Parser(libTokens, libSrc).parse(namespace);
|
|
27796
|
+
for (const fn of libAst.declarations)
|
|
27797
|
+
fn.isLibraryFn = true;
|
|
27798
|
+
ast.declarations.push(...libAst.declarations);
|
|
27799
|
+
ast.structs.push(...libAst.structs);
|
|
27800
|
+
ast.implBlocks.push(...libAst.implBlocks);
|
|
27801
|
+
ast.enums.push(...libAst.enums);
|
|
27802
|
+
ast.consts.push(...libAst.consts);
|
|
27803
|
+
ast.globals.push(...libAst.globals);
|
|
27804
|
+
}
|
|
27805
|
+
}
|
|
27806
|
+
{
|
|
27807
|
+
const checker = new typechecker_1.TypeChecker(processedSource, filePath);
|
|
27808
|
+
const typeErrors = checker.check(ast);
|
|
27809
|
+
warnings.push(...checker.getWarnings());
|
|
27810
|
+
if (typeErrors.length > 0) {
|
|
27811
|
+
if (lenient) {
|
|
27812
|
+
for (const e of typeErrors) {
|
|
27813
|
+
warnings.push(`[TypeError] line ${e.location.line}, col ${e.location.col}: ${e.message}`);
|
|
27814
|
+
}
|
|
27815
|
+
} else {
|
|
27816
|
+
throw typeErrors[0];
|
|
27817
|
+
}
|
|
27818
|
+
}
|
|
27819
|
+
}
|
|
27820
|
+
try {
|
|
27821
|
+
const hirRaw = (0, lower_1.lowerToHIR)(ast);
|
|
25349
27822
|
const hir = (0, monomorphize_1.monomorphize)(hirRaw);
|
|
25350
27823
|
const tickFunctions = [];
|
|
25351
27824
|
const loadFunctions = [];
|
|
25352
27825
|
const coroutineInfos = [];
|
|
27826
|
+
const scheduleFunctions = [];
|
|
25353
27827
|
for (const fn of hir.functions) {
|
|
25354
27828
|
for (const dec of fn.decorators) {
|
|
25355
27829
|
if (dec.name === "tick")
|
|
@@ -25363,6 +27837,9 @@ var require_compile2 = __commonJS({
|
|
|
25363
27837
|
onDone: dec.args?.onDone
|
|
25364
27838
|
});
|
|
25365
27839
|
}
|
|
27840
|
+
if (dec.name === "schedule") {
|
|
27841
|
+
scheduleFunctions.push({ name: fn.name, ticks: dec.args?.ticks ?? 1 });
|
|
27842
|
+
}
|
|
25366
27843
|
}
|
|
25367
27844
|
}
|
|
25368
27845
|
const mir = (0, lower_2.lowerToMIR)(hir, filePath);
|
|
@@ -25370,6 +27847,7 @@ var require_compile2 = __commonJS({
|
|
|
25370
27847
|
const coroResult = (0, coroutine_1.coroutineTransform)(mirOpt, coroutineInfos);
|
|
25371
27848
|
const mirFinal = coroResult.module;
|
|
25372
27849
|
tickFunctions.push(...coroResult.generatedTickFunctions);
|
|
27850
|
+
warnings.push(...coroResult.warnings);
|
|
25373
27851
|
const lir = (0, lower_3.lowerToLIR)(mirFinal);
|
|
25374
27852
|
const lirOpt = (0, pipeline_2.lirOptimizeModule)(lir);
|
|
25375
27853
|
const coroutineNames = new Set(coroutineInfos.map((c) => c.fnName));
|
|
@@ -25380,7 +27858,16 @@ var require_compile2 = __commonJS({
|
|
|
25380
27858
|
}
|
|
25381
27859
|
warnings.push(diag.message);
|
|
25382
27860
|
}
|
|
25383
|
-
const
|
|
27861
|
+
const INT32_MAX = 2147483647;
|
|
27862
|
+
const INT32_MIN = -2147483648;
|
|
27863
|
+
for (const fn of lirOpt.functions) {
|
|
27864
|
+
for (const instr of fn.instructions) {
|
|
27865
|
+
if (instr.kind === "score_set" && (instr.value > INT32_MAX || instr.value < INT32_MIN)) {
|
|
27866
|
+
warnings.push(`[ConstantOverflow] function '${fn.name}': scoreboard immediate ${instr.value} is outside MC int32 range [${INT32_MIN}, ${INT32_MAX}]. This indicates a constant-folding overflow bug \u2014 please report this.`);
|
|
27867
|
+
}
|
|
27868
|
+
}
|
|
27869
|
+
}
|
|
27870
|
+
const files = (0, index_1.emit)(lirOpt, { namespace, tickFunctions, loadFunctions, scheduleFunctions, generateSourceMap, mcVersion });
|
|
25384
27871
|
return { files, warnings, success: true };
|
|
25385
27872
|
} catch (err) {
|
|
25386
27873
|
if (err instanceof diagnostics_1.DiagnosticError)
|
|
@@ -25392,6 +27879,419 @@ var require_compile2 = __commonJS({
|
|
|
25392
27879
|
}
|
|
25393
27880
|
});
|
|
25394
27881
|
|
|
27882
|
+
// ../../dist/src/emit/modules.js
|
|
27883
|
+
var require_modules = __commonJS({
|
|
27884
|
+
"../../dist/src/emit/modules.js"(exports2) {
|
|
27885
|
+
"use strict";
|
|
27886
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
27887
|
+
exports2.compileModules = compileModules;
|
|
27888
|
+
var lexer_1 = require_lexer();
|
|
27889
|
+
var parser_1 = require_parser();
|
|
27890
|
+
var diagnostics_1 = require_diagnostics();
|
|
27891
|
+
var lower_1 = require_lower();
|
|
27892
|
+
var monomorphize_1 = require_monomorphize();
|
|
27893
|
+
var lower_2 = require_lower2();
|
|
27894
|
+
var pipeline_1 = require_pipeline();
|
|
27895
|
+
var lower_3 = require_lower3();
|
|
27896
|
+
var pipeline_2 = require_pipeline2();
|
|
27897
|
+
var index_1 = require_emit();
|
|
27898
|
+
var coroutine_1 = require_coroutine();
|
|
27899
|
+
function compileModules(modules, options = {}) {
|
|
27900
|
+
const namespace = options.namespace ?? "redscript";
|
|
27901
|
+
const warnings = [];
|
|
27902
|
+
if (modules.length === 0) {
|
|
27903
|
+
throw new diagnostics_1.DiagnosticError("LoweringError", "No modules provided", { line: 1, col: 1 });
|
|
27904
|
+
}
|
|
27905
|
+
const parsedModules = /* @__PURE__ */ new Map();
|
|
27906
|
+
for (const mod of modules) {
|
|
27907
|
+
const lexer = new lexer_1.Lexer(mod.source, mod.filePath);
|
|
27908
|
+
const tokens = lexer.tokenize();
|
|
27909
|
+
const parser = new parser_1.Parser(tokens, mod.source, mod.filePath);
|
|
27910
|
+
const ast = parser.parse(namespace);
|
|
27911
|
+
const declaredName = ast.moduleName;
|
|
27912
|
+
if (declaredName && declaredName !== mod.name) {
|
|
27913
|
+
throw new diagnostics_1.DiagnosticError("LoweringError", `Module declares name '${declaredName}' but was registered as '${mod.name}'`, { file: mod.filePath, line: 1, col: 1 });
|
|
27914
|
+
}
|
|
27915
|
+
parsedModules.set(mod.name, ast);
|
|
27916
|
+
}
|
|
27917
|
+
const exportTable = /* @__PURE__ */ new Map();
|
|
27918
|
+
for (const [modName, ast] of parsedModules) {
|
|
27919
|
+
const exports3 = /* @__PURE__ */ new Set();
|
|
27920
|
+
for (const fn of ast.declarations) {
|
|
27921
|
+
if (fn.isExported)
|
|
27922
|
+
exports3.add(fn.name);
|
|
27923
|
+
}
|
|
27924
|
+
exportTable.set(modName, exports3);
|
|
27925
|
+
}
|
|
27926
|
+
detectCircularImports(parsedModules);
|
|
27927
|
+
const importMap = /* @__PURE__ */ new Map();
|
|
27928
|
+
for (const [modName, ast] of parsedModules) {
|
|
27929
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
27930
|
+
for (const imp of ast.imports) {
|
|
27931
|
+
const sourceExports = exportTable.get(imp.moduleName);
|
|
27932
|
+
if (!sourceExports) {
|
|
27933
|
+
throw new diagnostics_1.DiagnosticError("LoweringError", `Module '${imp.moduleName}' not found (imported in '${modName}')`, { file: ast.namespace, line: 1, col: 1 });
|
|
27934
|
+
}
|
|
27935
|
+
if (imp.symbol === "*") {
|
|
27936
|
+
for (const sym of sourceExports) {
|
|
27937
|
+
resolved.set(sym, `${imp.moduleName}/${sym}`);
|
|
27938
|
+
}
|
|
27939
|
+
} else {
|
|
27940
|
+
if (!sourceExports.has(imp.symbol)) {
|
|
27941
|
+
throw new diagnostics_1.DiagnosticError("LoweringError", `Module '${imp.moduleName}' does not export '${imp.symbol}'`, { line: 1, col: 1 });
|
|
27942
|
+
}
|
|
27943
|
+
resolved.set(imp.symbol, `${imp.moduleName}/${imp.symbol}`);
|
|
27944
|
+
}
|
|
27945
|
+
}
|
|
27946
|
+
importMap.set(modName, resolved);
|
|
27947
|
+
}
|
|
27948
|
+
const usedExports = /* @__PURE__ */ new Map();
|
|
27949
|
+
for (const modName of parsedModules.keys()) {
|
|
27950
|
+
usedExports.set(modName, /* @__PURE__ */ new Set());
|
|
27951
|
+
}
|
|
27952
|
+
for (const ast of parsedModules.values()) {
|
|
27953
|
+
for (const imp of ast.imports) {
|
|
27954
|
+
const used = usedExports.get(imp.moduleName);
|
|
27955
|
+
if (!used)
|
|
27956
|
+
continue;
|
|
27957
|
+
if (imp.symbol === "*") {
|
|
27958
|
+
const exports3 = exportTable.get(imp.moduleName);
|
|
27959
|
+
if (exports3)
|
|
27960
|
+
for (const s of exports3)
|
|
27961
|
+
used.add(s);
|
|
27962
|
+
} else {
|
|
27963
|
+
used.add(imp.symbol);
|
|
27964
|
+
}
|
|
27965
|
+
}
|
|
27966
|
+
}
|
|
27967
|
+
const allFiles = [];
|
|
27968
|
+
const libraryFilePaths = /* @__PURE__ */ new Set();
|
|
27969
|
+
let packMetaEmitted = false;
|
|
27970
|
+
for (const mod of modules) {
|
|
27971
|
+
const ast = parsedModules.get(mod.name);
|
|
27972
|
+
const symbolMap = importMap.get(mod.name) ?? /* @__PURE__ */ new Map();
|
|
27973
|
+
const isNamed = !!ast.moduleName;
|
|
27974
|
+
if (symbolMap.size > 0) {
|
|
27975
|
+
rewriteCallsInProgram(ast, symbolMap);
|
|
27976
|
+
}
|
|
27977
|
+
const unusedExportedFns = /* @__PURE__ */ new Set();
|
|
27978
|
+
if (isNamed) {
|
|
27979
|
+
const used = usedExports.get(mod.name) ?? /* @__PURE__ */ new Set();
|
|
27980
|
+
for (const fn of ast.declarations) {
|
|
27981
|
+
fn.name = `${mod.name}/${fn.name}`;
|
|
27982
|
+
const baseName = fn.name.split("/").pop();
|
|
27983
|
+
if (fn.isExported && !used.has(baseName)) {
|
|
27984
|
+
unusedExportedFns.add(fn.name);
|
|
27985
|
+
}
|
|
27986
|
+
}
|
|
27987
|
+
}
|
|
27988
|
+
const objective = isNamed ? `__${namespace}_${mod.name}` : `__${namespace}`;
|
|
27989
|
+
const modFiles = compileSingleModule(ast, namespace, objective, isNamed ? mod.name : void 0, mod.filePath);
|
|
27990
|
+
warnings.push(...modFiles.warnings);
|
|
27991
|
+
if (modules.length > 1) {
|
|
27992
|
+
for (const fnName of unusedExportedFns) {
|
|
27993
|
+
libraryFilePaths.add(`data/${namespace}/function/${fnName}.mcfunction`);
|
|
27994
|
+
}
|
|
27995
|
+
}
|
|
27996
|
+
for (const file of modFiles.files) {
|
|
27997
|
+
if (file.path === "pack.mcmeta") {
|
|
27998
|
+
if (!packMetaEmitted) {
|
|
27999
|
+
allFiles.push(file);
|
|
28000
|
+
packMetaEmitted = true;
|
|
28001
|
+
}
|
|
28002
|
+
continue;
|
|
28003
|
+
}
|
|
28004
|
+
if (file.path === "data/minecraft/tags/function/load.json") {
|
|
28005
|
+
mergeTagFile(allFiles, file);
|
|
28006
|
+
continue;
|
|
28007
|
+
}
|
|
28008
|
+
if (file.path === "data/minecraft/tags/function/tick.json") {
|
|
28009
|
+
mergeTagFile(allFiles, file);
|
|
28010
|
+
continue;
|
|
28011
|
+
}
|
|
28012
|
+
allFiles.push(file);
|
|
28013
|
+
}
|
|
28014
|
+
}
|
|
28015
|
+
const finalFiles = crossModuleDCE(allFiles, libraryFilePaths, namespace);
|
|
28016
|
+
return { files: finalFiles, warnings };
|
|
28017
|
+
}
|
|
28018
|
+
function crossModuleDCE(files, libraryPaths, namespace) {
|
|
28019
|
+
if (libraryPaths.size === 0)
|
|
28020
|
+
return files;
|
|
28021
|
+
const fnPathToFilePath = /* @__PURE__ */ new Map();
|
|
28022
|
+
for (const file of files) {
|
|
28023
|
+
const m = file.path.match(/^data\/([^/]+)\/function\/(.+)\.mcfunction$/);
|
|
28024
|
+
if (m) {
|
|
28025
|
+
fnPathToFilePath.set(`${m[1]}:${m[2]}`, file.path);
|
|
28026
|
+
}
|
|
28027
|
+
}
|
|
28028
|
+
const callGraph = /* @__PURE__ */ new Map();
|
|
28029
|
+
const callPattern = /\bfunction\s+([\w\-]+:[\w\-./]+)/g;
|
|
28030
|
+
for (const file of files) {
|
|
28031
|
+
if (!file.path.endsWith(".mcfunction"))
|
|
28032
|
+
continue;
|
|
28033
|
+
const called = /* @__PURE__ */ new Set();
|
|
28034
|
+
let match;
|
|
28035
|
+
callPattern.lastIndex = 0;
|
|
28036
|
+
while ((match = callPattern.exec(file.content)) !== null) {
|
|
28037
|
+
called.add(match[1]);
|
|
28038
|
+
}
|
|
28039
|
+
callGraph.set(file.path, called);
|
|
28040
|
+
}
|
|
28041
|
+
const reachableFiles = /* @__PURE__ */ new Set();
|
|
28042
|
+
const queue = [];
|
|
28043
|
+
for (const file of files) {
|
|
28044
|
+
if (!file.path.endsWith(".mcfunction"))
|
|
28045
|
+
continue;
|
|
28046
|
+
if (!libraryPaths.has(file.path)) {
|
|
28047
|
+
queue.push(file.path);
|
|
28048
|
+
reachableFiles.add(file.path);
|
|
28049
|
+
}
|
|
28050
|
+
}
|
|
28051
|
+
while (queue.length > 0) {
|
|
28052
|
+
const current = queue.shift();
|
|
28053
|
+
const called = callGraph.get(current) ?? /* @__PURE__ */ new Set();
|
|
28054
|
+
for (const fnPath of called) {
|
|
28055
|
+
const filePath = fnPathToFilePath.get(fnPath);
|
|
28056
|
+
if (filePath && !reachableFiles.has(filePath)) {
|
|
28057
|
+
reachableFiles.add(filePath);
|
|
28058
|
+
queue.push(filePath);
|
|
28059
|
+
}
|
|
28060
|
+
}
|
|
28061
|
+
}
|
|
28062
|
+
return files.filter((file) => {
|
|
28063
|
+
if (!libraryPaths.has(file.path))
|
|
28064
|
+
return true;
|
|
28065
|
+
return reachableFiles.has(file.path);
|
|
28066
|
+
});
|
|
28067
|
+
}
|
|
28068
|
+
function compileSingleModule(ast, namespace, objective, moduleName, filePath) {
|
|
28069
|
+
const warnings = [];
|
|
28070
|
+
try {
|
|
28071
|
+
const hirRaw = (0, lower_1.lowerToHIR)(ast);
|
|
28072
|
+
const hir = (0, monomorphize_1.monomorphize)(hirRaw);
|
|
28073
|
+
const tickFunctions = [];
|
|
28074
|
+
const loadFunctions = [];
|
|
28075
|
+
const coroutineInfos = [];
|
|
28076
|
+
const scheduleFunctions = [];
|
|
28077
|
+
for (const fn of hir.functions) {
|
|
28078
|
+
for (const dec of fn.decorators) {
|
|
28079
|
+
if (dec.name === "tick")
|
|
28080
|
+
tickFunctions.push(fn.name);
|
|
28081
|
+
if (dec.name === "load")
|
|
28082
|
+
loadFunctions.push(fn.name);
|
|
28083
|
+
if (dec.name === "coroutine") {
|
|
28084
|
+
coroutineInfos.push({ fnName: fn.name, batch: dec.args?.batch ?? 10, onDone: dec.args?.onDone });
|
|
28085
|
+
}
|
|
28086
|
+
if (dec.name === "schedule") {
|
|
28087
|
+
scheduleFunctions.push({ name: fn.name, ticks: dec.args?.ticks ?? 1 });
|
|
28088
|
+
}
|
|
28089
|
+
}
|
|
28090
|
+
}
|
|
28091
|
+
const mir = (0, lower_2.lowerToMIR)(hir, filePath);
|
|
28092
|
+
mir.objective = objective;
|
|
28093
|
+
const mirOpt = (0, pipeline_1.optimizeModule)(mir);
|
|
28094
|
+
const coroResult = (0, coroutine_1.coroutineTransform)(mirOpt, coroutineInfos);
|
|
28095
|
+
const mirFinal = coroResult.module;
|
|
28096
|
+
tickFunctions.push(...coroResult.generatedTickFunctions);
|
|
28097
|
+
const lir = (0, lower_3.lowerToLIR)(mirFinal);
|
|
28098
|
+
lir.objective = objective;
|
|
28099
|
+
const lirOpt = (0, pipeline_2.lirOptimizeModule)(lir);
|
|
28100
|
+
const files = (0, index_1.emit)(lirOpt, { namespace, tickFunctions, loadFunctions, scheduleFunctions });
|
|
28101
|
+
if (moduleName) {
|
|
28102
|
+
const loadPath = `data/${namespace}/function/load.mcfunction`;
|
|
28103
|
+
const newLoadPath = `data/${namespace}/function/${moduleName}/_load.mcfunction`;
|
|
28104
|
+
const loadTagPath = "data/minecraft/tags/function/load.json";
|
|
28105
|
+
for (const file of files) {
|
|
28106
|
+
if (file.path === loadPath) {
|
|
28107
|
+
file.path = newLoadPath;
|
|
28108
|
+
} else if (file.path === loadTagPath) {
|
|
28109
|
+
const tag = JSON.parse(file.content);
|
|
28110
|
+
tag.values = tag.values.map((v) => v === `${namespace}:load` ? `${namespace}:${moduleName}/_load` : v);
|
|
28111
|
+
file.content = JSON.stringify(tag, null, 2) + "\n";
|
|
28112
|
+
}
|
|
28113
|
+
}
|
|
28114
|
+
}
|
|
28115
|
+
return { files, warnings };
|
|
28116
|
+
} catch (err) {
|
|
28117
|
+
if (err instanceof diagnostics_1.DiagnosticError)
|
|
28118
|
+
throw err;
|
|
28119
|
+
throw err;
|
|
28120
|
+
}
|
|
28121
|
+
}
|
|
28122
|
+
function mergeTagFile(files, newFile) {
|
|
28123
|
+
const existing = files.find((f) => f.path === newFile.path);
|
|
28124
|
+
if (!existing) {
|
|
28125
|
+
files.push(newFile);
|
|
28126
|
+
return;
|
|
28127
|
+
}
|
|
28128
|
+
const existingJson = JSON.parse(existing.content);
|
|
28129
|
+
const newJson = JSON.parse(newFile.content);
|
|
28130
|
+
existingJson.values.push(...newJson.values);
|
|
28131
|
+
existing.content = JSON.stringify(existingJson, null, 2) + "\n";
|
|
28132
|
+
}
|
|
28133
|
+
function detectCircularImports(parsedModules) {
|
|
28134
|
+
const visited = /* @__PURE__ */ new Set();
|
|
28135
|
+
const inStack = /* @__PURE__ */ new Set();
|
|
28136
|
+
function dfs(modName, stack) {
|
|
28137
|
+
if (inStack.has(modName)) {
|
|
28138
|
+
const cycle = [...stack.slice(stack.indexOf(modName)), modName];
|
|
28139
|
+
throw new diagnostics_1.DiagnosticError("LoweringError", `Circular import detected: ${cycle.join(" \u2192 ")}`, { line: 1, col: 1 });
|
|
28140
|
+
}
|
|
28141
|
+
if (visited.has(modName))
|
|
28142
|
+
return;
|
|
28143
|
+
visited.add(modName);
|
|
28144
|
+
inStack.add(modName);
|
|
28145
|
+
const ast = parsedModules.get(modName);
|
|
28146
|
+
if (ast) {
|
|
28147
|
+
for (const imp of ast.imports) {
|
|
28148
|
+
dfs(imp.moduleName, [...stack, modName]);
|
|
28149
|
+
}
|
|
28150
|
+
}
|
|
28151
|
+
inStack.delete(modName);
|
|
28152
|
+
}
|
|
28153
|
+
for (const modName of parsedModules.keys()) {
|
|
28154
|
+
dfs(modName, []);
|
|
28155
|
+
}
|
|
28156
|
+
}
|
|
28157
|
+
function rewriteCallsInProgram(program, symbolMap) {
|
|
28158
|
+
for (const fn of program.declarations) {
|
|
28159
|
+
rewriteBlock(fn.body, symbolMap);
|
|
28160
|
+
}
|
|
28161
|
+
for (const ib of program.implBlocks) {
|
|
28162
|
+
for (const m of ib.methods) {
|
|
28163
|
+
rewriteBlock(m.body, symbolMap);
|
|
28164
|
+
}
|
|
28165
|
+
}
|
|
28166
|
+
}
|
|
28167
|
+
function rewriteBlock(block, symbolMap) {
|
|
28168
|
+
for (const stmt of block) {
|
|
28169
|
+
rewriteStmt(stmt, symbolMap);
|
|
28170
|
+
}
|
|
28171
|
+
}
|
|
28172
|
+
function rewriteStmt(stmt, symbolMap) {
|
|
28173
|
+
switch (stmt.kind) {
|
|
28174
|
+
case "let":
|
|
28175
|
+
case "expr":
|
|
28176
|
+
rewriteExpr(stmt.kind === "let" ? stmt.init : stmt.expr, symbolMap);
|
|
28177
|
+
break;
|
|
28178
|
+
case "return":
|
|
28179
|
+
if (stmt.value)
|
|
28180
|
+
rewriteExpr(stmt.value, symbolMap);
|
|
28181
|
+
break;
|
|
28182
|
+
case "if":
|
|
28183
|
+
rewriteExpr(stmt.cond, symbolMap);
|
|
28184
|
+
rewriteBlock(stmt.then, symbolMap);
|
|
28185
|
+
if (stmt.else_)
|
|
28186
|
+
rewriteBlock(stmt.else_, symbolMap);
|
|
28187
|
+
break;
|
|
28188
|
+
case "while":
|
|
28189
|
+
rewriteExpr(stmt.cond, symbolMap);
|
|
28190
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28191
|
+
break;
|
|
28192
|
+
case "for":
|
|
28193
|
+
if (stmt.init)
|
|
28194
|
+
rewriteStmt(stmt.init, symbolMap);
|
|
28195
|
+
rewriteExpr(stmt.cond, symbolMap);
|
|
28196
|
+
rewriteExpr(stmt.step, symbolMap);
|
|
28197
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28198
|
+
break;
|
|
28199
|
+
case "for_range":
|
|
28200
|
+
rewriteExpr(stmt.start, symbolMap);
|
|
28201
|
+
rewriteExpr(stmt.end, symbolMap);
|
|
28202
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28203
|
+
break;
|
|
28204
|
+
case "foreach":
|
|
28205
|
+
rewriteExpr(stmt.iterable, symbolMap);
|
|
28206
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28207
|
+
break;
|
|
28208
|
+
case "match":
|
|
28209
|
+
rewriteExpr(stmt.expr, symbolMap);
|
|
28210
|
+
for (const arm of stmt.arms) {
|
|
28211
|
+
if (arm.pattern)
|
|
28212
|
+
rewriteExpr(arm.pattern, symbolMap);
|
|
28213
|
+
rewriteBlock(arm.body, symbolMap);
|
|
28214
|
+
}
|
|
28215
|
+
break;
|
|
28216
|
+
case "as_block":
|
|
28217
|
+
case "at_block":
|
|
28218
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28219
|
+
break;
|
|
28220
|
+
case "as_at":
|
|
28221
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28222
|
+
break;
|
|
28223
|
+
case "execute":
|
|
28224
|
+
rewriteBlock(stmt.body, symbolMap);
|
|
28225
|
+
break;
|
|
28226
|
+
case "let_destruct":
|
|
28227
|
+
rewriteExpr(stmt.init, symbolMap);
|
|
28228
|
+
break;
|
|
28229
|
+
}
|
|
28230
|
+
}
|
|
28231
|
+
function rewriteExpr(expr, symbolMap) {
|
|
28232
|
+
switch (expr.kind) {
|
|
28233
|
+
case "call": {
|
|
28234
|
+
const remapped = symbolMap.get(expr.fn);
|
|
28235
|
+
if (remapped) {
|
|
28236
|
+
;
|
|
28237
|
+
expr.fn = remapped;
|
|
28238
|
+
}
|
|
28239
|
+
for (const arg of expr.args)
|
|
28240
|
+
rewriteExpr(arg, symbolMap);
|
|
28241
|
+
break;
|
|
28242
|
+
}
|
|
28243
|
+
case "assign":
|
|
28244
|
+
rewriteExpr(expr.value, symbolMap);
|
|
28245
|
+
break;
|
|
28246
|
+
case "binary":
|
|
28247
|
+
rewriteExpr(expr.left, symbolMap);
|
|
28248
|
+
rewriteExpr(expr.right, symbolMap);
|
|
28249
|
+
break;
|
|
28250
|
+
case "unary":
|
|
28251
|
+
rewriteExpr(expr.operand, symbolMap);
|
|
28252
|
+
break;
|
|
28253
|
+
case "member":
|
|
28254
|
+
rewriteExpr(expr.obj, symbolMap);
|
|
28255
|
+
break;
|
|
28256
|
+
case "member_assign":
|
|
28257
|
+
rewriteExpr(expr.obj, symbolMap);
|
|
28258
|
+
rewriteExpr(expr.value, symbolMap);
|
|
28259
|
+
break;
|
|
28260
|
+
case "index":
|
|
28261
|
+
rewriteExpr(expr.obj, symbolMap);
|
|
28262
|
+
rewriteExpr(expr.index, symbolMap);
|
|
28263
|
+
break;
|
|
28264
|
+
case "index_assign":
|
|
28265
|
+
rewriteExpr(expr.obj, symbolMap);
|
|
28266
|
+
rewriteExpr(expr.index, symbolMap);
|
|
28267
|
+
rewriteExpr(expr.value, symbolMap);
|
|
28268
|
+
break;
|
|
28269
|
+
case "array_lit":
|
|
28270
|
+
for (const el of expr.elements)
|
|
28271
|
+
rewriteExpr(el, symbolMap);
|
|
28272
|
+
break;
|
|
28273
|
+
case "struct_lit":
|
|
28274
|
+
for (const f of expr.fields)
|
|
28275
|
+
rewriteExpr(f.value, symbolMap);
|
|
28276
|
+
break;
|
|
28277
|
+
case "invoke":
|
|
28278
|
+
rewriteExpr(expr.callee, symbolMap);
|
|
28279
|
+
for (const arg of expr.args)
|
|
28280
|
+
rewriteExpr(arg, symbolMap);
|
|
28281
|
+
break;
|
|
28282
|
+
case "tuple_lit":
|
|
28283
|
+
for (const el of expr.elements)
|
|
28284
|
+
rewriteExpr(el, symbolMap);
|
|
28285
|
+
break;
|
|
28286
|
+
case "static_call":
|
|
28287
|
+
for (const arg of expr.args)
|
|
28288
|
+
rewriteExpr(arg, symbolMap);
|
|
28289
|
+
break;
|
|
28290
|
+
}
|
|
28291
|
+
}
|
|
28292
|
+
}
|
|
28293
|
+
});
|
|
28294
|
+
|
|
25395
28295
|
// ../../dist/src/mc-validator/index.js
|
|
25396
28296
|
var require_mc_validator = __commonJS({
|
|
25397
28297
|
"../../dist/src/mc-validator/index.js"(exports2) {
|
|
@@ -26165,7 +29065,7 @@ var require_src = __commonJS({
|
|
|
26165
29065
|
"../../dist/src/index.js"(exports2) {
|
|
26166
29066
|
"use strict";
|
|
26167
29067
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
26168
|
-
exports2.resetCompileCache = exports2.compileIncremental = exports2.parseImports = exports2.DependencyGraph = exports2.hashFile = exports2.FileCache = exports2.MCCommandValidator = exports2.preprocessSourceWithMetadata = exports2.preprocessSource = exports2.Parser = exports2.Lexer = exports2.compile = exports2.version = void 0;
|
|
29068
|
+
exports2.resetCompileCache = exports2.compileIncremental = exports2.parseImports = exports2.DependencyGraph = exports2.hashFile = exports2.FileCache = exports2.MCCommandValidator = exports2.preprocessSourceWithMetadata = exports2.preprocessSource = exports2.Parser = exports2.Lexer = exports2.DEFAULT_MC_VERSION = exports2.compareMcVersion = exports2.parseMcVersion = exports2.McVersion = exports2.compileModules = exports2.compile = exports2.version = void 0;
|
|
26169
29069
|
exports2.check = check;
|
|
26170
29070
|
exports2.checkWithWarnings = checkWithWarnings;
|
|
26171
29071
|
exports2.version = "2.0.0";
|
|
@@ -26174,6 +29074,23 @@ var require_src = __commonJS({
|
|
|
26174
29074
|
Object.defineProperty(exports2, "compile", { enumerable: true, get: function() {
|
|
26175
29075
|
return compile_2.compile;
|
|
26176
29076
|
} });
|
|
29077
|
+
var modules_1 = require_modules();
|
|
29078
|
+
Object.defineProperty(exports2, "compileModules", { enumerable: true, get: function() {
|
|
29079
|
+
return modules_1.compileModules;
|
|
29080
|
+
} });
|
|
29081
|
+
var mc_version_1 = require_mc_version();
|
|
29082
|
+
Object.defineProperty(exports2, "McVersion", { enumerable: true, get: function() {
|
|
29083
|
+
return mc_version_1.McVersion;
|
|
29084
|
+
} });
|
|
29085
|
+
Object.defineProperty(exports2, "parseMcVersion", { enumerable: true, get: function() {
|
|
29086
|
+
return mc_version_1.parseMcVersion;
|
|
29087
|
+
} });
|
|
29088
|
+
Object.defineProperty(exports2, "compareMcVersion", { enumerable: true, get: function() {
|
|
29089
|
+
return mc_version_1.compareMcVersion;
|
|
29090
|
+
} });
|
|
29091
|
+
Object.defineProperty(exports2, "DEFAULT_MC_VERSION", { enumerable: true, get: function() {
|
|
29092
|
+
return mc_version_1.DEFAULT_MC_VERSION;
|
|
29093
|
+
} });
|
|
26177
29094
|
var lexer_1 = require_lexer();
|
|
26178
29095
|
Object.defineProperty(exports2, "Lexer", { enumerable: true, get: function() {
|
|
26179
29096
|
return lexer_1.Lexer;
|