redscript-mc 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1540) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/__tests__/cli.test.d.ts +1 -0
  3. package/dist/__tests__/cli.test.js +278 -0
  4. package/dist/__tests__/codegen.test.d.ts +1 -0
  5. package/dist/__tests__/codegen.test.js +152 -0
  6. package/dist/__tests__/compile-all.test.d.ts +10 -0
  7. package/dist/__tests__/compile-all.test.js +108 -0
  8. package/dist/__tests__/dce.test.d.ts +1 -0
  9. package/dist/__tests__/dce.test.js +138 -0
  10. package/dist/__tests__/diagnostics.test.d.ts +4 -0
  11. package/dist/__tests__/diagnostics.test.js +149 -0
  12. package/dist/__tests__/e2e.test.d.ts +6 -0
  13. package/dist/__tests__/e2e.test.js +1847 -0
  14. package/dist/__tests__/entity-types.test.d.ts +1 -0
  15. package/dist/__tests__/entity-types.test.js +203 -0
  16. package/dist/__tests__/formatter.test.d.ts +1 -0
  17. package/dist/__tests__/formatter.test.js +40 -0
  18. package/dist/__tests__/lexer.test.d.ts +1 -0
  19. package/dist/__tests__/lexer.test.js +343 -0
  20. package/dist/__tests__/lowering.test.d.ts +1 -0
  21. package/dist/__tests__/lowering.test.js +1015 -0
  22. package/dist/__tests__/macro.test.d.ts +8 -0
  23. package/dist/__tests__/macro.test.js +305 -0
  24. package/dist/__tests__/mc-integration.test.d.ts +12 -0
  25. package/dist/__tests__/mc-integration.test.js +819 -0
  26. package/dist/__tests__/mc-syntax.test.d.ts +1 -0
  27. package/dist/__tests__/mc-syntax.test.js +124 -0
  28. package/dist/__tests__/nbt.test.d.ts +1 -0
  29. package/dist/__tests__/nbt.test.js +82 -0
  30. package/dist/__tests__/optimizer-advanced.test.d.ts +1 -0
  31. package/dist/__tests__/optimizer-advanced.test.js +124 -0
  32. package/dist/__tests__/optimizer.test.d.ts +1 -0
  33. package/dist/__tests__/optimizer.test.js +149 -0
  34. package/dist/__tests__/parser.test.d.ts +1 -0
  35. package/dist/__tests__/parser.test.js +807 -0
  36. package/dist/__tests__/repl.test.d.ts +1 -0
  37. package/dist/__tests__/repl.test.js +27 -0
  38. package/dist/__tests__/runtime.test.d.ts +1 -0
  39. package/dist/__tests__/runtime.test.js +289 -0
  40. package/dist/__tests__/stdlib-advanced.test.d.ts +4 -0
  41. package/dist/__tests__/stdlib-advanced.test.js +378 -0
  42. package/dist/__tests__/stdlib-bigint.test.d.ts +7 -0
  43. package/dist/__tests__/stdlib-bigint.test.js +428 -0
  44. package/dist/__tests__/stdlib-math.test.d.ts +7 -0
  45. package/dist/__tests__/stdlib-math.test.js +352 -0
  46. package/dist/__tests__/stdlib-vec.test.d.ts +4 -0
  47. package/dist/__tests__/stdlib-vec.test.js +264 -0
  48. package/dist/__tests__/structure-optimizer.test.d.ts +1 -0
  49. package/dist/__tests__/structure-optimizer.test.js +33 -0
  50. package/dist/__tests__/typechecker.test.d.ts +1 -0
  51. package/dist/__tests__/typechecker.test.js +552 -0
  52. package/dist/__tests__/var-allocator.test.d.ts +1 -0
  53. package/dist/__tests__/var-allocator.test.js +69 -0
  54. package/dist/ast/types.d.ts +514 -0
  55. package/dist/ast/types.js +9 -0
  56. package/dist/builtins/metadata.d.ts +36 -0
  57. package/dist/builtins/metadata.js +1014 -0
  58. package/dist/cli.d.ts +11 -0
  59. package/dist/cli.js +0 -0
  60. package/dist/codegen/cmdblock/index.d.ts +26 -0
  61. package/dist/codegen/cmdblock/index.js +45 -0
  62. package/dist/codegen/mcfunction/index.d.ts +40 -0
  63. package/dist/codegen/mcfunction/index.js +606 -0
  64. package/dist/codegen/structure/index.d.ts +24 -0
  65. package/dist/codegen/structure/index.js +279 -0
  66. package/dist/codegen/var-allocator.d.ts +45 -0
  67. package/dist/codegen/var-allocator.js +104 -0
  68. package/dist/compile.d.ts +68 -0
  69. package/dist/data/arena/function/__load.mcfunction +6 -0
  70. package/dist/data/arena/function/__tick.mcfunction +2 -0
  71. package/dist/data/arena/function/announce_leaders/else_1.mcfunction +3 -0
  72. package/dist/data/arena/function/announce_leaders/foreach_0/merge_2.mcfunction +1 -0
  73. package/dist/data/arena/function/announce_leaders/foreach_0/then_0.mcfunction +3 -0
  74. package/dist/data/arena/function/announce_leaders/foreach_0.mcfunction +7 -0
  75. package/dist/data/arena/function/announce_leaders/foreach_1/merge_2.mcfunction +1 -0
  76. package/dist/data/arena/function/announce_leaders/foreach_1/then_0.mcfunction +4 -0
  77. package/dist/data/arena/function/announce_leaders/foreach_1.mcfunction +6 -0
  78. package/dist/data/arena/function/announce_leaders/merge_2.mcfunction +1 -0
  79. package/dist/data/arena/function/announce_leaders/then_0.mcfunction +4 -0
  80. package/dist/data/arena/function/announce_leaders.mcfunction +6 -0
  81. package/dist/data/arena/function/arena_tick/merge_2.mcfunction +1 -0
  82. package/dist/data/arena/function/arena_tick/then_0.mcfunction +4 -0
  83. package/dist/data/arena/function/arena_tick.mcfunction +11 -0
  84. package/dist/data/capture_the_flag/function/add_to_team.mcfunction +5 -0
  85. package/dist/data/capture_the_flag/function/angry_at.mcfunction +1 -0
  86. package/dist/data/capture_the_flag/function/assign_teams.mcfunction +1 -0
  87. package/dist/data/capture_the_flag/function/assign_teams__foreach_t1.mcfunction +8 -0
  88. package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__else_2.mcfunction +8 -0
  89. package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__merge_1.mcfunction +3 -0
  90. package/dist/data/capture_the_flag/function/assign_teams__foreach_t1__then_0.mcfunction +8 -0
  91. package/dist/data/capture_the_flag/function/barrier_wall.mcfunction +1 -0
  92. package/dist/data/capture_the_flag/function/buff_all.mcfunction +22 -0
  93. package/dist/data/capture_the_flag/function/check_flag_capture.mcfunction +2 -0
  94. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0.mcfunction +8 -0
  95. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0__merge_1.mcfunction +1 -0
  96. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t0__then_0.mcfunction +7 -0
  97. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1.mcfunction +8 -0
  98. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1__merge_1.mcfunction +1 -0
  99. package/dist/data/capture_the_flag/function/check_flag_capture__foreach_t1__then_0.mcfunction +7 -0
  100. package/dist/data/capture_the_flag/function/check_flag_pickup.mcfunction +2 -0
  101. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0.mcfunction +8 -0
  102. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0__merge_1.mcfunction +1 -0
  103. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t0__then_0.mcfunction +7 -0
  104. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1.mcfunction +8 -0
  105. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1__merge_1.mcfunction +1 -0
  106. package/dist/data/capture_the_flag/function/check_flag_pickup__foreach_t1__then_0.mcfunction +7 -0
  107. package/dist/data/capture_the_flag/function/check_win.mcfunction +4 -0
  108. package/dist/data/capture_the_flag/function/cleanup_teams.mcfunction +8 -0
  109. package/dist/data/capture_the_flag/function/clear_area.mcfunction +1 -0
  110. package/dist/data/capture_the_flag/function/clear_effect.mcfunction +1 -0
  111. package/dist/data/capture_the_flag/function/clear_effects.mcfunction +1 -0
  112. package/dist/data/capture_the_flag/function/clear_inventory.mcfunction +1 -0
  113. package/dist/data/capture_the_flag/function/create_blue_team.mcfunction +10 -0
  114. package/dist/data/capture_the_flag/function/create_green_team.mcfunction +10 -0
  115. package/dist/data/capture_the_flag/function/create_red_team.mcfunction +10 -0
  116. package/dist/data/capture_the_flag/function/create_team.mcfunction +8 -0
  117. package/dist/data/capture_the_flag/function/create_yellow_team.mcfunction +10 -0
  118. package/dist/data/capture_the_flag/function/disable_fire_spread.mcfunction +1 -0
  119. package/dist/data/capture_the_flag/function/disable_keep_inventory.mcfunction +1 -0
  120. package/dist/data/capture_the_flag/function/disable_mob_griefing.mcfunction +1 -0
  121. package/dist/data/capture_the_flag/function/distance_to.mcfunction +6 -0
  122. package/dist/data/capture_the_flag/function/distance_to__const_0_0_0_0.mcfunction +5 -0
  123. package/dist/data/capture_the_flag/function/enable_keep_inventory.mcfunction +1 -0
  124. package/dist/data/capture_the_flag/function/end_game.mcfunction +6 -0
  125. package/dist/data/capture_the_flag/function/end_game__else_2.mcfunction +3 -0
  126. package/dist/data/capture_the_flag/function/end_game__foreach_t7.mcfunction +2 -0
  127. package/dist/data/capture_the_flag/function/end_game__merge_1.mcfunction +1 -0
  128. package/dist/data/capture_the_flag/function/end_game__then_0.mcfunction +3 -0
  129. package/dist/data/capture_the_flag/function/end_sparkles_at.mcfunction +1 -0
  130. package/dist/data/capture_the_flag/function/explosion_effect.mcfunction +1 -0
  131. package/dist/data/capture_the_flag/function/flames.mcfunction +1 -0
  132. package/dist/data/capture_the_flag/function/game_tick.mcfunction +1 -0
  133. package/dist/data/capture_the_flag/function/give_kit_archer.mcfunction +6 -0
  134. package/dist/data/capture_the_flag/function/give_kit_mage.mcfunction +5 -0
  135. package/dist/data/capture_the_flag/function/give_kit_warrior.mcfunction +6 -0
  136. package/dist/data/capture_the_flag/function/glass_box.mcfunction +2 -0
  137. package/dist/data/capture_the_flag/function/glow.mcfunction +1 -0
  138. package/dist/data/capture_the_flag/function/happy_at.mcfunction +1 -0
  139. package/dist/data/capture_the_flag/function/hearts_at.mcfunction +1 -0
  140. package/dist/data/capture_the_flag/function/init.mcfunction +11 -0
  141. package/dist/data/capture_the_flag/function/invisible.mcfunction +1 -0
  142. package/dist/data/capture_the_flag/function/jump.mcfunction +1 -0
  143. package/dist/data/capture_the_flag/function/load.mcfunction +1 -0
  144. package/dist/data/capture_the_flag/function/night_vision.mcfunction +1 -0
  145. package/dist/data/capture_the_flag/function/place_flags.mcfunction +2 -0
  146. package/dist/data/capture_the_flag/function/portal_effect.mcfunction +1 -0
  147. package/dist/data/capture_the_flag/function/regen.mcfunction +1 -0
  148. package/dist/data/capture_the_flag/function/remove_from_teams.mcfunction +3 -0
  149. package/dist/data/capture_the_flag/function/remove_item.mcfunction +1 -0
  150. package/dist/data/capture_the_flag/function/resistance.mcfunction +1 -0
  151. package/dist/data/capture_the_flag/function/set_day.mcfunction +1 -0
  152. package/dist/data/capture_the_flag/function/set_easy.mcfunction +1 -0
  153. package/dist/data/capture_the_flag/function/set_hard.mcfunction +1 -0
  154. package/dist/data/capture_the_flag/function/set_midnight.mcfunction +1 -0
  155. package/dist/data/capture_the_flag/function/set_night.mcfunction +1 -0
  156. package/dist/data/capture_the_flag/function/set_noon.mcfunction +1 -0
  157. package/dist/data/capture_the_flag/function/set_normal.mcfunction +1 -0
  158. package/dist/data/capture_the_flag/function/set_peaceful.mcfunction +1 -0
  159. package/dist/data/capture_the_flag/function/setup_four_teams.mcfunction +4 -0
  160. package/dist/data/capture_the_flag/function/setup_two_teams.mcfunction +2 -0
  161. package/dist/data/capture_the_flag/function/slow_fall.mcfunction +1 -0
  162. package/dist/data/capture_the_flag/function/smoke.mcfunction +1 -0
  163. package/dist/data/capture_the_flag/function/sparkles_at.mcfunction +1 -0
  164. package/dist/data/capture_the_flag/function/speed.mcfunction +1 -0
  165. package/dist/data/capture_the_flag/function/start_game.mcfunction +15 -0
  166. package/dist/data/capture_the_flag/function/start_game__foreach_t10.mcfunction +4 -0
  167. package/dist/data/capture_the_flag/function/strength.mcfunction +1 -0
  168. package/dist/data/capture_the_flag/function/totem_at.mcfunction +1 -0
  169. package/dist/data/capture_the_flag/function/weather_clear.mcfunction +1 -0
  170. package/dist/data/capture_the_flag/function/weather_rain.mcfunction +1 -0
  171. package/dist/data/capture_the_flag/function/weather_thunder.mcfunction +1 -0
  172. package/dist/data/counter/function/__load.mcfunction +5 -0
  173. package/dist/data/counter/function/__tick.mcfunction +2 -0
  174. package/dist/data/counter/function/counter_tick/merge_2.mcfunction +1 -0
  175. package/dist/data/counter/function/counter_tick/then_0.mcfunction +3 -0
  176. package/dist/data/counter/function/counter_tick.mcfunction +11 -0
  177. package/dist/data/gcd2/function/__load.mcfunction +3 -0
  178. package/dist/data/gcd2/function/abs/merge_2.mcfunction +3 -0
  179. package/dist/data/gcd2/function/abs/then_0.mcfunction +5 -0
  180. package/dist/data/gcd2/function/abs.mcfunction +7 -0
  181. package/dist/data/gcd2/function/gcd/loop_body_1.mcfunction +7 -0
  182. package/dist/data/gcd2/function/gcd/loop_check_0.mcfunction +5 -0
  183. package/dist/data/gcd2/function/gcd/loop_exit_2.mcfunction +3 -0
  184. package/dist/data/gcd2/function/gcd.mcfunction +14 -0
  185. package/dist/data/gcd3/function/__load.mcfunction +3 -0
  186. package/dist/data/gcd3/function/abs/merge_2.mcfunction +3 -0
  187. package/dist/data/gcd3/function/abs/then_0.mcfunction +5 -0
  188. package/dist/data/gcd3/function/abs.mcfunction +7 -0
  189. package/dist/data/gcd3/function/gcd/loop_body_1.mcfunction +7 -0
  190. package/dist/data/gcd3/function/gcd/loop_check_0.mcfunction +5 -0
  191. package/dist/data/gcd3/function/gcd/loop_exit_2.mcfunction +3 -0
  192. package/dist/data/gcd3/function/gcd.mcfunction +14 -0
  193. package/dist/data/gcd3/function/test.mcfunction +7 -0
  194. package/dist/data/gcd3nm/function/__load.mcfunction +3 -0
  195. package/dist/data/gcd3nm/function/abs/merge_2.mcfunction +3 -0
  196. package/dist/data/gcd3nm/function/abs/then_0.mcfunction +5 -0
  197. package/dist/data/gcd3nm/function/abs.mcfunction +7 -0
  198. package/dist/data/gcd3nm/function/gcd/loop_body_1.mcfunction +7 -0
  199. package/dist/data/gcd3nm/function/gcd/loop_check_0.mcfunction +5 -0
  200. package/dist/data/gcd3nm/function/gcd/loop_exit_2.mcfunction +3 -0
  201. package/dist/data/gcd3nm/function/gcd.mcfunction +14 -0
  202. package/dist/data/gcd3nm/function/test.mcfunction +7 -0
  203. package/dist/data/gcd_test/function/__load.mcfunction +3 -0
  204. package/dist/data/gcd_test/function/abs/merge_2.mcfunction +3 -0
  205. package/dist/data/gcd_test/function/abs/then_0.mcfunction +5 -0
  206. package/dist/data/gcd_test/function/abs.mcfunction +7 -0
  207. package/dist/data/gcd_test/function/gcd/loop_body_1.mcfunction +7 -0
  208. package/dist/data/gcd_test/function/gcd/loop_check_0.mcfunction +5 -0
  209. package/dist/data/gcd_test/function/gcd/loop_exit_2.mcfunction +3 -0
  210. package/dist/data/gcd_test/function/gcd.mcfunction +14 -0
  211. package/dist/data/hunger_games/function/angry_at.mcfunction +1 -0
  212. package/dist/data/hunger_games/function/barrier_wall.mcfunction +1 -0
  213. package/dist/data/hunger_games/function/buff_all.mcfunction +22 -0
  214. package/dist/data/hunger_games/function/check_alive.mcfunction +3 -0
  215. package/dist/data/hunger_games/function/check_alive__foreach_t3.mcfunction +10 -0
  216. package/dist/data/hunger_games/function/check_alive__foreach_t3__merge_1.mcfunction +1 -0
  217. package/dist/data/hunger_games/function/check_alive__foreach_t3__then_0.mcfunction +5 -0
  218. package/dist/data/hunger_games/function/check_border_damage.mcfunction +1 -0
  219. package/dist/data/hunger_games/function/check_border_damage__foreach_t0.mcfunction +1 -0
  220. package/dist/data/hunger_games/function/clear_area.mcfunction +1 -0
  221. package/dist/data/hunger_games/function/clear_effect.mcfunction +1 -0
  222. package/dist/data/hunger_games/function/clear_effects.mcfunction +1 -0
  223. package/dist/data/hunger_games/function/countdown_tick.mcfunction +1 -0
  224. package/dist/data/hunger_games/function/create_health_bar.mcfunction +24 -0
  225. package/dist/data/hunger_games/function/create_progress_bar.mcfunction +24 -0
  226. package/dist/data/hunger_games/function/create_progress_bar__const_0_0_0.mcfunction +21 -0
  227. package/dist/data/hunger_games/function/create_timer_bar.mcfunction +30 -0
  228. package/dist/data/hunger_games/function/declare_winner.mcfunction +13 -0
  229. package/dist/data/hunger_games/function/disable_fire_spread.mcfunction +1 -0
  230. package/dist/data/hunger_games/function/disable_keep_inventory.mcfunction +1 -0
  231. package/dist/data/hunger_games/function/disable_mob_griefing.mcfunction +1 -0
  232. package/dist/data/hunger_games/function/enable_keep_inventory.mcfunction +1 -0
  233. package/dist/data/hunger_games/function/end_game_no_winner.mcfunction +3 -0
  234. package/dist/data/hunger_games/function/end_sparkles_at.mcfunction +1 -0
  235. package/dist/data/hunger_games/function/explosion_effect.mcfunction +1 -0
  236. package/dist/data/hunger_games/function/flames.mcfunction +1 -0
  237. package/dist/data/hunger_games/function/game_tick.mcfunction +1 -0
  238. package/dist/data/hunger_games/function/glass_box.mcfunction +2 -0
  239. package/dist/data/hunger_games/function/glow.mcfunction +1 -0
  240. package/dist/data/hunger_games/function/happy_at.mcfunction +1 -0
  241. package/dist/data/hunger_games/function/hearts_at.mcfunction +1 -0
  242. package/dist/data/hunger_games/function/hide_bar.mcfunction +4 -0
  243. package/dist/data/hunger_games/function/init.mcfunction +7 -0
  244. package/dist/data/hunger_games/function/invisible.mcfunction +1 -0
  245. package/dist/data/hunger_games/function/jump.mcfunction +1 -0
  246. package/dist/data/hunger_games/function/load.mcfunction +1 -0
  247. package/dist/data/hunger_games/function/main_game_tick.mcfunction +4 -0
  248. package/dist/data/hunger_games/function/night_vision.mcfunction +1 -0
  249. package/dist/data/hunger_games/function/on_player_death.mcfunction +14 -0
  250. package/dist/data/hunger_games/function/portal_effect.mcfunction +1 -0
  251. package/dist/data/hunger_games/function/regen.mcfunction +1 -0
  252. package/dist/data/hunger_games/function/remove_bar.mcfunction +3 -0
  253. package/dist/data/hunger_games/function/remove_bar__const_0.mcfunction +2 -0
  254. package/dist/data/hunger_games/function/reset_game.mcfunction +3 -0
  255. package/dist/data/hunger_games/function/reset_game__foreach_t0.mcfunction +9 -0
  256. package/dist/data/hunger_games/function/resistance.mcfunction +1 -0
  257. package/dist/data/hunger_games/function/set_day.mcfunction +1 -0
  258. package/dist/data/hunger_games/function/set_easy.mcfunction +1 -0
  259. package/dist/data/hunger_games/function/set_hard.mcfunction +1 -0
  260. package/dist/data/hunger_games/function/set_midnight.mcfunction +1 -0
  261. package/dist/data/hunger_games/function/set_night.mcfunction +1 -0
  262. package/dist/data/hunger_games/function/set_noon.mcfunction +1 -0
  263. package/dist/data/hunger_games/function/set_normal.mcfunction +1 -0
  264. package/dist/data/hunger_games/function/set_peaceful.mcfunction +1 -0
  265. package/dist/data/hunger_games/function/show_bar.mcfunction +4 -0
  266. package/dist/data/hunger_games/function/shrink_border.mcfunction +1 -0
  267. package/dist/data/hunger_games/function/slow_fall.mcfunction +1 -0
  268. package/dist/data/hunger_games/function/smoke.mcfunction +1 -0
  269. package/dist/data/hunger_games/function/sparkles_at.mcfunction +1 -0
  270. package/dist/data/hunger_games/function/speed.mcfunction +1 -0
  271. package/dist/data/hunger_games/function/start_countdown.mcfunction +3 -0
  272. package/dist/data/hunger_games/function/start_countdown__foreach_t0.mcfunction +16 -0
  273. package/dist/data/hunger_games/function/start_game.mcfunction +4 -0
  274. package/dist/data/hunger_games/function/start_game__foreach_t3.mcfunction +4 -0
  275. package/dist/data/hunger_games/function/strength.mcfunction +1 -0
  276. package/dist/data/hunger_games/function/totem_at.mcfunction +1 -0
  277. package/dist/data/hunger_games/function/update_bar.mcfunction +5 -0
  278. package/dist/data/hunger_games/function/update_bar__const_0_0.mcfunction +3 -0
  279. package/dist/data/hunger_games/function/update_bar_color.mcfunction +7 -0
  280. package/dist/data/hunger_games/function/update_bar_color__else_2.mcfunction +5 -0
  281. package/dist/data/hunger_games/function/update_bar_color__else_5.mcfunction +4 -0
  282. package/dist/data/hunger_games/function/update_bar_color__merge_1.mcfunction +1 -0
  283. package/dist/data/hunger_games/function/update_bar_color__merge_4.mcfunction +1 -0
  284. package/dist/data/hunger_games/function/update_bar_color__then_0.mcfunction +4 -0
  285. package/dist/data/hunger_games/function/update_bar_color__then_3.mcfunction +4 -0
  286. package/dist/data/hunger_games/function/weather_clear.mcfunction +1 -0
  287. package/dist/data/hunger_games/function/weather_rain.mcfunction +1 -0
  288. package/dist/data/hunger_games/function/weather_thunder.mcfunction +1 -0
  289. package/dist/data/isqrttest/function/__load.mcfunction +6 -0
  290. package/dist/data/isqrttest/function/isqrt/loop_body_4.mcfunction +12 -0
  291. package/dist/data/isqrttest/function/isqrt/loop_check_3.mcfunction +5 -0
  292. package/dist/data/isqrttest/function/isqrt/loop_exit_5.mcfunction +3 -0
  293. package/dist/data/isqrttest/function/isqrt/merge_2.mcfunction +4 -0
  294. package/dist/data/isqrttest/function/isqrt/merge_8.mcfunction +6 -0
  295. package/dist/data/isqrttest/function/isqrt/then_0.mcfunction +3 -0
  296. package/dist/data/isqrttest/function/isqrt/then_6.mcfunction +3 -0
  297. package/dist/data/isqrttest/function/isqrt.mcfunction +7 -0
  298. package/dist/data/isqrttest/function/test.mcfunction +6 -0
  299. package/dist/data/macrotest/function/get_element.mcfunction +2 -0
  300. package/dist/data/macrotest/function/load.mcfunction +1 -0
  301. package/dist/data/macrotest/function/test_dynamic_index.mcfunction +2 -0
  302. package/dist/data/mathtest/function/__load.mcfunction +3 -0
  303. package/dist/data/mathtest/function/abs/merge_2.mcfunction +3 -0
  304. package/dist/data/mathtest/function/abs/then_0.mcfunction +5 -0
  305. package/dist/data/mathtest/function/abs.mcfunction +6 -0
  306. package/dist/data/mathtest/function/test.mcfunction +5 -0
  307. package/dist/data/minecraft/tags/function/load.json +5 -0
  308. package/dist/data/minecraft/tags/function/tick.json +5 -0
  309. package/dist/data/mypack/function/__load.mcfunction +13 -0
  310. package/dist/data/mypack/function/_atan_init.mcfunction +2 -0
  311. package/dist/data/mypack/function/abs/merge_2.mcfunction +3 -0
  312. package/dist/data/mypack/function/abs/then_0.mcfunction +5 -0
  313. package/dist/data/mypack/function/abs.mcfunction +6 -0
  314. package/dist/data/mypack/function/atan2_fixed/__sgi_1.mcfunction +2 -0
  315. package/dist/data/mypack/function/atan2_fixed/else_34.mcfunction +3 -0
  316. package/dist/data/mypack/function/atan2_fixed/loop_body_31.mcfunction +19 -0
  317. package/dist/data/mypack/function/atan2_fixed/loop_check_30.mcfunction +5 -0
  318. package/dist/data/mypack/function/atan2_fixed/loop_exit_32.mcfunction +6 -0
  319. package/dist/data/mypack/function/atan2_fixed/merge_11.mcfunction +6 -0
  320. package/dist/data/mypack/function/atan2_fixed/merge_14.mcfunction +3 -0
  321. package/dist/data/mypack/function/atan2_fixed/merge_17.mcfunction +6 -0
  322. package/dist/data/mypack/function/atan2_fixed/merge_2.mcfunction +5 -0
  323. package/dist/data/mypack/function/atan2_fixed/merge_20.mcfunction +5 -0
  324. package/dist/data/mypack/function/atan2_fixed/merge_23.mcfunction +5 -0
  325. package/dist/data/mypack/function/atan2_fixed/merge_26.mcfunction +6 -0
  326. package/dist/data/mypack/function/atan2_fixed/merge_29.mcfunction +4 -0
  327. package/dist/data/mypack/function/atan2_fixed/merge_38.mcfunction +5 -0
  328. package/dist/data/mypack/function/atan2_fixed/merge_41.mcfunction +5 -0
  329. package/dist/data/mypack/function/atan2_fixed/merge_44.mcfunction +5 -0
  330. package/dist/data/mypack/function/atan2_fixed/merge_47.mcfunction +5 -0
  331. package/dist/data/mypack/function/atan2_fixed/merge_5.mcfunction +5 -0
  332. package/dist/data/mypack/function/atan2_fixed/merge_8.mcfunction +3 -0
  333. package/dist/data/mypack/function/atan2_fixed/then_0.mcfunction +5 -0
  334. package/dist/data/mypack/function/atan2_fixed/then_12.mcfunction +3 -0
  335. package/dist/data/mypack/function/atan2_fixed/then_15.mcfunction +5 -0
  336. package/dist/data/mypack/function/atan2_fixed/then_18.mcfunction +5 -0
  337. package/dist/data/mypack/function/atan2_fixed/then_21.mcfunction +3 -0
  338. package/dist/data/mypack/function/atan2_fixed/then_24.mcfunction +3 -0
  339. package/dist/data/mypack/function/atan2_fixed/then_27.mcfunction +6 -0
  340. package/dist/data/mypack/function/atan2_fixed/then_3.mcfunction +3 -0
  341. package/dist/data/mypack/function/atan2_fixed/then_33.mcfunction +5 -0
  342. package/dist/data/mypack/function/atan2_fixed/then_36.mcfunction +5 -0
  343. package/dist/data/mypack/function/atan2_fixed/then_39.mcfunction +5 -0
  344. package/dist/data/mypack/function/atan2_fixed/then_42.mcfunction +3 -0
  345. package/dist/data/mypack/function/atan2_fixed/then_45.mcfunction +5 -0
  346. package/dist/data/mypack/function/atan2_fixed/then_6.mcfunction +3 -0
  347. package/dist/data/mypack/function/atan2_fixed/then_9.mcfunction +5 -0
  348. package/dist/data/mypack/function/atan2_fixed.mcfunction +7 -0
  349. package/dist/data/mypack/function/my_game.mcfunction +10 -0
  350. package/dist/data/parkour_race/function/angry_at.mcfunction +1 -0
  351. package/dist/data/parkour_race/function/barrier_wall.mcfunction +1 -0
  352. package/dist/data/parkour_race/function/buff_all.mcfunction +22 -0
  353. package/dist/data/parkour_race/function/check_checkpoints.mcfunction +11 -0
  354. package/dist/data/parkour_race/function/check_checkpoints__exec_t11.mcfunction +4 -0
  355. package/dist/data/parkour_race/function/check_checkpoints__exec_t13.mcfunction +3 -0
  356. package/dist/data/parkour_race/function/check_checkpoints__exec_t5.mcfunction +4 -0
  357. package/dist/data/parkour_race/function/check_checkpoints__exec_t7.mcfunction +4 -0
  358. package/dist/data/parkour_race/function/check_checkpoints__exec_t9.mcfunction +4 -0
  359. package/dist/data/parkour_race/function/check_checkpoints__merge_1.mcfunction +5 -0
  360. package/dist/data/parkour_race/function/check_checkpoints__merge_3.mcfunction +5 -0
  361. package/dist/data/parkour_race/function/check_checkpoints__merge_5.mcfunction +5 -0
  362. package/dist/data/parkour_race/function/check_checkpoints__merge_7.mcfunction +5 -0
  363. package/dist/data/parkour_race/function/check_checkpoints__merge_9.mcfunction +1 -0
  364. package/dist/data/parkour_race/function/check_checkpoints__then_0.mcfunction +2 -0
  365. package/dist/data/parkour_race/function/check_checkpoints__then_2.mcfunction +2 -0
  366. package/dist/data/parkour_race/function/check_checkpoints__then_4.mcfunction +2 -0
  367. package/dist/data/parkour_race/function/check_checkpoints__then_6.mcfunction +2 -0
  368. package/dist/data/parkour_race/function/check_checkpoints__then_8.mcfunction +2 -0
  369. package/dist/data/parkour_race/function/check_fall.mcfunction +1 -0
  370. package/dist/data/parkour_race/function/check_fall__exec_t1.mcfunction +10 -0
  371. package/dist/data/parkour_race/function/clear_area.mcfunction +1 -0
  372. package/dist/data/parkour_race/function/clear_effect.mcfunction +1 -0
  373. package/dist/data/parkour_race/function/clear_effects.mcfunction +1 -0
  374. package/dist/data/parkour_race/function/create_health_bar.mcfunction +24 -0
  375. package/dist/data/parkour_race/function/create_progress_bar.mcfunction +24 -0
  376. package/dist/data/parkour_race/function/create_timer_bar.mcfunction +30 -0
  377. package/dist/data/parkour_race/function/disable_fire_spread.mcfunction +1 -0
  378. package/dist/data/parkour_race/function/disable_keep_inventory.mcfunction +1 -0
  379. package/dist/data/parkour_race/function/disable_mob_griefing.mcfunction +1 -0
  380. package/dist/data/parkour_race/function/enable_keep_inventory.mcfunction +1 -0
  381. package/dist/data/parkour_race/function/end_sparkles_at.mcfunction +1 -0
  382. package/dist/data/parkour_race/function/explosion_effect.mcfunction +1 -0
  383. package/dist/data/parkour_race/function/finish_race.mcfunction +20 -0
  384. package/dist/data/parkour_race/function/finish_race__else_2.mcfunction +4 -0
  385. package/dist/data/parkour_race/function/finish_race__else_5.mcfunction +3 -0
  386. package/dist/data/parkour_race/function/finish_race__merge_1.mcfunction +3 -0
  387. package/dist/data/parkour_race/function/finish_race__merge_4.mcfunction +1 -0
  388. package/dist/data/parkour_race/function/finish_race__then_0.mcfunction +8 -0
  389. package/dist/data/parkour_race/function/finish_race__then_3.mcfunction +10 -0
  390. package/dist/data/parkour_race/function/flames.mcfunction +1 -0
  391. package/dist/data/parkour_race/function/glass_box.mcfunction +2 -0
  392. package/dist/data/parkour_race/function/glow.mcfunction +1 -0
  393. package/dist/data/parkour_race/function/happy_at.mcfunction +1 -0
  394. package/dist/data/parkour_race/function/hearts_at.mcfunction +1 -0
  395. package/dist/data/parkour_race/function/hide_bar.mcfunction +4 -0
  396. package/dist/data/parkour_race/function/init.mcfunction +18 -0
  397. package/dist/data/parkour_race/function/invisible.mcfunction +1 -0
  398. package/dist/data/parkour_race/function/jump.mcfunction +1 -0
  399. package/dist/data/parkour_race/function/load.mcfunction +1 -0
  400. package/dist/data/parkour_race/function/night_vision.mcfunction +1 -0
  401. package/dist/data/parkour_race/function/portal_effect.mcfunction +1 -0
  402. package/dist/data/parkour_race/function/quit_race.mcfunction +10 -0
  403. package/dist/data/parkour_race/function/quit_race__merge_1.mcfunction +1 -0
  404. package/dist/data/parkour_race/function/quit_race__then_0.mcfunction +11 -0
  405. package/dist/data/parkour_race/function/race_tick.mcfunction +1 -0
  406. package/dist/data/parkour_race/function/race_tick__foreach_t0.mcfunction +10 -0
  407. package/dist/data/parkour_race/function/race_tick__foreach_t0__merge_1.mcfunction +1 -0
  408. package/dist/data/parkour_race/function/race_tick__foreach_t0__then_0.mcfunction +13 -0
  409. package/dist/data/parkour_race/function/reach_checkpoint.mcfunction +11 -0
  410. package/dist/data/parkour_race/function/regen.mcfunction +1 -0
  411. package/dist/data/parkour_race/function/remove_bar.mcfunction +3 -0
  412. package/dist/data/parkour_race/function/resistance.mcfunction +1 -0
  413. package/dist/data/parkour_race/function/respawn_at_checkpoint.mcfunction +7 -0
  414. package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_1.mcfunction +5 -0
  415. package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_3.mcfunction +5 -0
  416. package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_5.mcfunction +5 -0
  417. package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_7.mcfunction +5 -0
  418. package/dist/data/parkour_race/function/respawn_at_checkpoint__merge_9.mcfunction +1 -0
  419. package/dist/data/parkour_race/function/respawn_at_checkpoint__then_0.mcfunction +6 -0
  420. package/dist/data/parkour_race/function/respawn_at_checkpoint__then_2.mcfunction +6 -0
  421. package/dist/data/parkour_race/function/respawn_at_checkpoint__then_4.mcfunction +6 -0
  422. package/dist/data/parkour_race/function/respawn_at_checkpoint__then_6.mcfunction +6 -0
  423. package/dist/data/parkour_race/function/respawn_at_checkpoint__then_8.mcfunction +6 -0
  424. package/dist/data/parkour_race/function/set_day.mcfunction +1 -0
  425. package/dist/data/parkour_race/function/set_easy.mcfunction +1 -0
  426. package/dist/data/parkour_race/function/set_hard.mcfunction +1 -0
  427. package/dist/data/parkour_race/function/set_midnight.mcfunction +1 -0
  428. package/dist/data/parkour_race/function/set_night.mcfunction +1 -0
  429. package/dist/data/parkour_race/function/set_noon.mcfunction +1 -0
  430. package/dist/data/parkour_race/function/set_normal.mcfunction +1 -0
  431. package/dist/data/parkour_race/function/set_peaceful.mcfunction +1 -0
  432. package/dist/data/parkour_race/function/show_bar.mcfunction +4 -0
  433. package/dist/data/parkour_race/function/show_leaderboard.mcfunction +4 -0
  434. package/dist/data/parkour_race/function/slow_fall.mcfunction +1 -0
  435. package/dist/data/parkour_race/function/smoke.mcfunction +1 -0
  436. package/dist/data/parkour_race/function/sparkles_at.mcfunction +1 -0
  437. package/dist/data/parkour_race/function/speed.mcfunction +1 -0
  438. package/dist/data/parkour_race/function/start_race.mcfunction +10 -0
  439. package/dist/data/parkour_race/function/start_race__merge_1.mcfunction +23 -0
  440. package/dist/data/parkour_race/function/start_race__then_0.mcfunction +1 -0
  441. package/dist/data/parkour_race/function/strength.mcfunction +1 -0
  442. package/dist/data/parkour_race/function/totem_at.mcfunction +1 -0
  443. package/dist/data/parkour_race/function/update_bar.mcfunction +5 -0
  444. package/dist/data/parkour_race/function/update_bar_color.mcfunction +7 -0
  445. package/dist/data/parkour_race/function/update_bar_color__else_2.mcfunction +5 -0
  446. package/dist/data/parkour_race/function/update_bar_color__else_5.mcfunction +4 -0
  447. package/dist/data/parkour_race/function/update_bar_color__merge_1.mcfunction +1 -0
  448. package/dist/data/parkour_race/function/update_bar_color__merge_4.mcfunction +1 -0
  449. package/dist/data/parkour_race/function/update_bar_color__then_0.mcfunction +4 -0
  450. package/dist/data/parkour_race/function/update_bar_color__then_3.mcfunction +4 -0
  451. package/dist/data/parkour_race/function/weather_clear.mcfunction +1 -0
  452. package/dist/data/parkour_race/function/weather_rain.mcfunction +1 -0
  453. package/dist/data/parkour_race/function/weather_thunder.mcfunction +1 -0
  454. package/dist/data/quiz/function/__load.mcfunction +16 -0
  455. package/dist/data/quiz/function/__tick.mcfunction +6 -0
  456. package/dist/data/quiz/function/__trigger_quiz_a_dispatch.mcfunction +4 -0
  457. package/dist/data/quiz/function/__trigger_quiz_b_dispatch.mcfunction +4 -0
  458. package/dist/data/quiz/function/__trigger_quiz_c_dispatch.mcfunction +4 -0
  459. package/dist/data/quiz/function/__trigger_quiz_start_dispatch.mcfunction +4 -0
  460. package/dist/data/quiz/function/answer_a.mcfunction +4 -0
  461. package/dist/data/quiz/function/answer_b.mcfunction +4 -0
  462. package/dist/data/quiz/function/answer_c.mcfunction +4 -0
  463. package/dist/data/quiz/function/ask_question/else_1.mcfunction +5 -0
  464. package/dist/data/quiz/function/ask_question/else_4.mcfunction +5 -0
  465. package/dist/data/quiz/function/ask_question/else_7.mcfunction +4 -0
  466. package/dist/data/quiz/function/ask_question/merge_2.mcfunction +1 -0
  467. package/dist/data/quiz/function/ask_question/merge_5.mcfunction +2 -0
  468. package/dist/data/quiz/function/ask_question/merge_8.mcfunction +2 -0
  469. package/dist/data/quiz/function/ask_question/then_0.mcfunction +4 -0
  470. package/dist/data/quiz/function/ask_question/then_3.mcfunction +4 -0
  471. package/dist/data/quiz/function/ask_question/then_6.mcfunction +4 -0
  472. package/dist/data/quiz/function/ask_question.mcfunction +7 -0
  473. package/dist/data/quiz/function/finish_quiz.mcfunction +6 -0
  474. package/dist/data/quiz/function/handle_answer/else_1.mcfunction +5 -0
  475. package/dist/data/quiz/function/handle_answer/else_10.mcfunction +3 -0
  476. package/dist/data/quiz/function/handle_answer/else_16.mcfunction +3 -0
  477. package/dist/data/quiz/function/handle_answer/else_4.mcfunction +3 -0
  478. package/dist/data/quiz/function/handle_answer/else_7.mcfunction +5 -0
  479. package/dist/data/quiz/function/handle_answer/merge_11.mcfunction +2 -0
  480. package/dist/data/quiz/function/handle_answer/merge_14.mcfunction +2 -0
  481. package/dist/data/quiz/function/handle_answer/merge_17.mcfunction +2 -0
  482. package/dist/data/quiz/function/handle_answer/merge_2.mcfunction +8 -0
  483. package/dist/data/quiz/function/handle_answer/merge_5.mcfunction +2 -0
  484. package/dist/data/quiz/function/handle_answer/merge_8.mcfunction +2 -0
  485. package/dist/data/quiz/function/handle_answer/then_0.mcfunction +5 -0
  486. package/dist/data/quiz/function/handle_answer/then_12.mcfunction +5 -0
  487. package/dist/data/quiz/function/handle_answer/then_15.mcfunction +6 -0
  488. package/dist/data/quiz/function/handle_answer/then_3.mcfunction +6 -0
  489. package/dist/data/quiz/function/handle_answer/then_6.mcfunction +5 -0
  490. package/dist/data/quiz/function/handle_answer/then_9.mcfunction +6 -0
  491. package/dist/data/quiz/function/handle_answer.mcfunction +11 -0
  492. package/dist/data/quiz/function/start_quiz.mcfunction +5 -0
  493. package/dist/data/rawtest/function/load.mcfunction +1 -0
  494. package/dist/data/rawtest/function/test.mcfunction +2 -0
  495. package/dist/data/reqtest/function/__load.mcfunction +4 -0
  496. package/dist/data/reqtest/function/_table_init.mcfunction +2 -0
  497. package/dist/data/reqtest/function/no_trig.mcfunction +3 -0
  498. package/dist/data/reqtest/function/use_table.mcfunction +4 -0
  499. package/dist/data/reqtest2/function/__load.mcfunction +3 -0
  500. package/dist/data/reqtest2/function/no_trig.mcfunction +3 -0
  501. package/dist/data/runtime/function/__load.mcfunction +5 -0
  502. package/dist/data/runtime/function/__tick.mcfunction +2 -0
  503. package/dist/data/runtime/function/counter_tick/then_0.mcfunction +3 -0
  504. package/dist/data/runtime/function/counter_tick.mcfunction +13 -0
  505. package/dist/data/shop/function/__load.mcfunction +7 -0
  506. package/dist/data/shop/function/__tick.mcfunction +3 -0
  507. package/dist/data/shop/function/__trigger_shop_buy_dispatch.mcfunction +4 -0
  508. package/dist/data/shop/function/complete_purchase/else_1.mcfunction +5 -0
  509. package/dist/data/shop/function/complete_purchase/else_4.mcfunction +5 -0
  510. package/dist/data/shop/function/complete_purchase/else_7.mcfunction +3 -0
  511. package/dist/data/shop/function/complete_purchase/merge_2.mcfunction +2 -0
  512. package/dist/data/shop/function/complete_purchase/merge_5.mcfunction +2 -0
  513. package/dist/data/shop/function/complete_purchase/merge_8.mcfunction +2 -0
  514. package/dist/data/shop/function/complete_purchase/then_0.mcfunction +4 -0
  515. package/dist/data/shop/function/complete_purchase/then_3.mcfunction +4 -0
  516. package/dist/data/shop/function/complete_purchase/then_6.mcfunction +4 -0
  517. package/dist/data/shop/function/complete_purchase.mcfunction +7 -0
  518. package/dist/data/shop/function/handle_shop_trigger.mcfunction +3 -0
  519. package/dist/data/swap_test/function/__load.mcfunction +3 -0
  520. package/dist/data/swap_test/function/gcd_old/loop_body_1.mcfunction +7 -0
  521. package/dist/data/swap_test/function/gcd_old/loop_check_0.mcfunction +5 -0
  522. package/dist/data/swap_test/function/gcd_old/loop_exit_2.mcfunction +3 -0
  523. package/dist/data/swap_test/function/gcd_old.mcfunction +8 -0
  524. package/dist/data/test/function/_atan_init.mcfunction +4 -0
  525. package/dist/data/test/function/_hsl_chroma_x.mcfunction +11 -0
  526. package/dist/data/test/function/_hsl_chroma_x__merge_1.mcfunction +6 -0
  527. package/dist/data/test/function/_hsl_chroma_x__then_0.mcfunction +4 -0
  528. package/dist/data/test/function/_math_init.mcfunction +4 -0
  529. package/dist/data/test/function/aabb_contains.mcfunction +13 -0
  530. package/dist/data/test/function/aabb_contains__merge_1.mcfunction +4 -0
  531. package/dist/data/test/function/aabb_contains__merge_10.mcfunction +4 -0
  532. package/dist/data/test/function/aabb_contains__merge_13.mcfunction +4 -0
  533. package/dist/data/test/function/aabb_contains__merge_16.mcfunction +2 -0
  534. package/dist/data/test/function/aabb_contains__merge_4.mcfunction +4 -0
  535. package/dist/data/test/function/aabb_contains__merge_7.mcfunction +4 -0
  536. package/dist/data/test/function/aabb_contains__then_0.mcfunction +2 -0
  537. package/dist/data/test/function/aabb_contains__then_12.mcfunction +2 -0
  538. package/dist/data/test/function/aabb_contains__then_15.mcfunction +2 -0
  539. package/dist/data/test/function/aabb_contains__then_3.mcfunction +2 -0
  540. package/dist/data/test/function/aabb_contains__then_6.mcfunction +2 -0
  541. package/dist/data/test/function/aabb_contains__then_9.mcfunction +2 -0
  542. package/dist/data/test/function/add2d_x.mcfunction +5 -0
  543. package/dist/data/test/function/add2d_y.mcfunction +5 -0
  544. package/dist/data/test/function/add3d_x.mcfunction +5 -0
  545. package/dist/data/test/function/add3d_y.mcfunction +5 -0
  546. package/dist/data/test/function/add3d_z.mcfunction +5 -0
  547. package/dist/data/test/function/angle_diff.mcfunction +13 -0
  548. package/dist/data/test/function/angle_diff__merge_1.mcfunction +1 -0
  549. package/dist/data/test/function/angle_diff__then_0.mcfunction +4 -0
  550. package/dist/data/test/function/angle_normalize.mcfunction +3 -0
  551. package/dist/data/test/function/angle_normalize__loop_body_1.mcfunction +4 -0
  552. package/dist/data/test/function/angle_normalize__loop_body_4.mcfunction +4 -0
  553. package/dist/data/test/function/angle_normalize__loop_exit_2.mcfunction +1 -0
  554. package/dist/data/test/function/angle_normalize__loop_exit_5.mcfunction +1 -0
  555. package/dist/data/test/function/angle_normalize__loop_header_0.mcfunction +5 -0
  556. package/dist/data/test/function/angle_normalize__loop_header_3.mcfunction +5 -0
  557. package/dist/data/test/function/approx_eq.mcfunction +11 -0
  558. package/dist/data/test/function/approx_eq__merge_1.mcfunction +4 -0
  559. package/dist/data/test/function/approx_eq__merge_3.mcfunction +2 -0
  560. package/dist/data/test/function/approx_eq__then_0.mcfunction +4 -0
  561. package/dist/data/test/function/approx_eq__then_2.mcfunction +2 -0
  562. package/dist/data/test/function/atan2_fixed.mcfunction +7 -0
  563. package/dist/data/test/function/atan2_fixed__else_30.mcfunction +2 -0
  564. package/dist/data/test/function/atan2_fixed__loop_body_26.mcfunction +22 -0
  565. package/dist/data/test/function/atan2_fixed__loop_exit_27.mcfunction +6 -0
  566. package/dist/data/test/function/atan2_fixed__loop_header_25.mcfunction +4 -0
  567. package/dist/data/test/function/atan2_fixed__merge_1.mcfunction +5 -0
  568. package/dist/data/test/function/atan2_fixed__merge_10.mcfunction +6 -0
  569. package/dist/data/test/function/atan2_fixed__merge_12.mcfunction +2 -0
  570. package/dist/data/test/function/atan2_fixed__merge_16.mcfunction +6 -0
  571. package/dist/data/test/function/atan2_fixed__merge_18.mcfunction +5 -0
  572. package/dist/data/test/function/atan2_fixed__merge_20.mcfunction +5 -0
  573. package/dist/data/test/function/atan2_fixed__merge_22.mcfunction +5 -0
  574. package/dist/data/test/function/atan2_fixed__merge_24.mcfunction +3 -0
  575. package/dist/data/test/function/atan2_fixed__merge_29.mcfunction +1 -0
  576. package/dist/data/test/function/atan2_fixed__merge_3.mcfunction +5 -0
  577. package/dist/data/test/function/atan2_fixed__merge_32.mcfunction +5 -0
  578. package/dist/data/test/function/atan2_fixed__merge_34.mcfunction +5 -0
  579. package/dist/data/test/function/atan2_fixed__merge_36.mcfunction +3 -0
  580. package/dist/data/test/function/atan2_fixed__merge_40.mcfunction +3 -0
  581. package/dist/data/test/function/atan2_fixed__merge_6.mcfunction +2 -0
  582. package/dist/data/test/function/atan2_fixed__then_0.mcfunction +5 -0
  583. package/dist/data/test/function/atan2_fixed__then_11.mcfunction +2 -0
  584. package/dist/data/test/function/atan2_fixed__then_15.mcfunction +4 -0
  585. package/dist/data/test/function/atan2_fixed__then_17.mcfunction +4 -0
  586. package/dist/data/test/function/atan2_fixed__then_19.mcfunction +2 -0
  587. package/dist/data/test/function/atan2_fixed__then_2.mcfunction +2 -0
  588. package/dist/data/test/function/atan2_fixed__then_21.mcfunction +2 -0
  589. package/dist/data/test/function/atan2_fixed__then_23.mcfunction +5 -0
  590. package/dist/data/test/function/atan2_fixed__then_28.mcfunction +4 -0
  591. package/dist/data/test/function/atan2_fixed__then_31.mcfunction +4 -0
  592. package/dist/data/test/function/atan2_fixed__then_33.mcfunction +5 -0
  593. package/dist/data/test/function/atan2_fixed__then_35.mcfunction +1 -0
  594. package/dist/data/test/function/atan2_fixed__then_39.mcfunction +3 -0
  595. package/dist/data/test/function/atan2_fixed__then_5.mcfunction +2 -0
  596. package/dist/data/test/function/atan2_fixed__then_9.mcfunction +5 -0
  597. package/dist/data/test/function/avg3.mcfunction +11 -0
  598. package/dist/data/test/function/avg5.mcfunction +17 -0
  599. package/dist/data/test/function/bernoulli.mcfunction +13 -0
  600. package/dist/data/test/function/bernoulli__merge_1.mcfunction +7 -0
  601. package/dist/data/test/function/bernoulli__merge_3.mcfunction +2 -0
  602. package/dist/data/test/function/bernoulli__then_0.mcfunction +4 -0
  603. package/dist/data/test/function/bernoulli__then_2.mcfunction +2 -0
  604. package/dist/data/test/function/bigint3_add_hi.mcfunction +11 -0
  605. package/dist/data/test/function/bigint3_add_lo.mcfunction +8 -0
  606. package/dist/data/test/function/bigint3_add_mid.mcfunction +11 -0
  607. package/dist/data/test/function/bigint3_borrow_lo.mcfunction +6 -0
  608. package/dist/data/test/function/bigint3_borrow_lo__merge_1.mcfunction +2 -0
  609. package/dist/data/test/function/bigint3_borrow_lo__then_0.mcfunction +2 -0
  610. package/dist/data/test/function/bigint3_borrow_mid.mcfunction +9 -0
  611. package/dist/data/test/function/bigint3_borrow_mid__merge_1.mcfunction +2 -0
  612. package/dist/data/test/function/bigint3_borrow_mid__then_0.mcfunction +2 -0
  613. package/dist/data/test/function/bigint3_carry_lo.mcfunction +8 -0
  614. package/dist/data/test/function/bigint3_carry_mid.mcfunction +11 -0
  615. package/dist/data/test/function/bigint3_cmp.mcfunction +10 -0
  616. package/dist/data/test/function/bigint3_cmp__merge_1.mcfunction +4 -0
  617. package/dist/data/test/function/bigint3_cmp__merge_10.mcfunction +4 -0
  618. package/dist/data/test/function/bigint3_cmp__merge_13.mcfunction +4 -0
  619. package/dist/data/test/function/bigint3_cmp__merge_16.mcfunction +2 -0
  620. package/dist/data/test/function/bigint3_cmp__merge_4.mcfunction +4 -0
  621. package/dist/data/test/function/bigint3_cmp__merge_7.mcfunction +4 -0
  622. package/dist/data/test/function/bigint3_cmp__then_0.mcfunction +2 -0
  623. package/dist/data/test/function/bigint3_cmp__then_12.mcfunction +2 -0
  624. package/dist/data/test/function/bigint3_cmp__then_15.mcfunction +2 -0
  625. package/dist/data/test/function/bigint3_cmp__then_3.mcfunction +2 -0
  626. package/dist/data/test/function/bigint3_cmp__then_6.mcfunction +2 -0
  627. package/dist/data/test/function/bigint3_cmp__then_9.mcfunction +2 -0
  628. package/dist/data/test/function/bigint3_div_chunk.mcfunction +11 -0
  629. package/dist/data/test/function/bigint3_mul1_hi.mcfunction +8 -0
  630. package/dist/data/test/function/bigint3_mul1_lo.mcfunction +8 -0
  631. package/dist/data/test/function/bigint3_mul1_mid.mcfunction +2 -0
  632. package/dist/data/test/function/bigint3_rem_chunk.mcfunction +11 -0
  633. package/dist/data/test/function/bigint3_sub_hi.mcfunction +8 -0
  634. package/dist/data/test/function/bigint3_sub_lo.mcfunction +6 -0
  635. package/dist/data/test/function/bigint3_sub_lo__merge_1.mcfunction +5 -0
  636. package/dist/data/test/function/bigint3_sub_lo__then_0.mcfunction +3 -0
  637. package/dist/data/test/function/bigint3_sub_mid.mcfunction +13 -0
  638. package/dist/data/test/function/bigint3_sub_mid__merge_1.mcfunction +1 -0
  639. package/dist/data/test/function/bigint3_sub_mid__then_0.mcfunction +4 -0
  640. package/dist/data/test/function/bigint3_to_int32.mcfunction +14 -0
  641. package/dist/data/test/function/bigint_base.mcfunction +2 -0
  642. package/dist/data/test/function/bit_and.mcfunction +6 -0
  643. package/dist/data/test/function/bit_and__loop_body_1.mcfunction +10 -0
  644. package/dist/data/test/function/bit_and__loop_exit_2.mcfunction +1 -0
  645. package/dist/data/test/function/bit_and__loop_header_0.mcfunction +5 -0
  646. package/dist/data/test/function/bit_and__merge_4.mcfunction +8 -0
  647. package/dist/data/test/function/bit_and__merge_6.mcfunction +1 -0
  648. package/dist/data/test/function/bit_and__then_3.mcfunction +10 -0
  649. package/dist/data/test/function/bit_and__then_5.mcfunction +4 -0
  650. package/dist/data/test/function/bit_clear.mcfunction +5 -0
  651. package/dist/data/test/function/bit_clear__loop_body_1.mcfunction +8 -0
  652. package/dist/data/test/function/bit_clear__loop_exit_2.mcfunction +10 -0
  653. package/dist/data/test/function/bit_clear__loop_header_0.mcfunction +4 -0
  654. package/dist/data/test/function/bit_clear__merge_4.mcfunction +1 -0
  655. package/dist/data/test/function/bit_clear__then_3.mcfunction +3 -0
  656. package/dist/data/test/function/bit_get.mcfunction +5 -0
  657. package/dist/data/test/function/bit_get__loop_body_1.mcfunction +8 -0
  658. package/dist/data/test/function/bit_get__loop_exit_2.mcfunction +6 -0
  659. package/dist/data/test/function/bit_get__loop_header_0.mcfunction +4 -0
  660. package/dist/data/test/function/bit_not.mcfunction +5 -0
  661. package/dist/data/test/function/bit_not__loop_body_1.mcfunction +10 -0
  662. package/dist/data/test/function/bit_not__loop_exit_2.mcfunction +1 -0
  663. package/dist/data/test/function/bit_not__loop_header_0.mcfunction +5 -0
  664. package/dist/data/test/function/bit_not__merge_4.mcfunction +8 -0
  665. package/dist/data/test/function/bit_not__then_3.mcfunction +4 -0
  666. package/dist/data/test/function/bit_or.mcfunction +6 -0
  667. package/dist/data/test/function/bit_or__loop_body_1.mcfunction +10 -0
  668. package/dist/data/test/function/bit_or__loop_exit_2.mcfunction +1 -0
  669. package/dist/data/test/function/bit_or__loop_header_0.mcfunction +5 -0
  670. package/dist/data/test/function/bit_or__merge_4.mcfunction +10 -0
  671. package/dist/data/test/function/bit_or__merge_6.mcfunction +8 -0
  672. package/dist/data/test/function/bit_or__merge_8.mcfunction +1 -0
  673. package/dist/data/test/function/bit_or__then_3.mcfunction +4 -0
  674. package/dist/data/test/function/bit_or__then_5.mcfunction +10 -0
  675. package/dist/data/test/function/bit_or__then_7.mcfunction +4 -0
  676. package/dist/data/test/function/bit_set.mcfunction +5 -0
  677. package/dist/data/test/function/bit_set__loop_body_1.mcfunction +8 -0
  678. package/dist/data/test/function/bit_set__loop_exit_2.mcfunction +10 -0
  679. package/dist/data/test/function/bit_set__loop_header_0.mcfunction +4 -0
  680. package/dist/data/test/function/bit_set__merge_4.mcfunction +1 -0
  681. package/dist/data/test/function/bit_set__then_3.mcfunction +3 -0
  682. package/dist/data/test/function/bit_shl.mcfunction +5 -0
  683. package/dist/data/test/function/bit_shl__loop_body_1.mcfunction +8 -0
  684. package/dist/data/test/function/bit_shl__loop_exit_2.mcfunction +1 -0
  685. package/dist/data/test/function/bit_shl__loop_header_0.mcfunction +4 -0
  686. package/dist/data/test/function/bit_shr.mcfunction +5 -0
  687. package/dist/data/test/function/bit_shr__loop_body_1.mcfunction +8 -0
  688. package/dist/data/test/function/bit_shr__loop_exit_2.mcfunction +1 -0
  689. package/dist/data/test/function/bit_shr__loop_header_0.mcfunction +4 -0
  690. package/dist/data/test/function/bit_toggle.mcfunction +5 -0
  691. package/dist/data/test/function/bit_toggle__loop_body_1.mcfunction +8 -0
  692. package/dist/data/test/function/bit_toggle__loop_exit_2.mcfunction +10 -0
  693. package/dist/data/test/function/bit_toggle__loop_header_0.mcfunction +4 -0
  694. package/dist/data/test/function/bit_toggle__merge_4.mcfunction +3 -0
  695. package/dist/data/test/function/bit_toggle__then_3.mcfunction +3 -0
  696. package/dist/data/test/function/bit_xor.mcfunction +6 -0
  697. package/dist/data/test/function/bit_xor__loop_body_1.mcfunction +14 -0
  698. package/dist/data/test/function/bit_xor__loop_exit_2.mcfunction +1 -0
  699. package/dist/data/test/function/bit_xor__loop_header_0.mcfunction +5 -0
  700. package/dist/data/test/function/bit_xor__merge_4.mcfunction +8 -0
  701. package/dist/data/test/function/bit_xor__then_3.mcfunction +4 -0
  702. package/dist/data/test/function/cbrt_fx.mcfunction +6 -0
  703. package/dist/data/test/function/cbrt_fx__loop_body_6.mcfunction +8 -0
  704. package/dist/data/test/function/cbrt_fx__loop_exit_7.mcfunction +1 -0
  705. package/dist/data/test/function/cbrt_fx__loop_header_5.mcfunction +5 -0
  706. package/dist/data/test/function/cbrt_fx__merge_1.mcfunction +9 -0
  707. package/dist/data/test/function/cbrt_fx__merge_11.mcfunction +6 -0
  708. package/dist/data/test/function/cbrt_fx__merge_13.mcfunction +4 -0
  709. package/dist/data/test/function/cbrt_fx__merge_4.mcfunction +2 -0
  710. package/dist/data/test/function/cbrt_fx__merge_9.mcfunction +14 -0
  711. package/dist/data/test/function/cbrt_fx__then_0.mcfunction +2 -0
  712. package/dist/data/test/function/cbrt_fx__then_10.mcfunction +2 -0
  713. package/dist/data/test/function/cbrt_fx__then_12.mcfunction +2 -0
  714. package/dist/data/test/function/cbrt_fx__then_3.mcfunction +2 -0
  715. package/dist/data/test/function/cbrt_fx__then_8.mcfunction +2 -0
  716. package/dist/data/test/function/ceil_div.mcfunction +9 -0
  717. package/dist/data/test/function/chebyshev.mcfunction +15 -0
  718. package/dist/data/test/function/chebyshev3d.mcfunction +20 -0
  719. package/dist/data/test/function/chebyshev3d__merge_1.mcfunction +5 -0
  720. package/dist/data/test/function/chebyshev3d__merge_3.mcfunction +5 -0
  721. package/dist/data/test/function/chebyshev3d__merge_5.mcfunction +5 -0
  722. package/dist/data/test/function/chebyshev3d__merge_7.mcfunction +4 -0
  723. package/dist/data/test/function/chebyshev3d__merge_9.mcfunction +1 -0
  724. package/dist/data/test/function/chebyshev3d__then_0.mcfunction +4 -0
  725. package/dist/data/test/function/chebyshev3d__then_2.mcfunction +4 -0
  726. package/dist/data/test/function/chebyshev3d__then_4.mcfunction +4 -0
  727. package/dist/data/test/function/chebyshev3d__then_6.mcfunction +2 -0
  728. package/dist/data/test/function/chebyshev3d__then_8.mcfunction +2 -0
  729. package/dist/data/test/function/chebyshev__merge_1.mcfunction +5 -0
  730. package/dist/data/test/function/chebyshev__merge_3.mcfunction +4 -0
  731. package/dist/data/test/function/chebyshev__merge_5.mcfunction +1 -0
  732. package/dist/data/test/function/chebyshev__then_0.mcfunction +4 -0
  733. package/dist/data/test/function/chebyshev__then_2.mcfunction +4 -0
  734. package/dist/data/test/function/chebyshev__then_4.mcfunction +1 -0
  735. package/dist/data/test/function/chunk_hi.mcfunction +5 -0
  736. package/dist/data/test/function/chunk_lo.mcfunction +5 -0
  737. package/dist/data/test/function/clamp3.mcfunction +7 -0
  738. package/dist/data/test/function/clamp3__merge_1.mcfunction +4 -0
  739. package/dist/data/test/function/clamp3__merge_4.mcfunction +1 -0
  740. package/dist/data/test/function/clamp3__then_0.mcfunction +1 -0
  741. package/dist/data/test/function/clamp3__then_3.mcfunction +1 -0
  742. package/dist/data/test/function/combinations.mcfunction +7 -0
  743. package/dist/data/test/function/combinations__loop_body_9.mcfunction +15 -0
  744. package/dist/data/test/function/combinations__loop_exit_10.mcfunction +1 -0
  745. package/dist/data/test/function/combinations__loop_header_8.mcfunction +4 -0
  746. package/dist/data/test/function/combinations__merge_1.mcfunction +4 -0
  747. package/dist/data/test/function/combinations__merge_4.mcfunction +7 -0
  748. package/dist/data/test/function/combinations__merge_7.mcfunction +3 -0
  749. package/dist/data/test/function/combinations__then_0.mcfunction +2 -0
  750. package/dist/data/test/function/combinations__then_3.mcfunction +2 -0
  751. package/dist/data/test/function/combinations__then_6.mcfunction +4 -0
  752. package/dist/data/test/function/cos_fixed.mcfunction +7 -0
  753. package/dist/data/test/function/cos_hp.mcfunction +6 -0
  754. package/dist/data/test/function/cross2d.mcfunction +11 -0
  755. package/dist/data/test/function/cross3d_x.mcfunction +11 -0
  756. package/dist/data/test/function/cross3d_y.mcfunction +11 -0
  757. package/dist/data/test/function/cross3d_z.mcfunction +11 -0
  758. package/dist/data/test/function/cylinder_contains.mcfunction +21 -0
  759. package/dist/data/test/function/cylinder_contains__merge_1.mcfunction +2 -0
  760. package/dist/data/test/function/cylinder_contains__then_0.mcfunction +2 -0
  761. package/dist/data/test/function/distance2d_fixed.mcfunction +13 -0
  762. package/dist/data/test/function/distance3d_fixed.mcfunction +18 -0
  763. package/dist/data/test/function/divfix.mcfunction +7 -0
  764. package/dist/data/test/function/divfix__merge_1.mcfunction +6 -0
  765. package/dist/data/test/function/divfix__then_0.mcfunction +2 -0
  766. package/dist/data/test/function/dot2d.mcfunction +11 -0
  767. package/dist/data/test/function/dot3d.mcfunction +17 -0
  768. package/dist/data/test/function/exp_dist_approx.mcfunction +13 -0
  769. package/dist/data/test/function/exp_dist_approx__merge_1.mcfunction +16 -0
  770. package/dist/data/test/function/exp_dist_approx__merge_3.mcfunction +11 -0
  771. package/dist/data/test/function/exp_dist_approx__merge_5.mcfunction +1 -0
  772. package/dist/data/test/function/exp_dist_approx__then_0.mcfunction +4 -0
  773. package/dist/data/test/function/exp_dist_approx__then_2.mcfunction +2 -0
  774. package/dist/data/test/function/exp_dist_approx__then_4.mcfunction +2 -0
  775. package/dist/data/test/function/exp_fx.mcfunction +17 -0
  776. package/dist/data/test/function/exp_fx__loop_body_10.mcfunction +8 -0
  777. package/dist/data/test/function/exp_fx__loop_body_5.mcfunction +8 -0
  778. package/dist/data/test/function/exp_fx__loop_exit_11.mcfunction +1 -0
  779. package/dist/data/test/function/exp_fx__loop_exit_6.mcfunction +1 -0
  780. package/dist/data/test/function/exp_fx__loop_header_4.mcfunction +4 -0
  781. package/dist/data/test/function/exp_fx__loop_header_9.mcfunction +4 -0
  782. package/dist/data/test/function/exp_fx__merge_1.mcfunction +48 -0
  783. package/dist/data/test/function/exp_fx__merge_3.mcfunction +5 -0
  784. package/dist/data/test/function/exp_fx__merge_8.mcfunction +1 -0
  785. package/dist/data/test/function/exp_fx__then_0.mcfunction +7 -0
  786. package/dist/data/test/function/exp_fx__then_2.mcfunction +2 -0
  787. package/dist/data/test/function/exp_fx__then_7.mcfunction +5 -0
  788. package/dist/data/test/function/factorial.mcfunction +6 -0
  789. package/dist/data/test/function/factorial__loop_body_4.mcfunction +7 -0
  790. package/dist/data/test/function/factorial__loop_exit_5.mcfunction +1 -0
  791. package/dist/data/test/function/factorial__loop_header_3.mcfunction +4 -0
  792. package/dist/data/test/function/factorial__merge_1.mcfunction +3 -0
  793. package/dist/data/test/function/factorial__then_0.mcfunction +2 -0
  794. package/dist/data/test/function/format_time_h.mcfunction +5 -0
  795. package/dist/data/test/function/format_time_m.mcfunction +8 -0
  796. package/dist/data/test/function/format_time_s.mcfunction +8 -0
  797. package/dist/data/test/function/gamma_int.mcfunction +6 -0
  798. package/dist/data/test/function/gamma_int__merge_1.mcfunction +6 -0
  799. package/dist/data/test/function/gamma_int__then_0.mcfunction +2 -0
  800. package/dist/data/test/function/gcd.mcfunction +8 -0
  801. package/dist/data/test/function/gcd__loop_body_5.mcfunction +5 -0
  802. package/dist/data/test/function/gcd__loop_exit_6.mcfunction +1 -0
  803. package/dist/data/test/function/gcd__loop_header_4.mcfunction +5 -0
  804. package/dist/data/test/function/gcd__merge_1.mcfunction +6 -0
  805. package/dist/data/test/function/gcd__merge_3.mcfunction +1 -0
  806. package/dist/data/test/function/gcd__then_0.mcfunction +4 -0
  807. package/dist/data/test/function/gcd__then_2.mcfunction +4 -0
  808. package/dist/data/test/function/hsl_to_b.mcfunction +24 -0
  809. package/dist/data/test/function/hsl_to_b__merge_1.mcfunction +30 -0
  810. package/dist/data/test/function/hsl_to_b__merge_12.mcfunction +5 -0
  811. package/dist/data/test/function/hsl_to_b__merge_15.mcfunction +3 -0
  812. package/dist/data/test/function/hsl_to_b__merge_3.mcfunction +5 -0
  813. package/dist/data/test/function/hsl_to_b__merge_6.mcfunction +5 -0
  814. package/dist/data/test/function/hsl_to_b__merge_9.mcfunction +5 -0
  815. package/dist/data/test/function/hsl_to_b__then_0.mcfunction +4 -0
  816. package/dist/data/test/function/hsl_to_b__then_11.mcfunction +3 -0
  817. package/dist/data/test/function/hsl_to_b__then_14.mcfunction +3 -0
  818. package/dist/data/test/function/hsl_to_b__then_2.mcfunction +1 -0
  819. package/dist/data/test/function/hsl_to_b__then_5.mcfunction +1 -0
  820. package/dist/data/test/function/hsl_to_b__then_8.mcfunction +3 -0
  821. package/dist/data/test/function/hsl_to_g.mcfunction +24 -0
  822. package/dist/data/test/function/hsl_to_g__merge_1.mcfunction +30 -0
  823. package/dist/data/test/function/hsl_to_g__merge_12.mcfunction +5 -0
  824. package/dist/data/test/function/hsl_to_g__merge_15.mcfunction +1 -0
  825. package/dist/data/test/function/hsl_to_g__merge_3.mcfunction +5 -0
  826. package/dist/data/test/function/hsl_to_g__merge_6.mcfunction +5 -0
  827. package/dist/data/test/function/hsl_to_g__merge_9.mcfunction +5 -0
  828. package/dist/data/test/function/hsl_to_g__then_0.mcfunction +4 -0
  829. package/dist/data/test/function/hsl_to_g__then_11.mcfunction +3 -0
  830. package/dist/data/test/function/hsl_to_g__then_14.mcfunction +1 -0
  831. package/dist/data/test/function/hsl_to_g__then_2.mcfunction +3 -0
  832. package/dist/data/test/function/hsl_to_g__then_5.mcfunction +3 -0
  833. package/dist/data/test/function/hsl_to_g__then_8.mcfunction +3 -0
  834. package/dist/data/test/function/hsl_to_packed.mcfunction +24 -0
  835. package/dist/data/test/function/hsl_to_r.mcfunction +24 -0
  836. package/dist/data/test/function/hsl_to_r__merge_1.mcfunction +30 -0
  837. package/dist/data/test/function/hsl_to_r__merge_12.mcfunction +5 -0
  838. package/dist/data/test/function/hsl_to_r__merge_15.mcfunction +3 -0
  839. package/dist/data/test/function/hsl_to_r__merge_3.mcfunction +5 -0
  840. package/dist/data/test/function/hsl_to_r__merge_6.mcfunction +5 -0
  841. package/dist/data/test/function/hsl_to_r__merge_9.mcfunction +5 -0
  842. package/dist/data/test/function/hsl_to_r__then_0.mcfunction +4 -0
  843. package/dist/data/test/function/hsl_to_r__then_11.mcfunction +1 -0
  844. package/dist/data/test/function/hsl_to_r__then_14.mcfunction +3 -0
  845. package/dist/data/test/function/hsl_to_r__then_2.mcfunction +3 -0
  846. package/dist/data/test/function/hsl_to_r__then_5.mcfunction +3 -0
  847. package/dist/data/test/function/hsl_to_r__then_8.mcfunction +1 -0
  848. package/dist/data/test/function/init_trig.mcfunction +1 -0
  849. package/dist/data/test/function/int32_to_bigint3_hi.mcfunction +6 -0
  850. package/dist/data/test/function/int32_to_bigint3_hi__merge_1.mcfunction +4 -0
  851. package/dist/data/test/function/int32_to_bigint3_hi__then_0.mcfunction +4 -0
  852. package/dist/data/test/function/int32_to_bigint3_lo.mcfunction +6 -0
  853. package/dist/data/test/function/int32_to_bigint3_lo__merge_1.mcfunction +4 -0
  854. package/dist/data/test/function/int32_to_bigint3_lo__then_0.mcfunction +4 -0
  855. package/dist/data/test/function/int32_to_bigint3_mid.mcfunction +6 -0
  856. package/dist/data/test/function/int32_to_bigint3_mid__merge_1.mcfunction +7 -0
  857. package/dist/data/test/function/int32_to_bigint3_mid__then_0.mcfunction +4 -0
  858. package/dist/data/test/function/isqrt.mcfunction +6 -0
  859. package/dist/data/test/function/isqrt__loop_body_10.mcfunction +8 -0
  860. package/dist/data/test/function/isqrt__loop_body_13.mcfunction +12 -0
  861. package/dist/data/test/function/isqrt__loop_body_7.mcfunction +8 -0
  862. package/dist/data/test/function/isqrt__loop_exit_11.mcfunction +2 -0
  863. package/dist/data/test/function/isqrt__loop_exit_14.mcfunction +1 -0
  864. package/dist/data/test/function/isqrt__loop_exit_8.mcfunction +9 -0
  865. package/dist/data/test/function/isqrt__loop_header_12.mcfunction +5 -0
  866. package/dist/data/test/function/isqrt__loop_header_6.mcfunction +5 -0
  867. package/dist/data/test/function/isqrt__loop_header_9.mcfunction +4 -0
  868. package/dist/data/test/function/isqrt__merge_1.mcfunction +5 -0
  869. package/dist/data/test/function/isqrt__merge_16.mcfunction +5 -0
  870. package/dist/data/test/function/isqrt__merge_4.mcfunction +3 -0
  871. package/dist/data/test/function/isqrt__then_0.mcfunction +2 -0
  872. package/dist/data/test/function/isqrt__then_15.mcfunction +1 -0
  873. package/dist/data/test/function/isqrt__then_3.mcfunction +2 -0
  874. package/dist/data/test/function/lcm.mcfunction +12 -0
  875. package/dist/data/test/function/lcm__merge_1.mcfunction +5 -0
  876. package/dist/data/test/function/lcm__then_0.mcfunction +2 -0
  877. package/dist/data/test/function/length2d_fixed.mcfunction +15 -0
  878. package/dist/data/test/function/length3d_fixed.mcfunction +20 -0
  879. package/dist/data/test/function/lerp.mcfunction +13 -0
  880. package/dist/data/test/function/lerp2d_x.mcfunction +13 -0
  881. package/dist/data/test/function/lerp2d_y.mcfunction +13 -0
  882. package/dist/data/test/function/list_avg.mcfunction +9 -0
  883. package/dist/data/test/function/list_clamp_all.mcfunction +6 -0
  884. package/dist/data/test/function/list_clamp_all__loop_body_1.mcfunction +4 -0
  885. package/dist/data/test/function/list_clamp_all__loop_exit_2.mcfunction +1 -0
  886. package/dist/data/test/function/list_clamp_all__loop_header_0.mcfunction +4 -0
  887. package/dist/data/test/function/list_clamp_all__merge_4.mcfunction +4 -0
  888. package/dist/data/test/function/list_clamp_all__merge_6.mcfunction +4 -0
  889. package/dist/data/test/function/list_clamp_all__then_3.mcfunction +1 -0
  890. package/dist/data/test/function/list_clamp_all__then_5.mcfunction +1 -0
  891. package/dist/data/test/function/list_contains.mcfunction +5 -0
  892. package/dist/data/test/function/list_contains__loop_body_1.mcfunction +4 -0
  893. package/dist/data/test/function/list_contains__loop_exit_2.mcfunction +2 -0
  894. package/dist/data/test/function/list_contains__loop_header_0.mcfunction +4 -0
  895. package/dist/data/test/function/list_contains__merge_4.mcfunction +4 -0
  896. package/dist/data/test/function/list_contains__then_3.mcfunction +2 -0
  897. package/dist/data/test/function/list_count_if_gt.mcfunction +6 -0
  898. package/dist/data/test/function/list_count_if_gt__loop_body_1.mcfunction +4 -0
  899. package/dist/data/test/function/list_count_if_gt__loop_exit_2.mcfunction +1 -0
  900. package/dist/data/test/function/list_count_if_gt__loop_header_0.mcfunction +4 -0
  901. package/dist/data/test/function/list_count_if_gt__merge_4.mcfunction +4 -0
  902. package/dist/data/test/function/list_count_if_gt__then_3.mcfunction +4 -0
  903. package/dist/data/test/function/list_fill.mcfunction +3 -0
  904. package/dist/data/test/function/list_fill__loop_body_1.mcfunction +4 -0
  905. package/dist/data/test/function/list_fill__loop_exit_2.mcfunction +1 -0
  906. package/dist/data/test/function/list_fill__loop_header_0.mcfunction +4 -0
  907. package/dist/data/test/function/list_index_of.mcfunction +5 -0
  908. package/dist/data/test/function/list_index_of__loop_body_1.mcfunction +4 -0
  909. package/dist/data/test/function/list_index_of__loop_exit_2.mcfunction +2 -0
  910. package/dist/data/test/function/list_index_of__loop_header_0.mcfunction +4 -0
  911. package/dist/data/test/function/list_index_of__merge_4.mcfunction +4 -0
  912. package/dist/data/test/function/list_index_of__then_3.mcfunction +1 -0
  913. package/dist/data/test/function/list_max.mcfunction +5 -0
  914. package/dist/data/test/function/list_max3.mcfunction +8 -0
  915. package/dist/data/test/function/list_max3__merge_1.mcfunction +4 -0
  916. package/dist/data/test/function/list_max3__merge_3.mcfunction +1 -0
  917. package/dist/data/test/function/list_max3__then_0.mcfunction +2 -0
  918. package/dist/data/test/function/list_max3__then_2.mcfunction +2 -0
  919. package/dist/data/test/function/list_max5.mcfunction +10 -0
  920. package/dist/data/test/function/list_max5__merge_1.mcfunction +4 -0
  921. package/dist/data/test/function/list_max5__merge_3.mcfunction +4 -0
  922. package/dist/data/test/function/list_max5__merge_5.mcfunction +4 -0
  923. package/dist/data/test/function/list_max5__merge_7.mcfunction +1 -0
  924. package/dist/data/test/function/list_max5__then_0.mcfunction +2 -0
  925. package/dist/data/test/function/list_max5__then_2.mcfunction +2 -0
  926. package/dist/data/test/function/list_max5__then_4.mcfunction +2 -0
  927. package/dist/data/test/function/list_max5__then_6.mcfunction +2 -0
  928. package/dist/data/test/function/list_max__loop_body_1.mcfunction +4 -0
  929. package/dist/data/test/function/list_max__loop_exit_2.mcfunction +1 -0
  930. package/dist/data/test/function/list_max__loop_header_0.mcfunction +4 -0
  931. package/dist/data/test/function/list_max__merge_4.mcfunction +4 -0
  932. package/dist/data/test/function/list_max__then_3.mcfunction +2 -0
  933. package/dist/data/test/function/list_min.mcfunction +5 -0
  934. package/dist/data/test/function/list_min3.mcfunction +8 -0
  935. package/dist/data/test/function/list_min3__merge_1.mcfunction +4 -0
  936. package/dist/data/test/function/list_min3__merge_3.mcfunction +1 -0
  937. package/dist/data/test/function/list_min3__then_0.mcfunction +2 -0
  938. package/dist/data/test/function/list_min3__then_2.mcfunction +2 -0
  939. package/dist/data/test/function/list_min5.mcfunction +10 -0
  940. package/dist/data/test/function/list_min5__merge_1.mcfunction +4 -0
  941. package/dist/data/test/function/list_min5__merge_3.mcfunction +4 -0
  942. package/dist/data/test/function/list_min5__merge_5.mcfunction +4 -0
  943. package/dist/data/test/function/list_min5__merge_7.mcfunction +1 -0
  944. package/dist/data/test/function/list_min5__then_0.mcfunction +2 -0
  945. package/dist/data/test/function/list_min5__then_2.mcfunction +2 -0
  946. package/dist/data/test/function/list_min5__then_4.mcfunction +2 -0
  947. package/dist/data/test/function/list_min5__then_6.mcfunction +2 -0
  948. package/dist/data/test/function/list_min__loop_body_1.mcfunction +4 -0
  949. package/dist/data/test/function/list_min__loop_exit_2.mcfunction +1 -0
  950. package/dist/data/test/function/list_min__loop_header_0.mcfunction +4 -0
  951. package/dist/data/test/function/list_min__merge_4.mcfunction +4 -0
  952. package/dist/data/test/function/list_min__then_3.mcfunction +2 -0
  953. package/dist/data/test/function/list_reverse.mcfunction +6 -0
  954. package/dist/data/test/function/list_reverse__loop_body_1.mcfunction +9 -0
  955. package/dist/data/test/function/list_reverse__loop_exit_2.mcfunction +1 -0
  956. package/dist/data/test/function/list_reverse__loop_header_0.mcfunction +4 -0
  957. package/dist/data/test/function/list_sort_asc.mcfunction +4 -0
  958. package/dist/data/test/function/list_sort_asc__loop_body_1.mcfunction +2 -0
  959. package/dist/data/test/function/list_sort_asc__loop_body_4.mcfunction +4 -0
  960. package/dist/data/test/function/list_sort_asc__loop_exit_2.mcfunction +1 -0
  961. package/dist/data/test/function/list_sort_asc__loop_exit_5.mcfunction +4 -0
  962. package/dist/data/test/function/list_sort_asc__loop_header_0.mcfunction +6 -0
  963. package/dist/data/test/function/list_sort_asc__loop_header_3.mcfunction +8 -0
  964. package/dist/data/test/function/list_sort_asc__merge_7.mcfunction +4 -0
  965. package/dist/data/test/function/list_sort_asc__then_6.mcfunction +1 -0
  966. package/dist/data/test/function/list_sort_desc.mcfunction +4 -0
  967. package/dist/data/test/function/list_sort_desc__loop_body_1.mcfunction +2 -0
  968. package/dist/data/test/function/list_sort_desc__loop_body_4.mcfunction +4 -0
  969. package/dist/data/test/function/list_sort_desc__loop_exit_2.mcfunction +1 -0
  970. package/dist/data/test/function/list_sort_desc__loop_exit_5.mcfunction +4 -0
  971. package/dist/data/test/function/list_sort_desc__loop_header_0.mcfunction +6 -0
  972. package/dist/data/test/function/list_sort_desc__loop_header_3.mcfunction +8 -0
  973. package/dist/data/test/function/list_sort_desc__merge_7.mcfunction +4 -0
  974. package/dist/data/test/function/list_sort_desc__then_6.mcfunction +1 -0
  975. package/dist/data/test/function/list_sum.mcfunction +5 -0
  976. package/dist/data/test/function/list_sum3.mcfunction +8 -0
  977. package/dist/data/test/function/list_sum4.mcfunction +11 -0
  978. package/dist/data/test/function/list_sum5.mcfunction +14 -0
  979. package/dist/data/test/function/list_sum__loop_body_1.mcfunction +7 -0
  980. package/dist/data/test/function/list_sum__loop_exit_2.mcfunction +1 -0
  981. package/dist/data/test/function/list_sum__loop_header_0.mcfunction +4 -0
  982. package/dist/data/test/function/ln.mcfunction +9 -0
  983. package/dist/data/test/function/ln__loop_body_1.mcfunction +8 -0
  984. package/dist/data/test/function/ln__loop_body_4.mcfunction +8 -0
  985. package/dist/data/test/function/ln__loop_exit_2.mcfunction +1 -0
  986. package/dist/data/test/function/ln__loop_exit_5.mcfunction +37 -0
  987. package/dist/data/test/function/ln__loop_header_0.mcfunction +4 -0
  988. package/dist/data/test/function/ln__loop_header_3.mcfunction +7 -0
  989. package/dist/data/test/function/load.mcfunction +1 -0
  990. package/dist/data/test/function/log10_fx.mcfunction +11 -0
  991. package/dist/data/test/function/log2_fx.mcfunction +11 -0
  992. package/dist/data/test/function/log2_int.mcfunction +6 -0
  993. package/dist/data/test/function/log2_int__loop_body_4.mcfunction +8 -0
  994. package/dist/data/test/function/log2_int__loop_exit_5.mcfunction +1 -0
  995. package/dist/data/test/function/log2_int__loop_header_3.mcfunction +5 -0
  996. package/dist/data/test/function/log2_int__merge_1.mcfunction +3 -0
  997. package/dist/data/test/function/log2_int__then_0.mcfunction +2 -0
  998. package/dist/data/test/function/loga_fx.mcfunction +11 -0
  999. package/dist/data/test/function/loga_fx__merge_1.mcfunction +9 -0
  1000. package/dist/data/test/function/loga_fx__then_0.mcfunction +2 -0
  1001. package/dist/data/test/function/manhattan.mcfunction +15 -0
  1002. package/dist/data/test/function/manhattan3d.mcfunction +20 -0
  1003. package/dist/data/test/function/manhattan3d__merge_1.mcfunction +5 -0
  1004. package/dist/data/test/function/manhattan3d__merge_3.mcfunction +5 -0
  1005. package/dist/data/test/function/manhattan3d__merge_5.mcfunction +5 -0
  1006. package/dist/data/test/function/manhattan3d__then_0.mcfunction +4 -0
  1007. package/dist/data/test/function/manhattan3d__then_2.mcfunction +4 -0
  1008. package/dist/data/test/function/manhattan3d__then_4.mcfunction +4 -0
  1009. package/dist/data/test/function/manhattan__merge_1.mcfunction +5 -0
  1010. package/dist/data/test/function/manhattan__merge_3.mcfunction +3 -0
  1011. package/dist/data/test/function/manhattan__then_0.mcfunction +4 -0
  1012. package/dist/data/test/function/manhattan__then_2.mcfunction +4 -0
  1013. package/dist/data/test/function/map.mcfunction +13 -0
  1014. package/dist/data/test/function/map__merge_1.mcfunction +11 -0
  1015. package/dist/data/test/function/map__then_0.mcfunction +1 -0
  1016. package/dist/data/test/function/mc_day_angle.mcfunction +16 -0
  1017. package/dist/data/test/function/midpoint.mcfunction +8 -0
  1018. package/dist/data/test/function/mulfix.mcfunction +8 -0
  1019. package/dist/data/test/function/neg2d_x.mcfunction +4 -0
  1020. package/dist/data/test/function/neg2d_y.mcfunction +4 -0
  1021. package/dist/data/test/function/neg3d_x.mcfunction +4 -0
  1022. package/dist/data/test/function/neg3d_y.mcfunction +4 -0
  1023. package/dist/data/test/function/neg3d_z.mcfunction +4 -0
  1024. package/dist/data/test/function/next_lcg.mcfunction +7 -0
  1025. package/dist/data/test/function/normal_approx12.mcfunction +16 -0
  1026. package/dist/data/test/function/normal_approx12__merge_1.mcfunction +18 -0
  1027. package/dist/data/test/function/normal_approx12__merge_11.mcfunction +18 -0
  1028. package/dist/data/test/function/normal_approx12__merge_13.mcfunction +18 -0
  1029. package/dist/data/test/function/normal_approx12__merge_15.mcfunction +18 -0
  1030. package/dist/data/test/function/normal_approx12__merge_17.mcfunction +18 -0
  1031. package/dist/data/test/function/normal_approx12__merge_19.mcfunction +18 -0
  1032. package/dist/data/test/function/normal_approx12__merge_21.mcfunction +18 -0
  1033. package/dist/data/test/function/normal_approx12__merge_23.mcfunction +9 -0
  1034. package/dist/data/test/function/normal_approx12__merge_3.mcfunction +18 -0
  1035. package/dist/data/test/function/normal_approx12__merge_5.mcfunction +18 -0
  1036. package/dist/data/test/function/normal_approx12__merge_7.mcfunction +18 -0
  1037. package/dist/data/test/function/normal_approx12__merge_9.mcfunction +18 -0
  1038. package/dist/data/test/function/normal_approx12__then_0.mcfunction +4 -0
  1039. package/dist/data/test/function/normal_approx12__then_10.mcfunction +4 -0
  1040. package/dist/data/test/function/normal_approx12__then_12.mcfunction +4 -0
  1041. package/dist/data/test/function/normal_approx12__then_14.mcfunction +4 -0
  1042. package/dist/data/test/function/normal_approx12__then_16.mcfunction +4 -0
  1043. package/dist/data/test/function/normal_approx12__then_18.mcfunction +4 -0
  1044. package/dist/data/test/function/normal_approx12__then_2.mcfunction +4 -0
  1045. package/dist/data/test/function/normal_approx12__then_20.mcfunction +4 -0
  1046. package/dist/data/test/function/normal_approx12__then_22.mcfunction +4 -0
  1047. package/dist/data/test/function/normal_approx12__then_4.mcfunction +4 -0
  1048. package/dist/data/test/function/normal_approx12__then_6.mcfunction +4 -0
  1049. package/dist/data/test/function/normal_approx12__then_8.mcfunction +4 -0
  1050. package/dist/data/test/function/normalize2d_x.mcfunction +12 -0
  1051. package/dist/data/test/function/normalize2d_x__merge_1.mcfunction +6 -0
  1052. package/dist/data/test/function/normalize2d_x__then_0.mcfunction +2 -0
  1053. package/dist/data/test/function/normalize2d_y.mcfunction +12 -0
  1054. package/dist/data/test/function/normalize2d_y__merge_1.mcfunction +6 -0
  1055. package/dist/data/test/function/normalize2d_y__then_0.mcfunction +2 -0
  1056. package/dist/data/test/function/parabola_land_t.mcfunction +7 -0
  1057. package/dist/data/test/function/parabola_x.mcfunction +8 -0
  1058. package/dist/data/test/function/parabola_y.mcfunction +17 -0
  1059. package/dist/data/test/function/pcg_next_hi.mcfunction +8 -0
  1060. package/dist/data/test/function/pcg_next_lo.mcfunction +7 -0
  1061. package/dist/data/test/function/pcg_output.mcfunction +15 -0
  1062. package/dist/data/test/function/pcg_output__merge_1.mcfunction +1 -0
  1063. package/dist/data/test/function/pcg_output__then_0.mcfunction +4 -0
  1064. package/dist/data/test/function/popcount.mcfunction +5 -0
  1065. package/dist/data/test/function/popcount__loop_body_1.mcfunction +8 -0
  1066. package/dist/data/test/function/popcount__loop_exit_2.mcfunction +1 -0
  1067. package/dist/data/test/function/popcount__loop_header_0.mcfunction +5 -0
  1068. package/dist/data/test/function/popcount__merge_4.mcfunction +8 -0
  1069. package/dist/data/test/function/popcount__then_3.mcfunction +4 -0
  1070. package/dist/data/test/function/pow_int.mcfunction +7 -0
  1071. package/dist/data/test/function/pow_int__loop_body_4.mcfunction +8 -0
  1072. package/dist/data/test/function/pow_int__loop_exit_5.mcfunction +1 -0
  1073. package/dist/data/test/function/pow_int__loop_header_3.mcfunction +5 -0
  1074. package/dist/data/test/function/pow_int__merge_1.mcfunction +4 -0
  1075. package/dist/data/test/function/pow_int__merge_7.mcfunction +8 -0
  1076. package/dist/data/test/function/pow_int__then_0.mcfunction +2 -0
  1077. package/dist/data/test/function/pow_int__then_6.mcfunction +4 -0
  1078. package/dist/data/test/function/quadratic_disc.mcfunction +12 -0
  1079. package/dist/data/test/function/quadratic_x1.mcfunction +8 -0
  1080. package/dist/data/test/function/quadratic_x1__merge_1.mcfunction +14 -0
  1081. package/dist/data/test/function/quadratic_x1__merge_4.mcfunction +15 -0
  1082. package/dist/data/test/function/quadratic_x1__then_0.mcfunction +2 -0
  1083. package/dist/data/test/function/quadratic_x1__then_3.mcfunction +2 -0
  1084. package/dist/data/test/function/quadratic_x2.mcfunction +8 -0
  1085. package/dist/data/test/function/quadratic_x2__merge_1.mcfunction +14 -0
  1086. package/dist/data/test/function/quadratic_x2__merge_4.mcfunction +15 -0
  1087. package/dist/data/test/function/quadratic_x2__then_0.mcfunction +2 -0
  1088. package/dist/data/test/function/quadratic_x2__then_3.mcfunction +2 -0
  1089. package/dist/data/test/function/random_bool.mcfunction +7 -0
  1090. package/dist/data/test/function/random_bool__merge_1.mcfunction +4 -0
  1091. package/dist/data/test/function/random_bool__then_0.mcfunction +4 -0
  1092. package/dist/data/test/function/random_range.mcfunction +9 -0
  1093. package/dist/data/test/function/random_range__merge_1.mcfunction +7 -0
  1094. package/dist/data/test/function/random_range__then_0.mcfunction +4 -0
  1095. package/dist/data/test/function/rgb_b.mcfunction +5 -0
  1096. package/dist/data/test/function/rgb_g.mcfunction +8 -0
  1097. package/dist/data/test/function/rgb_lerp.mcfunction +71 -0
  1098. package/dist/data/test/function/rgb_pack.mcfunction +14 -0
  1099. package/dist/data/test/function/rgb_r.mcfunction +8 -0
  1100. package/dist/data/test/function/rgb_to_h.mcfunction +8 -0
  1101. package/dist/data/test/function/rgb_to_h__merge_1.mcfunction +4 -0
  1102. package/dist/data/test/function/rgb_to_h__merge_12.mcfunction +4 -0
  1103. package/dist/data/test/function/rgb_to_h__merge_14.mcfunction +1 -0
  1104. package/dist/data/test/function/rgb_to_h__merge_17.mcfunction +9 -0
  1105. package/dist/data/test/function/rgb_to_h__merge_3.mcfunction +5 -0
  1106. package/dist/data/test/function/rgb_to_h__merge_5.mcfunction +4 -0
  1107. package/dist/data/test/function/rgb_to_h__merge_7.mcfunction +8 -0
  1108. package/dist/data/test/function/rgb_to_h__merge_9.mcfunction +4 -0
  1109. package/dist/data/test/function/rgb_to_h__then_0.mcfunction +2 -0
  1110. package/dist/data/test/function/rgb_to_h__then_11.mcfunction +12 -0
  1111. package/dist/data/test/function/rgb_to_h__then_13.mcfunction +4 -0
  1112. package/dist/data/test/function/rgb_to_h__then_16.mcfunction +9 -0
  1113. package/dist/data/test/function/rgb_to_h__then_2.mcfunction +2 -0
  1114. package/dist/data/test/function/rgb_to_h__then_4.mcfunction +2 -0
  1115. package/dist/data/test/function/rgb_to_h__then_6.mcfunction +2 -0
  1116. package/dist/data/test/function/rgb_to_h__then_8.mcfunction +2 -0
  1117. package/dist/data/test/function/rgb_to_l.mcfunction +8 -0
  1118. package/dist/data/test/function/rgb_to_l__merge_1.mcfunction +4 -0
  1119. package/dist/data/test/function/rgb_to_l__merge_3.mcfunction +5 -0
  1120. package/dist/data/test/function/rgb_to_l__merge_5.mcfunction +4 -0
  1121. package/dist/data/test/function/rgb_to_l__merge_7.mcfunction +9 -0
  1122. package/dist/data/test/function/rgb_to_l__then_0.mcfunction +2 -0
  1123. package/dist/data/test/function/rgb_to_l__then_2.mcfunction +2 -0
  1124. package/dist/data/test/function/rgb_to_l__then_4.mcfunction +2 -0
  1125. package/dist/data/test/function/rgb_to_l__then_6.mcfunction +2 -0
  1126. package/dist/data/test/function/rgb_to_s.mcfunction +8 -0
  1127. package/dist/data/test/function/rgb_to_s__merge_1.mcfunction +4 -0
  1128. package/dist/data/test/function/rgb_to_s__merge_12.mcfunction +10 -0
  1129. package/dist/data/test/function/rgb_to_s__merge_3.mcfunction +5 -0
  1130. package/dist/data/test/function/rgb_to_s__merge_5.mcfunction +4 -0
  1131. package/dist/data/test/function/rgb_to_s__merge_7.mcfunction +8 -0
  1132. package/dist/data/test/function/rgb_to_s__merge_9.mcfunction +13 -0
  1133. package/dist/data/test/function/rgb_to_s__then_0.mcfunction +2 -0
  1134. package/dist/data/test/function/rgb_to_s__then_11.mcfunction +8 -0
  1135. package/dist/data/test/function/rgb_to_s__then_2.mcfunction +2 -0
  1136. package/dist/data/test/function/rgb_to_s__then_4.mcfunction +2 -0
  1137. package/dist/data/test/function/rgb_to_s__then_6.mcfunction +2 -0
  1138. package/dist/data/test/function/rgb_to_s__then_8.mcfunction +2 -0
  1139. package/dist/data/test/function/rotate2d_x.mcfunction +20 -0
  1140. package/dist/data/test/function/rotate2d_y.mcfunction +20 -0
  1141. package/dist/data/test/function/scale2d_x.mcfunction +8 -0
  1142. package/dist/data/test/function/scale2d_y.mcfunction +8 -0
  1143. package/dist/data/test/function/scale3d_x.mcfunction +8 -0
  1144. package/dist/data/test/function/scale3d_y.mcfunction +8 -0
  1145. package/dist/data/test/function/scale3d_z.mcfunction +8 -0
  1146. package/dist/data/test/function/seconds_to_ticks.mcfunction +5 -0
  1147. package/dist/data/test/function/sign.mcfunction +6 -0
  1148. package/dist/data/test/function/sign__merge_1.mcfunction +5 -0
  1149. package/dist/data/test/function/sign__merge_4.mcfunction +2 -0
  1150. package/dist/data/test/function/sign__then_0.mcfunction +2 -0
  1151. package/dist/data/test/function/sign__then_3.mcfunction +2 -0
  1152. package/dist/data/test/function/sin_fixed.mcfunction +10 -0
  1153. package/dist/data/test/function/sin_fixed__merge_1.mcfunction +5 -0
  1154. package/dist/data/test/function/sin_fixed__merge_3.mcfunction +5 -0
  1155. package/dist/data/test/function/sin_fixed__merge_6.mcfunction +5 -0
  1156. package/dist/data/test/function/sin_fixed__merge_9.mcfunction +10 -0
  1157. package/dist/data/test/function/sin_fixed__then_0.mcfunction +4 -0
  1158. package/dist/data/test/function/sin_fixed__then_2.mcfunction +6 -0
  1159. package/dist/data/test/function/sin_fixed__then_5.mcfunction +8 -0
  1160. package/dist/data/test/function/sin_fixed__then_8.mcfunction +10 -0
  1161. package/dist/data/test/function/sin_hp.mcfunction +6 -0
  1162. package/dist/data/test/function/smootherstep.mcfunction +11 -0
  1163. package/dist/data/test/function/smootherstep__merge_1.mcfunction +13 -0
  1164. package/dist/data/test/function/smootherstep__merge_4.mcfunction +5 -0
  1165. package/dist/data/test/function/smootherstep__merge_6.mcfunction +27 -0
  1166. package/dist/data/test/function/smootherstep__then_0.mcfunction +2 -0
  1167. package/dist/data/test/function/smootherstep__then_3.mcfunction +2 -0
  1168. package/dist/data/test/function/smootherstep__then_5.mcfunction +2 -0
  1169. package/dist/data/test/function/smoothstep.mcfunction +11 -0
  1170. package/dist/data/test/function/smoothstep__merge_1.mcfunction +13 -0
  1171. package/dist/data/test/function/smoothstep__merge_4.mcfunction +5 -0
  1172. package/dist/data/test/function/smoothstep__merge_6.mcfunction +15 -0
  1173. package/dist/data/test/function/smoothstep__then_0.mcfunction +2 -0
  1174. package/dist/data/test/function/smoothstep__then_3.mcfunction +2 -0
  1175. package/dist/data/test/function/smoothstep__then_5.mcfunction +2 -0
  1176. package/dist/data/test/function/solve2x2_x.mcfunction +18 -0
  1177. package/dist/data/test/function/solve2x2_x__merge_1.mcfunction +12 -0
  1178. package/dist/data/test/function/solve2x2_x__then_0.mcfunction +2 -0
  1179. package/dist/data/test/function/solve2x2_y.mcfunction +18 -0
  1180. package/dist/data/test/function/solve2x2_y__merge_1.mcfunction +12 -0
  1181. package/dist/data/test/function/solve2x2_y__then_0.mcfunction +2 -0
  1182. package/dist/data/test/function/sort2_max.mcfunction +6 -0
  1183. package/dist/data/test/function/sort2_max__merge_1.mcfunction +1 -0
  1184. package/dist/data/test/function/sort2_max__then_0.mcfunction +1 -0
  1185. package/dist/data/test/function/sort2_min.mcfunction +6 -0
  1186. package/dist/data/test/function/sort2_min__merge_1.mcfunction +1 -0
  1187. package/dist/data/test/function/sort2_min__then_0.mcfunction +1 -0
  1188. package/dist/data/test/function/sort3.mcfunction +11 -0
  1189. package/dist/data/test/function/sort3__merge_1.mcfunction +4 -0
  1190. package/dist/data/test/function/sort3__merge_10.mcfunction +1 -0
  1191. package/dist/data/test/function/sort3__merge_3.mcfunction +4 -0
  1192. package/dist/data/test/function/sort3__merge_5.mcfunction +5 -0
  1193. package/dist/data/test/function/sort3__merge_7.mcfunction +5 -0
  1194. package/dist/data/test/function/sort3__then_0.mcfunction +4 -0
  1195. package/dist/data/test/function/sort3__then_2.mcfunction +4 -0
  1196. package/dist/data/test/function/sort3__then_4.mcfunction +4 -0
  1197. package/dist/data/test/function/sort3__then_6.mcfunction +1 -0
  1198. package/dist/data/test/function/sort3__then_9.mcfunction +1 -0
  1199. package/dist/data/test/function/sort4.mcfunction +13 -0
  1200. package/dist/data/test/function/sort4__merge_1.mcfunction +4 -0
  1201. package/dist/data/test/function/sort4__merge_11.mcfunction +5 -0
  1202. package/dist/data/test/function/sort4__merge_14.mcfunction +5 -0
  1203. package/dist/data/test/function/sort4__merge_17.mcfunction +1 -0
  1204. package/dist/data/test/function/sort4__merge_3.mcfunction +4 -0
  1205. package/dist/data/test/function/sort4__merge_5.mcfunction +4 -0
  1206. package/dist/data/test/function/sort4__merge_7.mcfunction +4 -0
  1207. package/dist/data/test/function/sort4__merge_9.mcfunction +5 -0
  1208. package/dist/data/test/function/sort4__then_0.mcfunction +4 -0
  1209. package/dist/data/test/function/sort4__then_10.mcfunction +1 -0
  1210. package/dist/data/test/function/sort4__then_13.mcfunction +1 -0
  1211. package/dist/data/test/function/sort4__then_16.mcfunction +1 -0
  1212. package/dist/data/test/function/sort4__then_2.mcfunction +4 -0
  1213. package/dist/data/test/function/sort4__then_4.mcfunction +4 -0
  1214. package/dist/data/test/function/sort4__then_6.mcfunction +4 -0
  1215. package/dist/data/test/function/sort4__then_8.mcfunction +4 -0
  1216. package/dist/data/test/function/sort5.mcfunction +15 -0
  1217. package/dist/data/test/function/sort5__merge_1.mcfunction +4 -0
  1218. package/dist/data/test/function/sort5__merge_11.mcfunction +4 -0
  1219. package/dist/data/test/function/sort5__merge_13.mcfunction +4 -0
  1220. package/dist/data/test/function/sort5__merge_15.mcfunction +4 -0
  1221. package/dist/data/test/function/sort5__merge_17.mcfunction +5 -0
  1222. package/dist/data/test/function/sort5__merge_19.mcfunction +5 -0
  1223. package/dist/data/test/function/sort5__merge_22.mcfunction +5 -0
  1224. package/dist/data/test/function/sort5__merge_25.mcfunction +5 -0
  1225. package/dist/data/test/function/sort5__merge_28.mcfunction +1 -0
  1226. package/dist/data/test/function/sort5__merge_3.mcfunction +4 -0
  1227. package/dist/data/test/function/sort5__merge_5.mcfunction +4 -0
  1228. package/dist/data/test/function/sort5__merge_7.mcfunction +4 -0
  1229. package/dist/data/test/function/sort5__merge_9.mcfunction +4 -0
  1230. package/dist/data/test/function/sort5__then_0.mcfunction +4 -0
  1231. package/dist/data/test/function/sort5__then_10.mcfunction +4 -0
  1232. package/dist/data/test/function/sort5__then_12.mcfunction +4 -0
  1233. package/dist/data/test/function/sort5__then_14.mcfunction +4 -0
  1234. package/dist/data/test/function/sort5__then_16.mcfunction +4 -0
  1235. package/dist/data/test/function/sort5__then_18.mcfunction +1 -0
  1236. package/dist/data/test/function/sort5__then_2.mcfunction +4 -0
  1237. package/dist/data/test/function/sort5__then_21.mcfunction +1 -0
  1238. package/dist/data/test/function/sort5__then_24.mcfunction +1 -0
  1239. package/dist/data/test/function/sort5__then_27.mcfunction +1 -0
  1240. package/dist/data/test/function/sort5__then_4.mcfunction +4 -0
  1241. package/dist/data/test/function/sort5__then_6.mcfunction +4 -0
  1242. package/dist/data/test/function/sort5__then_8.mcfunction +4 -0
  1243. package/dist/data/test/function/sphere_contains.mcfunction +29 -0
  1244. package/dist/data/test/function/sphere_contains__merge_1.mcfunction +2 -0
  1245. package/dist/data/test/function/sphere_contains__then_0.mcfunction +2 -0
  1246. package/dist/data/test/function/sqrt_fixed.mcfunction +8 -0
  1247. package/dist/data/test/function/sqrt_fx.mcfunction +11 -0
  1248. package/dist/data/test/function/sub2d_x.mcfunction +5 -0
  1249. package/dist/data/test/function/sub2d_y.mcfunction +5 -0
  1250. package/dist/data/test/function/sub3d_x.mcfunction +5 -0
  1251. package/dist/data/test/function/sub3d_y.mcfunction +5 -0
  1252. package/dist/data/test/function/sub3d_z.mcfunction +5 -0
  1253. package/dist/data/test/function/tick_to_ms.mcfunction +5 -0
  1254. package/dist/data/test/function/tick_to_seconds.mcfunction +5 -0
  1255. package/dist/data/test/function/tile_center.mcfunction +10 -0
  1256. package/dist/data/test/function/tile_of.mcfunction +7 -0
  1257. package/dist/data/test/function/tile_of__merge_1.mcfunction +7 -0
  1258. package/dist/data/test/function/tile_of__then_0.mcfunction +3 -0
  1259. package/dist/data/test/function/timer/done.mcfunction +5 -0
  1260. package/dist/data/test/function/timer/elapsed.mcfunction +2 -0
  1261. package/dist/data/test/function/timer/new.mcfunction +5 -0
  1262. package/dist/data/test/function/timer/pause.mcfunction +1 -0
  1263. package/dist/data/test/function/timer/remaining.mcfunction +10 -0
  1264. package/dist/data/test/function/timer/remaining__merge_1.mcfunction +2 -0
  1265. package/dist/data/test/function/timer/remaining__then_0.mcfunction +1 -0
  1266. package/dist/data/test/function/timer/reset.mcfunction +1 -0
  1267. package/dist/data/test/function/timer/start.mcfunction +1 -0
  1268. package/dist/data/test/function/timer/tick.mcfunction +9 -0
  1269. package/dist/data/test/function/timer/tick__merge_1.mcfunction +1 -0
  1270. package/dist/data/test/function/timer/tick__merge_3.mcfunction +1 -0
  1271. package/dist/data/test/function/timer/tick__then_0.mcfunction +4 -0
  1272. package/dist/data/test/function/timer/tick__then_2.mcfunction +4 -0
  1273. package/dist/data/test/function/uniform_frac.mcfunction +12 -0
  1274. package/dist/data/test/function/uniform_frac__merge_1.mcfunction +4 -0
  1275. package/dist/data/test/function/uniform_frac__then_0.mcfunction +4 -0
  1276. package/dist/data/test/function/uniform_int.mcfunction +14 -0
  1277. package/dist/data/test/function/uniform_int__merge_1.mcfunction +9 -0
  1278. package/dist/data/test/function/uniform_int__then_0.mcfunction +4 -0
  1279. package/dist/data/test/function/weighted2.mcfunction +17 -0
  1280. package/dist/data/test/function/weighted2__merge_1.mcfunction +6 -0
  1281. package/dist/data/test/function/weighted2__merge_3.mcfunction +2 -0
  1282. package/dist/data/test/function/weighted2__then_0.mcfunction +4 -0
  1283. package/dist/data/test/function/weighted2__then_2.mcfunction +2 -0
  1284. package/dist/data/test/function/weighted3.mcfunction +20 -0
  1285. package/dist/data/test/function/weighted3__merge_1.mcfunction +7 -0
  1286. package/dist/data/test/function/weighted3__merge_3.mcfunction +6 -0
  1287. package/dist/data/test/function/weighted3__merge_6.mcfunction +2 -0
  1288. package/dist/data/test/function/weighted3__then_0.mcfunction +4 -0
  1289. package/dist/data/test/function/weighted3__then_2.mcfunction +2 -0
  1290. package/dist/data/test/function/weighted3__then_5.mcfunction +2 -0
  1291. package/dist/data/turret/function/__load.mcfunction +5 -0
  1292. package/dist/data/turret/function/__tick.mcfunction +4 -0
  1293. package/dist/data/turret/function/__trigger_deploy_turret_dispatch.mcfunction +4 -0
  1294. package/dist/data/turret/function/deploy_turret.mcfunction +8 -0
  1295. package/dist/data/turret/function/turret_tick/at_1.mcfunction +2 -0
  1296. package/dist/data/turret/function/turret_tick/foreach_0.mcfunction +2 -0
  1297. package/dist/data/turret/function/turret_tick/foreach_2.mcfunction +2 -0
  1298. package/dist/data/turret/function/turret_tick/tick_body.mcfunction +3 -0
  1299. package/dist/data/turret/function/turret_tick/tick_skip.mcfunction +1 -0
  1300. package/dist/data/turret/function/turret_tick.mcfunction +5 -0
  1301. package/dist/diagnostics/index.d.ts +44 -0
  1302. package/dist/diagnostics/index.js +140 -0
  1303. package/dist/events/types.d.ts +35 -0
  1304. package/dist/events/types.js +59 -0
  1305. package/dist/formatter/index.d.ts +1 -0
  1306. package/dist/formatter/index.js +26 -0
  1307. package/dist/gcd2.map.json +15 -0
  1308. package/dist/gcd3.map.json +17 -0
  1309. package/dist/gcd_test.map.json +15 -0
  1310. package/dist/index.d.ts +62 -0
  1311. package/dist/ir/builder.d.ts +33 -0
  1312. package/dist/ir/builder.js +99 -0
  1313. package/dist/ir/types.d.ts +132 -0
  1314. package/dist/ir/types.js +15 -0
  1315. package/dist/isqrttest.map.json +15 -0
  1316. package/dist/lexer/index.d.ts +37 -0
  1317. package/dist/lexer/index.js +569 -0
  1318. package/dist/lowering/index.d.ts +188 -0
  1319. package/dist/lowering/index.js +3405 -0
  1320. package/dist/mathtest.map.json +6 -0
  1321. package/dist/mc-test/client.d.ts +128 -0
  1322. package/dist/mc-test/client.js +174 -0
  1323. package/dist/mc-test/runner.d.ts +28 -0
  1324. package/dist/mc-test/runner.js +150 -0
  1325. package/dist/mc-test/setup.d.ts +11 -0
  1326. package/dist/mc-test/setup.js +98 -0
  1327. package/dist/mc-validator/index.d.ts +17 -0
  1328. package/dist/mc-validator/index.js +322 -0
  1329. package/dist/mypack.map.json +27 -0
  1330. package/dist/nbt/index.d.ts +86 -0
  1331. package/dist/nbt/index.js +250 -0
  1332. package/dist/optimizer/commands.d.ts +38 -0
  1333. package/dist/optimizer/commands.js +451 -0
  1334. package/dist/optimizer/dce.d.ts +34 -0
  1335. package/dist/optimizer/dce.js +639 -0
  1336. package/dist/optimizer/passes.d.ts +34 -0
  1337. package/dist/optimizer/passes.js +243 -0
  1338. package/dist/optimizer/structure.d.ts +9 -0
  1339. package/dist/optimizer/structure.js +356 -0
  1340. package/dist/pack.mcmeta +6 -0
  1341. package/dist/parser/index.d.ts +93 -0
  1342. package/dist/parser/index.js +1687 -0
  1343. package/dist/repl.d.ts +16 -0
  1344. package/dist/repl.js +165 -0
  1345. package/dist/reqtest.map.json +4 -0
  1346. package/dist/reqtest2.map.json +4 -0
  1347. package/dist/runtime/index.d.ts +107 -0
  1348. package/dist/runtime/index.js +1409 -0
  1349. package/dist/runtime.map.json +7 -0
  1350. package/dist/src/__tests__/array-dynamic.test.d.ts +12 -0
  1351. package/dist/src/__tests__/array-dynamic.test.js +131 -0
  1352. package/dist/src/__tests__/array-param.test.d.ts +9 -0
  1353. package/dist/src/__tests__/array-param.test.js +69 -0
  1354. package/dist/src/__tests__/array-write.test.d.ts +11 -0
  1355. package/dist/src/__tests__/array-write.test.js +149 -0
  1356. package/dist/src/__tests__/codegen.test.d.ts +1 -0
  1357. package/dist/src/__tests__/codegen.test.js +152 -0
  1358. package/dist/src/__tests__/debug-compile.test.d.ts +1 -0
  1359. package/dist/src/__tests__/debug-compile.test.js +24 -0
  1360. package/dist/src/__tests__/debug-compile2.test.d.ts +1 -0
  1361. package/dist/src/__tests__/debug-compile2.test.js +19 -0
  1362. package/dist/src/__tests__/debug-compile3.test.d.ts +1 -0
  1363. package/dist/src/__tests__/debug-compile3.test.js +22 -0
  1364. package/dist/src/__tests__/debug-wm.test.d.ts +1 -0
  1365. package/dist/src/__tests__/debug-wm.test.js +50 -0
  1366. package/dist/src/__tests__/debug_gen.d.ts +1 -0
  1367. package/dist/src/__tests__/debug_gen.js +24 -0
  1368. package/dist/src/__tests__/debug_scoreboard.test.d.ts +1 -0
  1369. package/dist/src/__tests__/debug_scoreboard.test.js +19 -0
  1370. package/dist/src/__tests__/debug_scoreboard2.test.d.ts +1 -0
  1371. package/dist/src/__tests__/debug_scoreboard2.test.js +27 -0
  1372. package/dist/src/__tests__/debug_scoreboard3.test.d.ts +1 -0
  1373. package/dist/src/__tests__/debug_scoreboard3.test.js +37 -0
  1374. package/dist/src/__tests__/e2e.test.d.ts +6 -0
  1375. package/dist/src/__tests__/e2e.test.js +1789 -0
  1376. package/dist/src/__tests__/entity-types.test.d.ts +1 -0
  1377. package/dist/src/__tests__/entity-types.test.js +203 -0
  1378. package/dist/src/__tests__/lowering.test.d.ts +1 -0
  1379. package/dist/src/__tests__/lowering.test.js +1015 -0
  1380. package/dist/src/__tests__/macro.test.d.ts +8 -0
  1381. package/dist/src/__tests__/macro.test.js +306 -0
  1382. package/dist/src/__tests__/nbt.test.d.ts +1 -0
  1383. package/dist/src/__tests__/nbt.test.js +82 -0
  1384. package/dist/src/__tests__/optimizer-advanced.test.d.ts +1 -0
  1385. package/dist/src/__tests__/optimizer-advanced.test.js +124 -0
  1386. package/dist/src/__tests__/optimizer.test.d.ts +1 -0
  1387. package/dist/src/__tests__/optimizer.test.js +149 -0
  1388. package/dist/src/__tests__/runtime.test.d.ts +1 -0
  1389. package/dist/src/__tests__/runtime.test.js +289 -0
  1390. package/dist/src/__tests__/stdlib/math.test.d.ts +5 -0
  1391. package/dist/src/__tests__/stdlib/math.test.js +121 -0
  1392. package/dist/src/__tests__/stdlib-advanced.test.d.ts +4 -0
  1393. package/dist/src/__tests__/stdlib-advanced.test.js +374 -0
  1394. package/dist/src/__tests__/stdlib-bigint.test.d.ts +7 -0
  1395. package/dist/src/__tests__/stdlib-bigint.test.js +426 -0
  1396. package/dist/src/__tests__/stdlib-math.test.d.ts +7 -0
  1397. package/dist/src/__tests__/stdlib-math.test.js +351 -0
  1398. package/dist/src/__tests__/stdlib-vec.test.d.ts +4 -0
  1399. package/dist/src/__tests__/stdlib-vec.test.js +263 -0
  1400. package/dist/src/__tests__/structure-optimizer.test.d.ts +1 -0
  1401. package/dist/src/__tests__/structure-optimizer.test.js +33 -0
  1402. package/dist/src/__tests__/timer-debug.test.d.ts +1 -0
  1403. package/dist/src/__tests__/timer-debug.test.js +33 -0
  1404. package/dist/src/__tests__/var-allocator.test.d.ts +1 -0
  1405. package/dist/src/__tests__/var-allocator.test.js +69 -0
  1406. package/dist/src/ast/types.d.ts +7 -0
  1407. package/dist/src/codegen/cmdblock/index.d.ts +26 -0
  1408. package/dist/src/codegen/cmdblock/index.js +45 -0
  1409. package/dist/src/codegen/mcfunction/index.d.ts +40 -0
  1410. package/dist/src/codegen/mcfunction/index.js +606 -0
  1411. package/dist/src/codegen/structure/index.d.ts +24 -0
  1412. package/dist/src/codegen/structure/index.js +279 -0
  1413. package/dist/src/codegen/var-allocator.d.ts +45 -0
  1414. package/dist/src/codegen/var-allocator.js +104 -0
  1415. package/dist/src/emit/modules.js +5 -0
  1416. package/dist/src/hir/lower.js +29 -0
  1417. package/dist/src/hir/monomorphize.js +2 -0
  1418. package/dist/src/hir/types.d.ts +9 -2
  1419. package/dist/src/ir/builder.d.ts +33 -0
  1420. package/dist/src/ir/builder.js +99 -0
  1421. package/dist/src/ir/types.d.ts +132 -0
  1422. package/dist/src/ir/types.js +15 -0
  1423. package/dist/src/lir/lower.js +131 -0
  1424. package/dist/src/lowering/index.d.ts +188 -0
  1425. package/dist/src/lowering/index.js +3405 -0
  1426. package/dist/src/lsp/main.js +0 -0
  1427. package/dist/src/mir/lower.js +166 -15
  1428. package/dist/src/mir/macro.js +5 -0
  1429. package/dist/src/mir/types.d.ts +12 -0
  1430. package/dist/src/mir/verify.js +7 -0
  1431. package/dist/src/optimizer/commands.d.ts +38 -0
  1432. package/dist/src/optimizer/commands.js +451 -0
  1433. package/dist/src/optimizer/copy_prop.js +5 -0
  1434. package/dist/src/optimizer/coroutine.js +12 -0
  1435. package/dist/src/optimizer/dce.js +9 -0
  1436. package/dist/src/optimizer/passes.d.ts +34 -0
  1437. package/dist/src/optimizer/passes.js +243 -0
  1438. package/dist/src/optimizer/structure.d.ts +9 -0
  1439. package/dist/src/optimizer/structure.js +356 -0
  1440. package/dist/src/optimizer/unroll.js +3 -0
  1441. package/dist/src/parser/index.js +5 -0
  1442. package/dist/src/typechecker/index.js +5 -0
  1443. package/dist/src2/__tests__/e2e/basic.test.d.ts +8 -0
  1444. package/dist/src2/__tests__/e2e/basic.test.js +140 -0
  1445. package/dist/src2/__tests__/e2e/macros.test.d.ts +9 -0
  1446. package/dist/src2/__tests__/e2e/macros.test.js +182 -0
  1447. package/dist/src2/__tests__/e2e/migrate.test.d.ts +13 -0
  1448. package/dist/src2/__tests__/e2e/migrate.test.js +2739 -0
  1449. package/dist/src2/__tests__/hir/desugar.test.d.ts +1 -0
  1450. package/dist/src2/__tests__/hir/desugar.test.js +234 -0
  1451. package/dist/src2/__tests__/lir/lower.test.d.ts +1 -0
  1452. package/dist/src2/__tests__/lir/lower.test.js +559 -0
  1453. package/dist/src2/__tests__/lir/types.test.d.ts +1 -0
  1454. package/dist/src2/__tests__/lir/types.test.js +185 -0
  1455. package/dist/src2/__tests__/lir/verify.test.d.ts +1 -0
  1456. package/dist/src2/__tests__/lir/verify.test.js +221 -0
  1457. package/dist/src2/__tests__/mir/arithmetic.test.d.ts +1 -0
  1458. package/dist/src2/__tests__/mir/arithmetic.test.js +130 -0
  1459. package/dist/src2/__tests__/mir/control-flow.test.d.ts +1 -0
  1460. package/dist/src2/__tests__/mir/control-flow.test.js +205 -0
  1461. package/dist/src2/__tests__/mir/verify.test.d.ts +1 -0
  1462. package/dist/src2/__tests__/mir/verify.test.js +223 -0
  1463. package/dist/src2/__tests__/optimizer/block_merge.test.d.ts +1 -0
  1464. package/dist/src2/__tests__/optimizer/block_merge.test.js +78 -0
  1465. package/dist/src2/__tests__/optimizer/branch_simplify.test.d.ts +1 -0
  1466. package/dist/src2/__tests__/optimizer/branch_simplify.test.js +58 -0
  1467. package/dist/src2/__tests__/optimizer/constant_fold.test.d.ts +1 -0
  1468. package/dist/src2/__tests__/optimizer/constant_fold.test.js +131 -0
  1469. package/dist/src2/__tests__/optimizer/copy_prop.test.d.ts +1 -0
  1470. package/dist/src2/__tests__/optimizer/copy_prop.test.js +91 -0
  1471. package/dist/src2/__tests__/optimizer/dce.test.d.ts +1 -0
  1472. package/dist/src2/__tests__/optimizer/dce.test.js +76 -0
  1473. package/dist/src2/__tests__/optimizer/pipeline.test.d.ts +1 -0
  1474. package/dist/src2/__tests__/optimizer/pipeline.test.js +102 -0
  1475. package/dist/src2/emit/compile.d.ts +19 -0
  1476. package/dist/src2/emit/compile.js +80 -0
  1477. package/dist/src2/emit/index.d.ts +17 -0
  1478. package/dist/src2/emit/index.js +172 -0
  1479. package/dist/src2/hir/lower.d.ts +15 -0
  1480. package/dist/src2/hir/lower.js +378 -0
  1481. package/dist/src2/hir/types.d.ts +373 -0
  1482. package/dist/src2/hir/types.js +16 -0
  1483. package/dist/src2/lir/lower.d.ts +15 -0
  1484. package/dist/src2/lir/lower.js +453 -0
  1485. package/dist/src2/lir/types.d.ts +136 -0
  1486. package/dist/src2/lir/types.js +11 -0
  1487. package/dist/src2/lir/verify.d.ts +14 -0
  1488. package/dist/src2/lir/verify.js +113 -0
  1489. package/dist/src2/mir/lower.d.ts +9 -0
  1490. package/dist/src2/mir/lower.js +1030 -0
  1491. package/dist/src2/mir/macro.d.ts +22 -0
  1492. package/dist/src2/mir/macro.js +168 -0
  1493. package/dist/src2/mir/types.d.ts +183 -0
  1494. package/dist/src2/mir/types.js +11 -0
  1495. package/dist/src2/mir/verify.d.ts +16 -0
  1496. package/dist/src2/mir/verify.js +216 -0
  1497. package/dist/src2/optimizer/block_merge.d.ts +12 -0
  1498. package/dist/src2/optimizer/block_merge.js +84 -0
  1499. package/dist/src2/optimizer/branch_simplify.d.ts +9 -0
  1500. package/dist/src2/optimizer/branch_simplify.js +28 -0
  1501. package/dist/src2/optimizer/constant_fold.d.ts +10 -0
  1502. package/dist/src2/optimizer/constant_fold.js +85 -0
  1503. package/dist/src2/optimizer/copy_prop.d.ts +9 -0
  1504. package/dist/src2/optimizer/copy_prop.js +113 -0
  1505. package/dist/src2/optimizer/dce.d.ts +8 -0
  1506. package/dist/src2/optimizer/dce.js +155 -0
  1507. package/dist/src2/optimizer/pipeline.d.ts +10 -0
  1508. package/dist/src2/optimizer/pipeline.js +42 -0
  1509. package/dist/swap_test.map.json +14 -0
  1510. package/dist/tsconfig.tsbuildinfo +1 -0
  1511. package/dist/typechecker/index.d.ts +61 -0
  1512. package/dist/typechecker/index.js +1034 -0
  1513. package/dist/types/entity-hierarchy.d.ts +29 -0
  1514. package/dist/types/entity-hierarchy.js +107 -0
  1515. package/editors/vscode/package-lock.json +3 -3
  1516. package/editors/vscode/package.json +1 -1
  1517. package/package.json +1 -1
  1518. package/src/__tests__/array-dynamic.test.ts +147 -0
  1519. package/src/__tests__/array-param.test.ts +77 -0
  1520. package/src/__tests__/array-write.test.ts +169 -0
  1521. package/src/__tests__/stdlib/math.test.ts +102 -0
  1522. package/src/ast/types.ts +1 -0
  1523. package/src/emit/modules.ts +5 -0
  1524. package/src/hir/lower.ts +30 -0
  1525. package/src/hir/monomorphize.ts +2 -0
  1526. package/src/hir/types.ts +3 -1
  1527. package/src/lir/lower.ts +151 -0
  1528. package/src/mir/lower.ts +184 -14
  1529. package/src/mir/macro.ts +5 -0
  1530. package/src/mir/types.ts +2 -0
  1531. package/src/mir/verify.ts +7 -0
  1532. package/src/optimizer/copy_prop.ts +5 -0
  1533. package/src/optimizer/coroutine.ts +9 -0
  1534. package/src/optimizer/dce.ts +6 -0
  1535. package/src/optimizer/unroll.ts +3 -0
  1536. package/src/parser/index.ts +9 -0
  1537. package/src/stdlib/list.mcrs +117 -70
  1538. package/src/stdlib/math.mcrs +137 -0
  1539. package/src/stdlib/timer.mcrs +32 -0
  1540. package/src/typechecker/index.ts +6 -0
@@ -0,0 +1,1015 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexer_1 = require("../lexer");
4
+ const parser_1 = require("../parser");
5
+ const lowering_1 = require("../lowering");
6
+ function compile(source, namespace = 'test') {
7
+ return compileWithWarnings(source, namespace).ir;
8
+ }
9
+ function compileWithWarnings(source, namespace = 'test') {
10
+ const tokens = new lexer_1.Lexer(source).tokenize();
11
+ const ast = new parser_1.Parser(tokens).parse(namespace);
12
+ const lowering = new lowering_1.Lowering(namespace);
13
+ return { ir: lowering.lower(ast), warnings: lowering.warnings };
14
+ }
15
+ function getFunction(module, name) {
16
+ return module.functions.find(f => f.name === name);
17
+ }
18
+ function getInstructions(fn) {
19
+ return fn.blocks.flatMap(b => b.instrs);
20
+ }
21
+ function getRawCommands(fn) {
22
+ return getInstructions(fn)
23
+ .filter((i) => i.op === 'raw')
24
+ .map(i => i.cmd);
25
+ }
26
+ describe('Lowering', () => {
27
+ describe('basic functions', () => {
28
+ it('lowers empty function', () => {
29
+ const ir = compile('fn empty() {}');
30
+ const fn = getFunction(ir, 'empty');
31
+ expect(fn).toBeDefined();
32
+ expect(fn?.blocks).toHaveLength(1);
33
+ expect(fn?.blocks[0].term.op).toBe('return');
34
+ });
35
+ it('lowers function with params', () => {
36
+ const ir = compile('fn add(a: int, b: int) -> int { return a + b; }');
37
+ const fn = getFunction(ir, 'add');
38
+ expect(fn).toBeDefined();
39
+ expect(fn?.params).toEqual(['$a', '$b']);
40
+ });
41
+ it('creates param copy instructions', () => {
42
+ const ir = compile('fn foo(x: int) {}');
43
+ const fn = getFunction(ir, 'foo');
44
+ const instrs = getInstructions(fn);
45
+ expect(instrs.some(i => i.op === 'assign' && i.dst === '$foo_x' && i.src.kind === 'param' && i.src.index === 0)).toBe(true);
46
+ });
47
+ it('fills in missing default arguments at call sites', () => {
48
+ const ir = compile(`
49
+ fn damage(amount: int, multiplier: int = 1) -> int {
50
+ return amount * multiplier;
51
+ }
52
+
53
+ fn test() -> int {
54
+ return damage(10);
55
+ }
56
+ `);
57
+ const fn = getFunction(ir, 'test');
58
+ const call = getInstructions(fn).find(i => i.op === 'call');
59
+ expect(call.args).toHaveLength(2);
60
+ expect(call.args[0]).toEqual({ kind: 'const', value: 10 });
61
+ expect(call.args[1]).toEqual({ kind: 'const', value: 1 });
62
+ });
63
+ it('specializes callback-accepting functions for lambda arguments', () => {
64
+ const ir = compile(`
65
+ fn apply(val: int, cb: (int) -> int) -> int {
66
+ return cb(val);
67
+ }
68
+
69
+ fn test() -> int {
70
+ return apply(5, (x: int) => x * 3);
71
+ }
72
+ `);
73
+ expect(getFunction(ir, '__lambda_0')).toBeDefined();
74
+ const specialized = ir.functions.find(fn => fn.name.startsWith('apply__cb___lambda_0'));
75
+ expect(specialized).toBeDefined();
76
+ expect(specialized?.params).toEqual(['$val']);
77
+ const call = getInstructions(specialized).find(i => i.op === 'call');
78
+ expect(call.fn).toBe('__lambda_0');
79
+ });
80
+ it('lowers impl methods to prefixed function names', () => {
81
+ const ir = compile(`
82
+ struct Timer { duration: int }
83
+
84
+ impl Timer {
85
+ fn elapsed(self) -> int {
86
+ return self.duration;
87
+ }
88
+ }
89
+ `);
90
+ expect(getFunction(ir, 'Timer_elapsed')).toBeDefined();
91
+ });
92
+ it('lowers impl instance and static method calls', () => {
93
+ const ir = compile(`
94
+ struct Timer { duration: int }
95
+
96
+ impl Timer {
97
+ fn new(duration: int) -> Timer {
98
+ return { duration: duration };
99
+ }
100
+
101
+ fn elapsed(self) -> int {
102
+ return self.duration;
103
+ }
104
+ }
105
+
106
+ fn test() -> int {
107
+ let timer: Timer = Timer::new(10);
108
+ return timer.elapsed();
109
+ }
110
+ `);
111
+ const fn = getFunction(ir, 'test');
112
+ const calls = getInstructions(fn).filter((instr) => instr.op === 'call');
113
+ expect(calls.map(call => call.fn)).toEqual(['Timer_new', 'Timer_elapsed']);
114
+ });
115
+ });
116
+ describe('let statements', () => {
117
+ it('inlines const values without allocating scoreboard variables', () => {
118
+ const ir = compile(`
119
+ const MAX_HP: int = 100
120
+
121
+ fn foo() {
122
+ let x: int = MAX_HP;
123
+ }
124
+ `);
125
+ const fn = getFunction(ir, 'foo');
126
+ const instrs = getInstructions(fn);
127
+ expect(instrs.some(i => i.op === 'assign' && i.dst === '$foo_x' && i.src.kind === 'const' && i.src.value === 100)).toBe(true);
128
+ expect(ir.globals).not.toContain('$MAX_HP');
129
+ });
130
+ it('lowers let with literal', () => {
131
+ const ir = compile('fn foo() { let x: int = 42; }');
132
+ const fn = getFunction(ir, 'foo');
133
+ const instrs = getInstructions(fn);
134
+ expect(instrs.some(i => i.op === 'assign' && i.dst === '$foo_x' && i.src.value === 42)).toBe(true);
135
+ });
136
+ it('lowers let with expression', () => {
137
+ const ir = compile('fn foo(a: int) { let x: int = a + 1; }');
138
+ const fn = getFunction(ir, 'foo');
139
+ const instrs = getInstructions(fn);
140
+ expect(instrs.some(i => i.op === 'binop')).toBe(true);
141
+ });
142
+ it('stores literal-backed string variables in storage for str_len', () => {
143
+ const ir = compile('fn foo() { let name: string = "Player"; let n: int = str_len(name); }');
144
+ const fn = getFunction(ir, 'foo');
145
+ const rawCmds = getRawCommands(fn);
146
+ expect(rawCmds).toContain('data modify storage rs:strings name set value "Player"');
147
+ expect(rawCmds.some(cmd => cmd.includes('execute store result score') && cmd.includes('run data get storage rs:strings name'))).toBe(true);
148
+ });
149
+ });
150
+ describe('return statements', () => {
151
+ it('lowers return with value', () => {
152
+ const ir = compile('fn foo() -> int { return 42; }');
153
+ const fn = getFunction(ir, 'foo');
154
+ const term = fn.blocks[0].term;
155
+ expect(term.op).toBe('return');
156
+ expect(term.value).toEqual({ kind: 'const', value: 42 });
157
+ });
158
+ it('lowers empty return', () => {
159
+ const ir = compile('fn foo() { return; }');
160
+ const fn = getFunction(ir, 'foo');
161
+ const term = fn.blocks[0].term;
162
+ expect(term.op).toBe('return');
163
+ expect(term.value).toBeUndefined();
164
+ });
165
+ });
166
+ describe('lambda lowering', () => {
167
+ it('lowers lambda variables to generated sub-functions', () => {
168
+ const ir = compile(`
169
+ fn test() {
170
+ let double: (int) -> int = (x: int) => x * 2;
171
+ let result: int = double(5);
172
+ }
173
+ `);
174
+ const lambdaFn = getFunction(ir, '__lambda_0');
175
+ expect(lambdaFn).toBeDefined();
176
+ const testFn = getFunction(ir, 'test');
177
+ const calls = getInstructions(testFn).filter((instr) => instr.op === 'call');
178
+ expect(calls.some(call => call.fn === '__lambda_0')).toBe(true);
179
+ });
180
+ it('inlines immediately-invoked expression-body lambdas', () => {
181
+ const ir = compile(`
182
+ fn test() -> int {
183
+ return ((x: int) => x * 2)(5);
184
+ }
185
+ `);
186
+ expect(ir.functions.find(fn => fn.name.startsWith('__lambda_'))).toBeUndefined();
187
+ const testFn = getFunction(ir, 'test');
188
+ expect(getInstructions(testFn).some(instr => instr.op === 'binop')).toBe(true);
189
+ });
190
+ });
191
+ describe('binary expressions', () => {
192
+ it('lowers arithmetic', () => {
193
+ const ir = compile('fn foo(a: int, b: int) -> int { return a + b; }');
194
+ const fn = getFunction(ir, 'foo');
195
+ const instrs = getInstructions(fn);
196
+ const binop = instrs.find(i => i.op === 'binop');
197
+ expect(binop).toBeDefined();
198
+ expect(binop.bop).toBe('+');
199
+ });
200
+ it('lowers comparison', () => {
201
+ const ir = compile('fn foo(a: int, b: int) -> bool { return a < b; }');
202
+ const fn = getFunction(ir, 'foo');
203
+ const instrs = getInstructions(fn);
204
+ const cmp = instrs.find(i => i.op === 'cmp');
205
+ expect(cmp).toBeDefined();
206
+ expect(cmp.cop).toBe('<');
207
+ });
208
+ });
209
+ describe('unary expressions', () => {
210
+ it('lowers negation', () => {
211
+ const ir = compile('fn foo(x: int) -> int { return -x; }');
212
+ const fn = getFunction(ir, 'foo');
213
+ const instrs = getInstructions(fn);
214
+ const binop = instrs.find(i => i.op === 'binop' && i.bop === '-');
215
+ expect(binop).toBeDefined();
216
+ // -x is lowered as 0 - x
217
+ expect(binop.lhs).toEqual({ kind: 'const', value: 0 });
218
+ });
219
+ it('lowers logical not', () => {
220
+ const ir = compile('fn foo(x: bool) -> bool { return !x; }');
221
+ const fn = getFunction(ir, 'foo');
222
+ const instrs = getInstructions(fn);
223
+ const cmp = instrs.find(i => i.op === 'cmp' && i.cop === '==');
224
+ expect(cmp).toBeDefined();
225
+ // !x is lowered as x == 0
226
+ expect(cmp.rhs).toEqual({ kind: 'const', value: 0 });
227
+ });
228
+ });
229
+ describe('if statements', () => {
230
+ it('creates conditional jump', () => {
231
+ const ir = compile('fn foo(x: int) { if (x > 0) { let y: int = 1; } }');
232
+ const fn = getFunction(ir, 'foo');
233
+ expect(fn.blocks.length).toBeGreaterThan(1);
234
+ const term = fn.blocks[0].term;
235
+ expect(term.op).toBe('jump_if');
236
+ });
237
+ it('creates else block', () => {
238
+ const ir = compile('fn foo(x: int) { if (x > 0) { let y: int = 1; } else { let y: int = 2; } }');
239
+ const fn = getFunction(ir, 'foo');
240
+ expect(fn.blocks.length).toBeGreaterThanOrEqual(3); // entry, then, else, merge
241
+ });
242
+ it('lowers entity is-checks to execute if entity type filters', () => {
243
+ const ir = compile(`
244
+ fn scan() {
245
+ foreach (e in @e) {
246
+ if (e is Player) {
247
+ kill(e);
248
+ }
249
+ }
250
+ }
251
+ `);
252
+ const foreachFn = ir.functions.find(fn => fn.name.includes('scan/foreach'));
253
+ const rawCmds = getRawCommands(foreachFn);
254
+ const isCheckCmd = rawCmds.find(cmd => cmd.startsWith('execute if entity @s[type=minecraft:player] run function test:scan/then_'));
255
+ expect(isCheckCmd).toBeDefined();
256
+ const thenFn = ir.functions.find(fn => fn.name.startsWith('scan/then_'));
257
+ expect(getRawCommands(thenFn)).toContain('kill @s');
258
+ });
259
+ });
260
+ describe('while statements', () => {
261
+ it('creates loop structure', () => {
262
+ const ir = compile('fn foo() { let i: int = 0; while (i < 10) { i = i + 1; } }');
263
+ const fn = getFunction(ir, 'foo');
264
+ // Should have: entry -> check -> body -> exit
265
+ expect(fn.blocks.length).toBeGreaterThanOrEqual(3);
266
+ // Find loop_check block
267
+ const checkBlock = fn.blocks.find(b => b.label.includes('loop_check'));
268
+ expect(checkBlock).toBeDefined();
269
+ });
270
+ });
271
+ describe('foreach statements', () => {
272
+ it('extracts body into sub-function', () => {
273
+ const ir = compile('fn kill_all() { foreach (e in @e[type=zombie]) { kill(e); } }');
274
+ expect(ir.functions.length).toBe(2); // main + foreach sub-function
275
+ const subFn = ir.functions.find(f => f.name.includes('foreach'));
276
+ expect(subFn).toBeDefined();
277
+ });
278
+ it('emits execute as ... run function', () => {
279
+ const ir = compile('fn kill_all() { foreach (e in @e[type=zombie]) { kill(e); } }');
280
+ const mainFn = getFunction(ir, 'kill_all');
281
+ const rawCmds = getRawCommands(mainFn);
282
+ expect(rawCmds.some(cmd => cmd.includes('execute as @e[type=minecraft:zombie]') && cmd.includes('run function'))).toBe(true);
283
+ });
284
+ it('binding maps to @s in sub-function', () => {
285
+ const ir = compile('fn kill_all() { foreach (e in @e[type=zombie]) { kill(e); } }');
286
+ const subFn = ir.functions.find(f => f.name.includes('foreach'));
287
+ const rawCmds = getRawCommands(subFn);
288
+ expect(rawCmds.some(cmd => cmd === 'kill @s')).toBe(true);
289
+ });
290
+ it('lowers foreach over array into a counting loop', () => {
291
+ const ir = compile('fn walk() { let arr: int[] = [1, 2, 3]; foreach (x in arr) { let y: int = x; } }');
292
+ const fn = getFunction(ir, 'walk');
293
+ expect(fn.blocks.some(b => b.label.includes('foreach_array_check'))).toBe(true);
294
+ expect(fn.blocks.some(b => b.label.includes('foreach_array_body'))).toBe(true);
295
+ const rawCmds = getRawCommands(fn);
296
+ expect(rawCmds.some(cmd => cmd.includes('data get storage rs:heap arr'))).toBe(true);
297
+ });
298
+ it('lowers entity is-checks inside foreach bodies', () => {
299
+ const ir = compile(`
300
+ fn test() {
301
+ foreach (e in @e) {
302
+ if (e is Player) {
303
+ give(@s, "diamond", 1);
304
+ }
305
+ if (e is Zombie) {
306
+ kill(@s);
307
+ }
308
+ }
309
+ }
310
+ `);
311
+ const mainFn = getFunction(ir, 'test');
312
+ const foreachFn = ir.functions.find(f => f.name === 'test/foreach_0');
313
+ const thenFns = ir.functions.filter(f => /^test\/then_/.test(f.name)).sort((a, b) => a.name.localeCompare(b.name));
314
+ const rawCmds = getRawCommands(foreachFn);
315
+ const [playerThenFn, zombieThenFn] = thenFns;
316
+ expect(getRawCommands(mainFn)).toContain('execute as @e run function test:test/foreach_0');
317
+ expect(thenFns).toHaveLength(2);
318
+ expect(rawCmds).toContain(`execute if entity @s[type=minecraft:player] run function test:${playerThenFn.name}`);
319
+ expect(rawCmds).toContain(`execute if entity @s[type=minecraft:zombie] run function test:${zombieThenFn.name}`);
320
+ expect(getRawCommands(playerThenFn).some(cmd => cmd.includes('give @s diamond 1'))).toBe(true);
321
+ expect(getRawCommands(zombieThenFn)).toContain('kill @s');
322
+ });
323
+ });
324
+ describe('match statements', () => {
325
+ it('lowers match into guarded execute function calls', () => {
326
+ const ir = compile('fn choose() { let choice: int = 2; match (choice) { 1 => { say("one"); } 2 => { say("two"); } _ => { say("other"); } } }');
327
+ const fn = getFunction(ir, 'choose');
328
+ const rawCmds = getRawCommands(fn);
329
+ expect(rawCmds.some(cmd => cmd.includes('execute if score') && cmd.includes('matches 1 run function'))).toBe(true);
330
+ expect(rawCmds.some(cmd => cmd.includes('execute if score') && cmd.includes('matches 2 run function'))).toBe(true);
331
+ expect(rawCmds.some(cmd => cmd.includes('matches ..0 run function'))).toBe(true);
332
+ expect(ir.functions.filter(f => f.name.includes('match_')).length).toBe(3);
333
+ });
334
+ it('lowers enum variants to integer constants in comparisons and match arms', () => {
335
+ const ir = compile(`
336
+ enum Direction { North, South, East, West }
337
+
338
+ fn choose(dir: Direction) {
339
+ if (dir == Direction.South) {
340
+ say("south");
341
+ }
342
+ match (dir) {
343
+ Direction.North => { say("north"); }
344
+ Direction.South => { say("south"); }
345
+ _ => { say("other"); }
346
+ }
347
+ }
348
+ `);
349
+ const fn = getFunction(ir, 'choose');
350
+ const rawCmds = getRawCommands(fn);
351
+ expect(getInstructions(fn).some(i => i.op === 'cmp' && i.rhs.value === 1)).toBe(true);
352
+ expect(rawCmds.some(cmd => cmd.includes('matches 0 run function'))).toBe(true);
353
+ expect(rawCmds.some(cmd => cmd.includes('matches 1 run function'))).toBe(true);
354
+ });
355
+ });
356
+ describe('arrays', () => {
357
+ it('lowers array literal initialization', () => {
358
+ const ir = compile('fn test() { let arr: int[] = [1, 2, 3]; }');
359
+ const fn = getFunction(ir, 'test');
360
+ const rawCmds = getRawCommands(fn);
361
+ expect(rawCmds).toContain('data modify storage rs:heap arr set value []');
362
+ expect(rawCmds).toContain('data modify storage rs:heap arr append value 1');
363
+ expect(rawCmds).toContain('data modify storage rs:heap arr append value 2');
364
+ expect(rawCmds).toContain('data modify storage rs:heap arr append value 3');
365
+ });
366
+ it('lowers array len property', () => {
367
+ const ir = compile('fn test() { let arr: int[] = [1]; let n: int = arr.len; }');
368
+ const fn = getFunction(ir, 'test');
369
+ const rawCmds = getRawCommands(fn);
370
+ expect(rawCmds.some(cmd => cmd.includes('execute store result score') && cmd.includes('run data get storage rs:heap arr'))).toBe(true);
371
+ });
372
+ it('lowers static array indexing', () => {
373
+ const ir = compile('fn test() { let arr: int[] = [7, 8]; let x: int = arr[0]; }');
374
+ const fn = getFunction(ir, 'test');
375
+ const rawCmds = getRawCommands(fn);
376
+ expect(rawCmds.some(cmd => cmd.includes('run data get storage rs:heap arr[0]'))).toBe(true);
377
+ });
378
+ it('lowers dynamic array indexing via macro helper', () => {
379
+ const ir = compile('fn test() { let arr: int[] = [7, 8]; let i: int = 1; let x: int = arr[i]; }');
380
+ const fn = getFunction(ir, 'test');
381
+ const rawCmds = getRawCommands(fn);
382
+ expect(rawCmds.some(cmd => cmd.includes('with storage rs:heap'))).toBe(true);
383
+ const helperFn = ir.functions.find(f => f.name.includes('array_get_'));
384
+ expect(helperFn).toBeDefined();
385
+ expect(getRawCommands(helperFn).some(cmd => cmd.includes('arr[$('))).toBe(true);
386
+ });
387
+ it('lowers array push', () => {
388
+ const ir = compile('fn test() { let arr: int[] = []; arr.push(4); }');
389
+ const fn = getFunction(ir, 'test');
390
+ const rawCmds = getRawCommands(fn);
391
+ expect(rawCmds).toContain('data modify storage rs:heap arr append value 4');
392
+ });
393
+ it('lowers array pop', () => {
394
+ const ir = compile('fn test() { let arr: int[] = [1, 2]; let x: int = arr.pop(); }');
395
+ const fn = getFunction(ir, 'test');
396
+ const rawCmds = getRawCommands(fn);
397
+ expect(rawCmds.some(cmd => cmd.includes('run data get storage rs:heap arr[-1]'))).toBe(true);
398
+ expect(rawCmds).toContain('data remove storage rs:heap arr[-1]');
399
+ });
400
+ });
401
+ describe('as/at blocks', () => {
402
+ it('extracts as block into sub-function', () => {
403
+ const ir = compile('fn test() { as @a { say("hello"); } }');
404
+ expect(ir.functions.length).toBe(2);
405
+ const mainFn = getFunction(ir, 'test');
406
+ const rawCmds = getRawCommands(mainFn);
407
+ expect(rawCmds.some(cmd => cmd.includes('execute as @a') && cmd.includes('run function'))).toBe(true);
408
+ });
409
+ it('extracts at block into sub-function', () => {
410
+ const ir = compile('fn test() { at @s { summon("zombie"); } }');
411
+ expect(ir.functions.length).toBe(2);
412
+ const mainFn = getFunction(ir, 'test');
413
+ const rawCmds = getRawCommands(mainFn);
414
+ expect(rawCmds.some(cmd => cmd.includes('execute at @s') && cmd.includes('run function'))).toBe(true);
415
+ });
416
+ });
417
+ describe('execute inline blocks', () => {
418
+ it('extracts execute as run block into sub-function', () => {
419
+ const ir = compile('fn test() { execute as @a run { say("hello from each"); } }');
420
+ expect(ir.functions.length).toBe(2);
421
+ const mainFn = getFunction(ir, 'test');
422
+ const rawCmds = getRawCommands(mainFn);
423
+ expect(rawCmds.some(cmd => cmd.includes('execute as @a run function'))).toBe(true);
424
+ });
425
+ it('extracts execute as at run block into sub-function', () => {
426
+ const ir = compile('fn test() { execute as @a at @s run { particle("flame"); } }');
427
+ expect(ir.functions.length).toBe(2);
428
+ const mainFn = getFunction(ir, 'test');
429
+ const rawCmds = getRawCommands(mainFn);
430
+ expect(rawCmds.some(cmd => cmd.includes('execute as @a at @s run function'))).toBe(true);
431
+ });
432
+ it('handles execute with if entity condition', () => {
433
+ const ir = compile('fn test() { execute as @a if entity @s[tag=admin] run { give(@s, "diamond", 1); } }');
434
+ expect(ir.functions.length).toBe(2);
435
+ const mainFn = getFunction(ir, 'test');
436
+ const rawCmds = getRawCommands(mainFn);
437
+ expect(rawCmds.some(cmd => cmd.includes('execute as @a if entity @s[tag=admin] run function'))).toBe(true);
438
+ });
439
+ it('handles execute with unless entity condition', () => {
440
+ const ir = compile('fn test() { execute as @a unless entity @s[tag=dead] run { effect(@s, "regeneration", 5); } }');
441
+ expect(ir.functions.length).toBe(2);
442
+ const mainFn = getFunction(ir, 'test');
443
+ const rawCmds = getRawCommands(mainFn);
444
+ expect(rawCmds.some(cmd => cmd.includes('execute as @a unless entity @s[tag=dead] run function'))).toBe(true);
445
+ });
446
+ it('handles execute with in dimension', () => {
447
+ const ir = compile('fn test() { execute in the_nether run { say("in nether"); } }');
448
+ expect(ir.functions.length).toBe(2);
449
+ const mainFn = getFunction(ir, 'test');
450
+ const rawCmds = getRawCommands(mainFn);
451
+ expect(rawCmds.some(cmd => cmd.includes('execute in the_nether run function'))).toBe(true);
452
+ });
453
+ it('lowered sub-function contains body commands', () => {
454
+ const ir = compile('fn test() { execute as @a run { say("inner"); give(@s, "bread", 1); } }');
455
+ const subFn = ir.functions.find(f => f.name.includes('exec_'));
456
+ expect(subFn).toBeDefined();
457
+ const rawCmds = getRawCommands(subFn);
458
+ expect(rawCmds).toContain('say inner');
459
+ expect(rawCmds.some(cmd => cmd.includes('give @s bread 1'))).toBe(true);
460
+ });
461
+ });
462
+ describe('builtins', () => {
463
+ it('lowers say()', () => {
464
+ const ir = compile('fn test() { say("hello"); }');
465
+ const fn = getFunction(ir, 'test');
466
+ const rawCmds = getRawCommands(fn);
467
+ expect(rawCmds).toContain('say hello');
468
+ });
469
+ it('lowers kill()', () => {
470
+ const ir = compile('fn test() { kill(@e[type=zombie]); }');
471
+ const fn = getFunction(ir, 'test');
472
+ const rawCmds = getRawCommands(fn);
473
+ expect(rawCmds).toContain('kill @e[type=minecraft:zombie]');
474
+ });
475
+ it('lowers give()', () => {
476
+ const ir = compile('fn test() { give(@p, "diamond", 64); }');
477
+ const fn = getFunction(ir, 'test');
478
+ const rawCmds = getRawCommands(fn);
479
+ expect(rawCmds).toContain('give @p diamond 64');
480
+ });
481
+ it('lowers actionbar(), subtitle(), and title_times()', () => {
482
+ const ir = compile('fn test() { actionbar(@a, "Fight!"); subtitle(@a, "Next wave"); title_times(@a, 10, 40, 10); }');
483
+ const fn = getFunction(ir, 'test');
484
+ const rawCmds = getRawCommands(fn);
485
+ expect(rawCmds).toContain('title @a actionbar {"text":"Fight!"}');
486
+ expect(rawCmds).toContain('title @a subtitle {"text":"Next wave"}');
487
+ expect(rawCmds).toContain('title @a times 10 40 10');
488
+ });
489
+ it('lowers announce()', () => {
490
+ const ir = compile('fn test() { announce("Server event starting"); }');
491
+ const fn = getFunction(ir, 'test');
492
+ const rawCmds = getRawCommands(fn);
493
+ expect(rawCmds).toContain('tellraw @a {"text":"Server event starting"}');
494
+ });
495
+ it('lowers interpolated say() to tellraw score components', () => {
496
+ const ir = compile('fn test() { let score: int = 7; say("You have ${score} points"); }');
497
+ const fn = getFunction(ir, 'test');
498
+ const rawCmds = getRawCommands(fn);
499
+ expect(rawCmds).toContain('tellraw @a ["",{"text":"You have "},{"score":{"name":"$test_score","objective":"rs"}},{"text":" points"}]');
500
+ });
501
+ it('lowers f-string output builtins to tellraw/title JSON components', () => {
502
+ const ir = compile('fn test() { let score: int = 7; say(f"Score: {score}"); tellraw(@a, f"Score: {score}"); actionbar(@s, f"Score: {score}"); title(@s, f"Score: {score}"); }');
503
+ const fn = getFunction(ir, 'test');
504
+ const rawCmds = getRawCommands(fn);
505
+ expect(rawCmds).toContain('tellraw @a ["",{"text":"Score: "},{"score":{"name":"$test_score","objective":"rs"}}]');
506
+ expect(rawCmds).toContain('title @s actionbar ["",{"text":"Score: "},{"score":{"name":"$test_score","objective":"rs"}}]');
507
+ expect(rawCmds).toContain('title @s title ["",{"text":"Score: "},{"score":{"name":"$test_score","objective":"rs"}}]');
508
+ });
509
+ it('lowers summon()', () => {
510
+ const ir = compile('fn test() { summon("zombie"); }');
511
+ const fn = getFunction(ir, 'test');
512
+ const rawCmds = getRawCommands(fn);
513
+ expect(rawCmds.some(cmd => cmd.includes('summon zombie'))).toBe(true);
514
+ });
515
+ it('lowers effect()', () => {
516
+ const ir = compile('fn test() { effect(@a, "speed", 30, 1); }');
517
+ const fn = getFunction(ir, 'test');
518
+ const rawCmds = getRawCommands(fn);
519
+ expect(rawCmds.some(cmd => cmd.includes('effect give @a speed 30 1'))).toBe(true);
520
+ });
521
+ it('lowers tp() for both positions and entity destinations', () => {
522
+ const ir = compile('fn test() { tp(@s, (~1, ~0, ~-1)); tp(@s, "^0", "^1", "^0"); tp(@s, @p); tp(@a, (1, 64, 1)); }');
523
+ const fn = getFunction(ir, 'test');
524
+ const rawCmds = getRawCommands(fn);
525
+ expect(rawCmds).toContain('tp @s ~1 ~ ~-1');
526
+ expect(rawCmds).toContain('tp @s ^0 ^1 ^0');
527
+ expect(rawCmds).toContain('tp @s @p');
528
+ expect(rawCmds).toContain('tp @a 1 64 1');
529
+ });
530
+ it('warns when using tp_to()', () => {
531
+ const { ir, warnings } = compileWithWarnings('fn test() { tp_to(@s, @p); }');
532
+ const fn = getFunction(ir, 'test');
533
+ const rawCmds = getRawCommands(fn);
534
+ expect(rawCmds).toContain('tp @s @p');
535
+ expect(warnings).toContainEqual(expect.objectContaining({
536
+ code: 'W_DEPRECATED',
537
+ message: 'tp_to is deprecated; use tp instead',
538
+ }));
539
+ });
540
+ it('lowers inventory and player admin commands', () => {
541
+ const ir = compile('fn test() { clear(@s); clear(@s, "minecraft:stick"); kick(@p); kick(@p, "AFK"); }');
542
+ const fn = getFunction(ir, 'test');
543
+ const rawCmds = getRawCommands(fn);
544
+ expect(rawCmds).toContain('clear @s');
545
+ expect(rawCmds).toContain('clear @s minecraft:stick');
546
+ expect(rawCmds).toContain('kick @p');
547
+ expect(rawCmds).toContain('kick @p AFK');
548
+ });
549
+ it('lowers world management commands', () => {
550
+ const ir = compile('fn test() { weather("rain"); time_set("day"); time_add(1000); gamerule("doDaylightCycle", "false"); difficulty("hard"); }');
551
+ const fn = getFunction(ir, 'test');
552
+ const rawCmds = getRawCommands(fn);
553
+ expect(rawCmds).toContain('weather rain');
554
+ expect(rawCmds).toContain('time set day');
555
+ expect(rawCmds).toContain('time add 1000');
556
+ expect(rawCmds).toContain('gamerule doDaylightCycle false');
557
+ expect(rawCmds).toContain('difficulty hard');
558
+ });
559
+ it('lowers tag_add() and tag_remove()', () => {
560
+ const ir = compile('fn test() { tag_add(@s, "boss"); tag_remove(@s, "boss"); }');
561
+ const fn = getFunction(ir, 'test');
562
+ const rawCmds = getRawCommands(fn);
563
+ expect(rawCmds).toContain('tag @s add boss');
564
+ expect(rawCmds).toContain('tag @s remove boss');
565
+ });
566
+ it('lowers setblock(), fill(), and clone()', () => {
567
+ const ir = compile('fn test() { setblock((4, 65, 4), "stone"); fill((0, 64, 0), (8, 64, 8), "minecraft:smooth_stone"); clone((0, 64, 0), (4, 68, 4), (10, 64, 10)); setblock("~", "~", "~", "legacy"); }');
568
+ const fn = getFunction(ir, 'test');
569
+ const rawCmds = getRawCommands(fn);
570
+ expect(rawCmds).toContain('setblock 4 65 4 stone');
571
+ expect(rawCmds).toContain('fill 0 64 0 8 64 8 minecraft:smooth_stone');
572
+ expect(rawCmds).toContain('clone 0 64 0 4 68 4 10 64 10');
573
+ expect(rawCmds).toContain('setblock ~ ~ ~ legacy');
574
+ });
575
+ it('lowers BlockPos locals in coordinate builtins', () => {
576
+ const ir = compile('fn test() { let spawn: BlockPos = (4, 65, 4); setblock(spawn, "minecraft:stone"); }');
577
+ const fn = getFunction(ir, 'test');
578
+ const rawCmds = getRawCommands(fn);
579
+ expect(rawCmds).toContain('setblock 4 65 4 minecraft:stone');
580
+ });
581
+ it('lowers xp_add() and xp_set()', () => {
582
+ const ir = compile('fn test() { xp_add(@s, 5); xp_add(@s, 2, "levels"); xp_set(@s, 0); xp_set(@s, 3, "levels"); }');
583
+ const fn = getFunction(ir, 'test');
584
+ const rawCmds = getRawCommands(fn);
585
+ expect(rawCmds).toContain('xp add @s 5 points');
586
+ expect(rawCmds).toContain('xp add @s 2 levels');
587
+ expect(rawCmds).toContain('xp set @s 0 points');
588
+ expect(rawCmds).toContain('xp set @s 3 levels');
589
+ });
590
+ it('lowers scoreboard display and objective management builtins', () => {
591
+ const ir = compile(`
592
+ fn test() {
593
+ scoreboard_display("sidebar", "kills");
594
+ scoreboard_display("list", "coins");
595
+ scoreboard_display("belowName", "hp");
596
+ scoreboard_hide("sidebar");
597
+ scoreboard_add_objective("kills", "playerKillCount", "Kill Count");
598
+ scoreboard_remove_objective("kills");
599
+ }
600
+ `);
601
+ const fn = getFunction(ir, 'test');
602
+ const rawCmds = getRawCommands(fn);
603
+ expect(rawCmds).toContain('scoreboard objectives setdisplay sidebar test.kills');
604
+ expect(rawCmds).toContain('scoreboard objectives setdisplay list test.coins');
605
+ expect(rawCmds).toContain('scoreboard objectives setdisplay belowName test.hp');
606
+ expect(rawCmds).toContain('scoreboard objectives setdisplay sidebar');
607
+ expect(rawCmds).toContain('scoreboard objectives add test.kills playerKillCount "Kill Count"');
608
+ expect(rawCmds).toContain('scoreboard objectives remove test.kills');
609
+ });
610
+ it('lowers bossbar management builtins', () => {
611
+ const ir = compile(`
612
+ fn test() {
613
+ bossbar_add("ns:health", "Boss Health");
614
+ bossbar_set_value("ns:health", 50);
615
+ bossbar_set_max("ns:health", 100);
616
+ bossbar_set_color("ns:health", "red");
617
+ bossbar_set_style("ns:health", "notched_10");
618
+ bossbar_set_visible("ns:health", true);
619
+ bossbar_set_players("ns:health", @a);
620
+ bossbar_remove("ns:health");
621
+ let current: int = bossbar_get_value("ns:health");
622
+ }
623
+ `);
624
+ const fn = getFunction(ir, 'test');
625
+ const rawCmds = getRawCommands(fn);
626
+ expect(rawCmds).toContain('bossbar add ns:health {"text":"Boss Health"}');
627
+ expect(rawCmds).toContain('bossbar set ns:health value 50');
628
+ expect(rawCmds).toContain('bossbar set ns:health max 100');
629
+ expect(rawCmds).toContain('bossbar set ns:health color red');
630
+ expect(rawCmds).toContain('bossbar set ns:health style notched_10');
631
+ expect(rawCmds).toContain('bossbar set ns:health visible true');
632
+ expect(rawCmds).toContain('bossbar set ns:health players @a');
633
+ expect(rawCmds).toContain('bossbar remove ns:health');
634
+ expect(rawCmds.some(cmd => /^execute store result score \$_\d+ rs run bossbar get ns:health value$/.test(cmd))).toBe(true);
635
+ });
636
+ it('lowers team management builtins', () => {
637
+ const ir = compile(`
638
+ fn test() {
639
+ team_add("red", "Red Team");
640
+ team_remove("red");
641
+ team_join("red", @a[tag=red_team]);
642
+ team_leave(@s);
643
+ team_option("red", "friendlyFire", "false");
644
+ team_option("red", "color", "red");
645
+ team_option("red", "prefix", "[Red] ");
646
+ }
647
+ `);
648
+ const fn = getFunction(ir, 'test');
649
+ const rawCmds = getRawCommands(fn);
650
+ expect(rawCmds).toContain('team add red {"text":"Red Team"}');
651
+ expect(rawCmds).toContain('team remove red');
652
+ expect(rawCmds).toContain('team join red @a[tag=red_team]');
653
+ expect(rawCmds).toContain('team leave @s');
654
+ expect(rawCmds).toContain('team modify red friendlyFire false');
655
+ expect(rawCmds).toContain('team modify red color red');
656
+ expect(rawCmds).toContain('team modify red prefix {"text":"[Red] "}');
657
+ });
658
+ it('lowers random()', () => {
659
+ const ir = compile('fn test() { let x: int = random(1, 100); }');
660
+ const fn = getFunction(ir, 'test');
661
+ const rawCmds = getRawCommands(fn);
662
+ expect(rawCmds).toContain('scoreboard players random $_0 rs 1 100');
663
+ });
664
+ it('lowers random_native()', () => {
665
+ const ir = compile('fn test() { let x: int = random_native(1, 6); }');
666
+ const fn = getFunction(ir, 'test');
667
+ const rawCmds = getRawCommands(fn);
668
+ expect(rawCmds).toContain('execute store result score $_0 rs run random value 1 6');
669
+ });
670
+ it('lowers random_sequence()', () => {
671
+ const ir = compile('fn test() { random_sequence("loot", 42); }');
672
+ const fn = getFunction(ir, 'test');
673
+ const rawCmds = getRawCommands(fn);
674
+ expect(rawCmds).toContain('random reset loot 42');
675
+ });
676
+ it('lowers setTimeout() to a scheduled helper function', () => {
677
+ const ir = compile('fn test() { setTimeout(100, () => { say("hi"); }); }');
678
+ const fn = getFunction(ir, 'test');
679
+ const timeoutFn = getFunction(ir, '__timeout_0');
680
+ const rawCmds = getRawCommands(fn);
681
+ const timeoutCmds = getRawCommands(timeoutFn);
682
+ expect(rawCmds).toContain('schedule function test:__timeout_0 100t');
683
+ expect(timeoutCmds).toContain('say hi');
684
+ });
685
+ it('lowers setInterval() to a self-rescheduling helper function', () => {
686
+ const ir = compile('fn test() { setInterval(20, () => { say("tick"); }); }');
687
+ const fn = getFunction(ir, 'test');
688
+ const intervalFn = getFunction(ir, '__interval_0');
689
+ const intervalBodyFn = getFunction(ir, '__interval_body_0');
690
+ const rawCmds = getRawCommands(fn);
691
+ const intervalCmds = getRawCommands(intervalFn);
692
+ const intervalBodyCmds = getRawCommands(intervalBodyFn);
693
+ expect(rawCmds).toContain('schedule function test:__interval_0 20t');
694
+ expect(intervalCmds).toContain('function test:__interval_body_0');
695
+ expect(intervalCmds).toContain('schedule function test:__interval_0 20t');
696
+ expect(intervalBodyCmds).toContain('say tick');
697
+ });
698
+ it('lowers clearInterval() to schedule clear for the generated interval function', () => {
699
+ const ir = compile(`
700
+ fn test() {
701
+ let intervalId: int = setInterval(20, () => { say("tick"); });
702
+ clearInterval(intervalId);
703
+ }
704
+ `);
705
+ const fn = getFunction(ir, 'test');
706
+ const rawCmds = getRawCommands(fn);
707
+ expect(rawCmds).toContain('schedule function test:__interval_0 20t');
708
+ expect(rawCmds).toContain('schedule clear test:__interval_0');
709
+ });
710
+ it('lowers data_get from entity', () => {
711
+ const ir = compile('fn test() { let item_count: int = data_get("entity", "@s", "SelectedItem.Count"); }');
712
+ const fn = getFunction(ir, 'test');
713
+ const rawCmds = getRawCommands(fn);
714
+ expect(rawCmds.some(cmd => cmd.includes('execute store result score') &&
715
+ cmd.includes('run data get entity @s SelectedItem.Count 1'))).toBe(true);
716
+ });
717
+ it('lowers data_get from block', () => {
718
+ const ir = compile('fn test() { let furnace_fuel: int = data_get("block", "~ ~ ~", "BurnTime"); }');
719
+ const fn = getFunction(ir, 'test');
720
+ const rawCmds = getRawCommands(fn);
721
+ expect(rawCmds.some(cmd => cmd.includes('run data get block ~ ~ ~ BurnTime 1'))).toBe(true);
722
+ });
723
+ it('lowers data_get from storage', () => {
724
+ const ir = compile('fn test() { let val: int = data_get("storage", "mypack:globals", "player_count"); }');
725
+ const fn = getFunction(ir, 'test');
726
+ const rawCmds = getRawCommands(fn);
727
+ expect(rawCmds.some(cmd => cmd.includes('run data get storage mypack:globals player_count 1'))).toBe(true);
728
+ });
729
+ it('lowers data_get with scale factor', () => {
730
+ const ir = compile('fn test() { let scaled: int = data_get("entity", "@s", "Pos[0]", "1000"); }');
731
+ const fn = getFunction(ir, 'test');
732
+ const rawCmds = getRawCommands(fn);
733
+ expect(rawCmds.some(cmd => cmd.includes('run data get entity @s Pos[0] 1000'))).toBe(true);
734
+ });
735
+ it('data_get result can be used in expressions', () => {
736
+ const ir = compile(`
737
+ fn test() {
738
+ let count: int = data_get("entity", "@s", "SelectedItem.Count");
739
+ let doubled: int = count * 2;
740
+ }
741
+ `);
742
+ const fn = getFunction(ir, 'test');
743
+ const instrs = getInstructions(fn);
744
+ expect(instrs.some(i => i.op === 'binop' && i.bop === '*')).toBe(true);
745
+ });
746
+ it('accepts bare selector targets in scoreboard_get', () => {
747
+ const ir = compile('fn test() { let score: int = scoreboard_get(@s, "score"); }');
748
+ const fn = getFunction(ir, 'test');
749
+ const rawCmds = getRawCommands(fn);
750
+ expect(rawCmds.some(cmd => cmd.includes('run scoreboard players get @s test.score'))).toBe(true);
751
+ });
752
+ it('accepts bare selector targets in scoreboard_set', () => {
753
+ const ir = compile('fn test() { scoreboard_set(@a, "kills", 0); }');
754
+ const fn = getFunction(ir, 'test');
755
+ const rawCmds = getRawCommands(fn);
756
+ expect(rawCmds).toContain('scoreboard players set @a test.kills 0');
757
+ });
758
+ it('skips prefixing raw mc_name objectives', () => {
759
+ const ir = compile('fn test() { scoreboard_set(@s, #health, 100); }');
760
+ const fn = getFunction(ir, 'test');
761
+ const rawCmds = getRawCommands(fn);
762
+ expect(rawCmds).toContain('scoreboard players set @s health 100');
763
+ });
764
+ it('warns on quoted selectors in scoreboard_get', () => {
765
+ const { ir, warnings } = compileWithWarnings('fn test() { let score: int = scoreboard_get("@s", "score"); }');
766
+ const fn = getFunction(ir, 'test');
767
+ const rawCmds = getRawCommands(fn);
768
+ expect(rawCmds.some(cmd => cmd.includes('run scoreboard players get @s test.score'))).toBe(true);
769
+ expect(warnings).toContainEqual(expect.objectContaining({
770
+ code: 'W_QUOTED_SELECTOR',
771
+ message: 'Quoted selector "@s" is deprecated; pass @s without quotes',
772
+ }));
773
+ });
774
+ it('does not warn on fake player names', () => {
775
+ const { ir, warnings } = compileWithWarnings('fn test() { let total: int = scoreboard_get("#global", "total"); }');
776
+ const fn = getFunction(ir, 'test');
777
+ const rawCmds = getRawCommands(fn);
778
+ expect(rawCmds.some(cmd => cmd.includes('run scoreboard players get #global test.total'))).toBe(true);
779
+ expect(warnings).toHaveLength(0);
780
+ });
781
+ it('warns on quoted selectors in data_get entity targets', () => {
782
+ const { ir, warnings } = compileWithWarnings('fn test() { let pos: int = data_get("entity", "@s", "Pos[0]"); }');
783
+ const fn = getFunction(ir, 'test');
784
+ const rawCmds = getRawCommands(fn);
785
+ expect(rawCmds.some(cmd => cmd.includes('run data get entity @s Pos[0] 1'))).toBe(true);
786
+ expect(warnings).toContainEqual(expect.objectContaining({
787
+ code: 'W_QUOTED_SELECTOR',
788
+ message: 'Quoted selector "@s" is deprecated; pass @s without quotes',
789
+ }));
790
+ });
791
+ it('keeps already-qualified scoreboard objectives unchanged', () => {
792
+ const ir = compile('fn test() { scoreboard_set(@s, "custom.timer", 5); }');
793
+ const fn = getFunction(ir, 'test');
794
+ const rawCmds = getRawCommands(fn);
795
+ expect(rawCmds).toContain('scoreboard players set @s custom.timer 5');
796
+ });
797
+ });
798
+ describe('timer builtins', () => {
799
+ it('lowers timer builtins into schedule commands and wrapper functions', () => {
800
+ const ir = compile(`
801
+ fn test() {
802
+ let intervalId: int = setInterval(20, () => {
803
+ say("tick");
804
+ });
805
+ setTimeout(100, () => {
806
+ say("later");
807
+ });
808
+ clearInterval(intervalId);
809
+ }
810
+ `);
811
+ const fn = getFunction(ir, 'test');
812
+ const rawCmds = getRawCommands(fn);
813
+ expect(rawCmds).toContain('schedule function test:__interval_0 20t');
814
+ expect(rawCmds).toContain('schedule function test:__timeout_0 100t');
815
+ expect(rawCmds).toContain('schedule clear test:__interval_0');
816
+ const intervalFn = getFunction(ir, '__interval_0');
817
+ expect(getRawCommands(intervalFn)).toEqual([
818
+ 'function test:__interval_body_0',
819
+ 'schedule function test:__interval_0 20t',
820
+ ]);
821
+ });
822
+ });
823
+ describe('decorators', () => {
824
+ it('marks @tick function', () => {
825
+ const ir = compile('@tick fn game_loop() {}');
826
+ const fn = getFunction(ir, 'game_loop');
827
+ expect(fn.isTickLoop).toBe(true);
828
+ });
829
+ it('marks @on_trigger function', () => {
830
+ const ir = compile('@on_trigger("my_trigger") fn handle_trigger() {}');
831
+ const fn = getFunction(ir, 'handle_trigger');
832
+ expect(fn.isTriggerHandler).toBe(true);
833
+ expect(fn.triggerName).toBe('my_trigger');
834
+ });
835
+ it('marks @on_advancement function for advancement json generation', () => {
836
+ const ir = compile('@on_advancement("story/mine_diamond") fn handle_advancement() {}');
837
+ const fn = getFunction(ir, 'handle_advancement');
838
+ expect(fn.eventTrigger).toEqual({ kind: 'advancement', value: 'story/mine_diamond' });
839
+ });
840
+ it('marks @on event functions and binds player to @s', () => {
841
+ const ir = compile('@on(PlayerDeath) fn handle_death(player: Player) { tp(player, @p); }');
842
+ const fn = getFunction(ir, 'handle_death');
843
+ expect(fn.eventHandler).toEqual({ eventType: 'PlayerDeath', tag: 'rs.just_died' });
844
+ expect(fn.params).toEqual([]);
845
+ expect(getRawCommands(fn)).toContain('tp @s @p');
846
+ });
847
+ });
848
+ describe('selectors', () => {
849
+ it('converts selector with filters to string', () => {
850
+ const ir = compile('fn test() { kill(@e[type=zombie, distance=..10, tag=boss]); }');
851
+ const fn = getFunction(ir, 'test');
852
+ const rawCmds = getRawCommands(fn);
853
+ const killCmd = rawCmds.find(cmd => cmd.startsWith('kill'));
854
+ expect(killCmd).toContain('type=minecraft:zombie');
855
+ expect(killCmd).toContain('distance=..10');
856
+ expect(killCmd).toContain('tag=boss');
857
+ });
858
+ it('warns and auto-qualifies unnamespaced entity types', () => {
859
+ const { ir, warnings } = compileWithWarnings('fn test() { kill(@e[type=zombie]); }');
860
+ const fn = getFunction(ir, 'test');
861
+ const rawCmds = getRawCommands(fn);
862
+ expect(rawCmds).toContain('kill @e[type=minecraft:zombie]');
863
+ expect(warnings).toContainEqual({
864
+ code: 'W_UNNAMESPACED_TYPE',
865
+ message: 'Unnamespaced entity type "zombie", auto-qualifying to "minecraft:zombie"',
866
+ });
867
+ });
868
+ it('passes through minecraft entity types without warnings', () => {
869
+ const { ir, warnings } = compileWithWarnings('fn test() { kill(@e[type=minecraft:zombie]); }');
870
+ const fn = getFunction(ir, 'test');
871
+ const rawCmds = getRawCommands(fn);
872
+ expect(rawCmds).toContain('kill @e[type=minecraft:zombie]');
873
+ expect(warnings).toHaveLength(0);
874
+ });
875
+ it('passes through custom namespaced entity types without warnings', () => {
876
+ const { ir, warnings } = compileWithWarnings('fn test() { kill(@e[type=my_mod:custom_mob]); }');
877
+ const fn = getFunction(ir, 'test');
878
+ const rawCmds = getRawCommands(fn);
879
+ expect(rawCmds).toContain('kill @e[type=my_mod:custom_mob]');
880
+ expect(warnings).toHaveLength(0);
881
+ });
882
+ it('throws on invalid entity type format', () => {
883
+ expect(() => compileWithWarnings('fn test() { kill(@e[type=invalid!!!]); }'))
884
+ .toThrow('Invalid entity type format: "invalid!!!"');
885
+ });
886
+ });
887
+ describe('raw commands', () => {
888
+ it('passes through raw commands', () => {
889
+ const ir = compile('fn test() { raw("tp @a ~ ~10 ~"); }');
890
+ const fn = getFunction(ir, 'test');
891
+ const rawCmds = getRawCommands(fn);
892
+ expect(rawCmds).toContain('tp @a ~ ~10 ~');
893
+ });
894
+ });
895
+ describe('assignment operators', () => {
896
+ it('lowers compound assignment', () => {
897
+ const ir = compile('fn test() { let x: int = 5; x += 3; }');
898
+ const fn = getFunction(ir, 'test');
899
+ const instrs = getInstructions(fn);
900
+ const binop = instrs.find(i => i.op === 'binop' && i.bop === '+');
901
+ expect(binop).toBeDefined();
902
+ });
903
+ });
904
+ describe('entity tag methods', () => {
905
+ it('lowers entity.tag()', () => {
906
+ const ir = compile('fn test() { @s.tag("boss"); }');
907
+ const fn = getFunction(ir, 'test');
908
+ const rawCmds = getRawCommands(fn);
909
+ expect(rawCmds).toContain('tag @s add boss');
910
+ });
911
+ it('lowers entity.untag()', () => {
912
+ const ir = compile('fn test() { @s.untag("boss"); }');
913
+ const fn = getFunction(ir, 'test');
914
+ const rawCmds = getRawCommands(fn);
915
+ expect(rawCmds).toContain('tag @s remove boss');
916
+ });
917
+ it('lowers entity.has_tag() and returns temp var', () => {
918
+ const ir = compile('fn test() { let x: bool = @s.has_tag("boss"); }');
919
+ const fn = getFunction(ir, 'test');
920
+ const rawCmds = getRawCommands(fn);
921
+ expect(rawCmds.some(cmd => cmd.includes('execute store result score') && cmd.includes('if entity @s[tag=boss]'))).toBe(true);
922
+ });
923
+ it('lowers entity.tag() on selector with filters', () => {
924
+ const ir = compile('fn test() { @e[type=zombie].tag("marked"); }');
925
+ const fn = getFunction(ir, 'test');
926
+ const rawCmds = getRawCommands(fn);
927
+ expect(rawCmds.some(cmd => cmd.includes('tag @e[type=minecraft:zombie] add marked'))).toBe(true);
928
+ });
929
+ });
930
+ describe('complex programs', () => {
931
+ it('compiles add function correctly', () => {
932
+ const source = `
933
+ fn add(a: int, b: int) -> int {
934
+ return a + b;
935
+ }
936
+ `;
937
+ const ir = compile(source);
938
+ const fn = getFunction(ir, 'add');
939
+ expect(fn.params).toEqual(['$a', '$b']);
940
+ const instrs = getInstructions(fn);
941
+ expect(instrs.some(i => i.op === 'binop' && i.bop === '+')).toBe(true);
942
+ const term = fn.blocks[fn.blocks.length - 1].term;
943
+ expect(term.op).toBe('return');
944
+ expect(term.value?.kind).toBe('var');
945
+ });
946
+ it('compiles abs function with if/else', () => {
947
+ const source = `
948
+ fn abs(x: int) -> int {
949
+ if (x < 0) {
950
+ return -x;
951
+ } else {
952
+ return x;
953
+ }
954
+ }
955
+ `;
956
+ const ir = compile(source);
957
+ const fn = getFunction(ir, 'abs');
958
+ expect(fn.blocks.length).toBeGreaterThanOrEqual(3);
959
+ // Should have comparison
960
+ const instrs = getInstructions(fn);
961
+ expect(instrs.some(i => i.op === 'cmp' && i.cop === '<')).toBe(true);
962
+ });
963
+ it('compiles countdown with while', () => {
964
+ const source = `
965
+ fn count_down() {
966
+ let i: int = 10;
967
+ while (i > 0) {
968
+ i = i - 1;
969
+ }
970
+ }
971
+ `;
972
+ const ir = compile(source);
973
+ const fn = getFunction(ir, 'count_down');
974
+ // Should have loop structure
975
+ const checkBlock = fn.blocks.find(b => b.label.includes('loop_check'));
976
+ const bodyBlock = fn.blocks.find(b => b.label.includes('loop_body'));
977
+ expect(checkBlock).toBeDefined();
978
+ expect(bodyBlock).toBeDefined();
979
+ });
980
+ });
981
+ describe('Global variables', () => {
982
+ it('registers global in IR globals with init value', () => {
983
+ const ir = compile('let x: int = 42;\nfn test() { say("hi"); }');
984
+ expect(ir.globals).toContainEqual({ name: '$x', init: 42 });
985
+ });
986
+ it('reads global variable in function body', () => {
987
+ const ir = compile('let count: int = 0;\nfn test() { let y: int = count; }');
988
+ const fn = getFunction(ir, 'test');
989
+ const instrs = getInstructions(fn);
990
+ expect(instrs.some(i => i.op === 'assign' && i.dst === '$test_y' && i.src.kind === 'var' && i.src.name === '$count')).toBe(true);
991
+ });
992
+ it('writes global variable in function body', () => {
993
+ const ir = compile('let count: int = 0;\nfn inc() { count = 5; }');
994
+ const fn = getFunction(ir, 'inc');
995
+ const instrs = getInstructions(fn);
996
+ expect(instrs.some(i => i.op === 'assign' && i.dst === '$count' && i.src.kind === 'const' && i.src.value === 5)).toBe(true);
997
+ });
998
+ it('compound assignment on global variable', () => {
999
+ const ir = compile('let count: int = 0;\nfn inc() { count += 1; }');
1000
+ const fn = getFunction(ir, 'inc');
1001
+ const instrs = getInstructions(fn);
1002
+ expect(instrs.some(i => i.op === 'binop' && i.lhs.name === '$count' && i.bop === '+' && i.rhs.value === 1)).toBe(true);
1003
+ });
1004
+ it('const cannot be reassigned', () => {
1005
+ const src = 'const X: int = 5;\nfn bad() { X = 10; }';
1006
+ expect(() => compile(src)).toThrow(/Cannot assign to constant/);
1007
+ });
1008
+ it('multiple globals with different init values', () => {
1009
+ const ir = compile('let a: int = 10;\nlet b: int = 20;\nfn test() { a = b; }');
1010
+ expect(ir.globals).toContainEqual({ name: '$a', init: 10 });
1011
+ expect(ir.globals).toContainEqual({ name: '$b', init: 20 });
1012
+ });
1013
+ });
1014
+ });
1015
+ //# sourceMappingURL=lowering.test.js.map