kumi 0.0.36 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +39 -58
  3. data/.rubocop_todo.yml +931 -0
  4. data/CHANGELOG.md +39 -2
  5. data/README.md +75 -1
  6. data/data/functions/core/arithmetic.yaml +48 -0
  7. data/data/functions/core/conversion.yaml +13 -0
  8. data/data/functions/core/select.yaml +1 -1
  9. data/data/functions/core/stencil.yaml +32 -0
  10. data/data/kernels/javascript/agg/numeric.yaml +1 -0
  11. data/data/kernels/javascript/core/arithmetic.yaml +24 -0
  12. data/data/kernels/javascript/core/coercion.yaml +18 -4
  13. data/data/kernels/ruby/agg/numeric.yaml +2 -1
  14. data/data/kernels/ruby/core/arithmetic.yaml +31 -3
  15. data/data/kernels/ruby/core/coercion.yaml +8 -0
  16. data/docs/CROSS_TARGET_SEMANTICS.md +99 -0
  17. data/docs/FORM_SCHEMA.md +13 -8
  18. data/docs/FUNCTIONS.md +120 -13
  19. data/docs/INPUTS.md +164 -0
  20. data/docs/OUTPUT_SCHEMA.md +12 -8
  21. data/docs/PASSES.md +76 -0
  22. data/docs/PASS_AUDIT.md +179 -0
  23. data/docs/PORTAL.md +39 -0
  24. data/docs/SYNTAX.md +101 -120
  25. data/docs/SYNTAX_NOTES.md +612 -0
  26. data/docs/UNSAT_DETECTION.md +2 -2
  27. data/docs/functions-reference.json +276 -84
  28. data/docs/pairwise-design.md +125 -0
  29. data/docs/superpowers/plans/2026-06-12-pass-conventions-and-dedup.md +1559 -0
  30. data/docs/superpowers/specs/2026-06-12-pass-conventions-and-dedup-design.md +136 -0
  31. data/golden/algebraic_identities/expected/ast.txt +66 -0
  32. data/golden/algebraic_identities/expected/dfir.txt +47 -0
  33. data/golden/algebraic_identities/expected/dfir_optimized.txt +59 -0
  34. data/golden/algebraic_identities/expected/input_plan.txt +7 -0
  35. data/golden/algebraic_identities/expected/loopir.txt +61 -0
  36. data/golden/algebraic_identities/expected/nast.txt +51 -0
  37. data/golden/algebraic_identities/expected/runtime.json +24 -0
  38. data/golden/algebraic_identities/expected/schema_javascript.mjs +89 -0
  39. data/golden/algebraic_identities/expected/schema_ruby.rb +84 -0
  40. data/golden/algebraic_identities/expected/snast.txt +51 -0
  41. data/golden/algebraic_identities/expected/vecir.txt +47 -0
  42. data/golden/algebraic_identities/input.json +6 -0
  43. data/golden/algebraic_identities/schema.kumi +25 -0
  44. data/golden/array_element/expected/loopir.txt +1 -2
  45. data/golden/array_element/expected/runtime.json +5 -0
  46. data/golden/array_element/expected/schema_javascript.mjs +1 -2
  47. data/golden/array_element/expected/schema_ruby.rb +2 -3
  48. data/golden/array_index/expected/runtime.json +54 -0
  49. data/golden/array_index/expected/schema_ruby.rb +1 -1
  50. data/golden/array_operations/{expected.json → expected/runtime.json} +5 -15
  51. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  52. data/golden/cascade_logic/expected/runtime.json +3 -0
  53. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  54. data/golden/cascade_reuse_peephole/expected/ast.txt +193 -0
  55. data/golden/cascade_reuse_peephole/expected/dfir.txt +124 -0
  56. data/golden/cascade_reuse_peephole/expected/dfir_optimized.txt +320 -0
  57. data/golden/cascade_reuse_peephole/expected/input_plan.txt +2 -0
  58. data/golden/cascade_reuse_peephole/expected/loopir.txt +302 -0
  59. data/golden/cascade_reuse_peephole/expected/nast.txt +188 -0
  60. data/golden/cascade_reuse_peephole/expected/runtime.json +8 -0
  61. data/golden/cascade_reuse_peephole/expected/schema_javascript.mjs +335 -0
  62. data/golden/cascade_reuse_peephole/expected/schema_ruby.rb +337 -0
  63. data/golden/cascade_reuse_peephole/expected/snast.txt +188 -0
  64. data/golden/cascade_reuse_peephole/expected/vecir.txt +302 -0
  65. data/golden/cascade_reuse_peephole/input.json +4 -0
  66. data/golden/cascade_reuse_peephole/schema.kumi +31 -0
  67. data/golden/chained_fusion/expected/loopir.txt +5 -13
  68. data/golden/chained_fusion/expected/runtime.json +45 -0
  69. data/golden/chained_fusion/expected/schema_javascript.mjs +5 -13
  70. data/golden/chained_fusion/expected/schema_ruby.rb +6 -14
  71. data/golden/cross_import/expected/ast.txt +21 -0
  72. data/golden/cross_import/expected/dfir.txt +3 -0
  73. data/golden/cross_import/expected/dfir_optimized.txt +8 -0
  74. data/golden/cross_import/expected/input_plan.txt +5 -0
  75. data/golden/cross_import/expected/loopir.txt +14 -0
  76. data/golden/cross_import/expected/nast.txt +7 -0
  77. data/golden/cross_import/expected/runtime.json +10 -0
  78. data/golden/cross_import/expected/schema_javascript.mjs +19 -0
  79. data/golden/cross_import/expected/schema_ruby.rb +19 -0
  80. data/golden/cross_import/expected/snast.txt +7 -0
  81. data/golden/cross_import/expected/vecir.txt +8 -0
  82. data/golden/cross_import/input.json +1 -0
  83. data/golden/cross_import/schema.kumi +15 -0
  84. data/golden/cross_let/expected/ast.txt +62 -0
  85. data/golden/cross_let/expected/dfir.txt +35 -0
  86. data/golden/cross_let/expected/dfir_optimized.txt +51 -0
  87. data/golden/cross_let/expected/input_plan.txt +5 -0
  88. data/golden/cross_let/expected/loopir.txt +100 -0
  89. data/golden/cross_let/expected/nast.txt +46 -0
  90. data/golden/cross_let/expected/runtime.json +61 -0
  91. data/golden/cross_let/expected/schema_javascript.mjs +136 -0
  92. data/golden/cross_let/expected/schema_ruby.rb +123 -0
  93. data/golden/cross_let/expected/snast.txt +46 -0
  94. data/golden/cross_let/expected/vecir.txt +51 -0
  95. data/golden/cross_let/input.json +7 -0
  96. data/golden/cross_let/schema.kumi +25 -0
  97. data/golden/decimal_explicit/expected/dfir.txt +6 -6
  98. data/golden/decimal_explicit/expected/dfir_optimized.txt +6 -6
  99. data/golden/decimal_explicit/expected/loopir.txt +6 -6
  100. data/golden/decimal_explicit/expected/runtime.json +10 -0
  101. data/golden/decimal_explicit/expected/schema_ruby.rb +1 -1
  102. data/golden/decimal_explicit/expected/snast.txt +9 -9
  103. data/golden/decimal_explicit/expected/vecir.txt +6 -6
  104. data/golden/element_arrays/expected/loopir.txt +6 -13
  105. data/golden/element_arrays/expected/runtime.json +117 -0
  106. data/golden/element_arrays/expected/schema_javascript.mjs +7 -14
  107. data/golden/element_arrays/expected/schema_ruby.rb +8 -15
  108. data/golden/empty_and_null_inputs/expected/loopir.txt +4 -9
  109. data/golden/empty_and_null_inputs/expected/runtime.json +8 -0
  110. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +5 -10
  111. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +6 -11
  112. data/golden/example_xpto/expected/runtime.json +4 -0
  113. data/golden/example_xpto/expected/schema_ruby.rb +1 -1
  114. data/golden/function_overload/expected/runtime.json +8 -0
  115. data/golden/function_overload/expected/schema_ruby.rb +1 -1
  116. data/golden/game_of_life/expected/loopir.txt +1 -58
  117. data/golden/game_of_life/expected/runtime.json +418 -0
  118. data/golden/game_of_life/expected/schema_javascript.mjs +1 -58
  119. data/golden/game_of_life/expected/schema_ruby.rb +2 -59
  120. data/golden/hash_keys/expected/runtime.json +20 -0
  121. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  122. data/golden/hash_value/expected/runtime.json +19 -0
  123. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  124. data/golden/hierarchical_complex/expected/loopir.txt +0 -4
  125. data/golden/hierarchical_complex/expected/runtime.json +16 -0
  126. data/golden/hierarchical_complex/expected/schema_javascript.mjs +0 -4
  127. data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -5
  128. data/golden/inline_rename_scope_leak/expected/loopir.txt +1 -5
  129. data/golden/inline_rename_scope_leak/expected/runtime.json +10 -0
  130. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +3 -7
  131. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +4 -8
  132. data/golden/input_reference/expected/dfir.txt +2 -2
  133. data/golden/input_reference/expected/dfir_optimized.txt +2 -2
  134. data/golden/input_reference/expected/loopir.txt +2 -5
  135. data/golden/input_reference/expected/runtime.json +15 -0
  136. data/golden/input_reference/expected/schema_javascript.mjs +3 -6
  137. data/golden/input_reference/expected/schema_ruby.rb +4 -7
  138. data/golden/input_reference/expected/snast.txt +1 -1
  139. data/golden/input_reference/expected/vecir.txt +2 -2
  140. data/golden/interleaved_fusion/expected/loopir.txt +5 -10
  141. data/golden/interleaved_fusion/expected/runtime.json +37 -0
  142. data/golden/interleaved_fusion/expected/schema_javascript.mjs +5 -10
  143. data/golden/interleaved_fusion/expected/schema_ruby.rb +6 -11
  144. data/golden/let_inline/expected/runtime.json +6 -0
  145. data/golden/let_inline/expected/schema_ruby.rb +2 -2
  146. data/golden/loop_fusion/expected/loopir.txt +3 -7
  147. data/golden/loop_fusion/expected/runtime.json +29 -0
  148. data/golden/loop_fusion/expected/schema_javascript.mjs +3 -7
  149. data/golden/loop_fusion/expected/schema_ruby.rb +4 -8
  150. data/golden/min_max_empty_arrays/expected/loopir.txt +5 -12
  151. data/golden/min_max_empty_arrays/expected/runtime.json +16 -0
  152. data/golden/min_max_empty_arrays/expected/schema_javascript.mjs +7 -14
  153. data/golden/min_max_empty_arrays/expected/schema_ruby.rb +10 -17
  154. data/golden/min_reduce_scope/expected/loopir.txt +3 -7
  155. data/golden/min_reduce_scope/expected/runtime.json +11 -0
  156. data/golden/min_reduce_scope/expected/schema_javascript.mjs +4 -8
  157. data/golden/min_reduce_scope/expected/schema_ruby.rb +5 -9
  158. data/golden/mixed_dimensions/expected/loopir.txt +2 -5
  159. data/golden/mixed_dimensions/expected/runtime.json +34 -0
  160. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -6
  161. data/golden/mixed_dimensions/expected/schema_ruby.rb +4 -7
  162. data/golden/mlp_backprop/expected/ast.txt +147 -0
  163. data/golden/mlp_backprop/expected/dfir.txt +99 -0
  164. data/golden/mlp_backprop/expected/dfir_optimized.txt +374 -0
  165. data/golden/mlp_backprop/expected/input_plan.txt +17 -0
  166. data/golden/mlp_backprop/expected/loopir.txt +440 -0
  167. data/golden/mlp_backprop/expected/nast.txt +120 -0
  168. data/golden/mlp_backprop/expected/runtime.json +43 -0
  169. data/golden/mlp_backprop/expected/schema_javascript.mjs +516 -0
  170. data/golden/mlp_backprop/expected/schema_ruby.rb +484 -0
  171. data/golden/mlp_backprop/expected/snast.txt +120 -0
  172. data/golden/mlp_backprop/expected/vecir.txt +374 -0
  173. data/golden/mlp_backprop/input.json +8 -0
  174. data/golden/mlp_backprop/schema.kumi +43 -0
  175. data/golden/multi_loop_reduction/expected/loopir.txt +2 -6
  176. data/golden/multi_loop_reduction/expected/runtime.json +5 -0
  177. data/golden/multi_loop_reduction/expected/schema_javascript.mjs +4 -8
  178. data/golden/multi_loop_reduction/expected/schema_ruby.rb +5 -9
  179. data/golden/multirank_hoisting/expected/loopir.txt +24 -42
  180. data/golden/multirank_hoisting/expected/runtime.json +47 -0
  181. data/golden/multirank_hoisting/expected/schema_javascript.mjs +24 -45
  182. data/golden/multirank_hoisting/expected/schema_ruby.rb +25 -43
  183. data/golden/nested_hash/expected/runtime.json +3 -0
  184. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  185. data/golden/outer_let/expected/ast.txt +106 -0
  186. data/golden/outer_let/expected/dfir.txt +66 -0
  187. data/golden/outer_let/expected/dfir_optimized.txt +145 -0
  188. data/golden/outer_let/expected/input_plan.txt +19 -0
  189. data/golden/outer_let/expected/loopir.txt +166 -0
  190. data/golden/outer_let/expected/nast.txt +78 -0
  191. data/golden/outer_let/expected/runtime.json +89 -0
  192. data/golden/outer_let/expected/schema_javascript.mjs +220 -0
  193. data/golden/outer_let/expected/schema_ruby.rb +201 -0
  194. data/golden/outer_let/expected/snast.txt +78 -0
  195. data/golden/outer_let/expected/vecir.txt +145 -0
  196. data/golden/outer_let/input.json +9 -0
  197. data/golden/outer_let/schema.kumi +32 -0
  198. data/golden/pairwise_cross/expected/ast.txt +62 -0
  199. data/golden/pairwise_cross/expected/dfir.txt +36 -0
  200. data/golden/pairwise_cross/expected/dfir_optimized.txt +50 -0
  201. data/golden/pairwise_cross/expected/input_plan.txt +8 -0
  202. data/golden/pairwise_cross/expected/loopir.txt +84 -0
  203. data/golden/pairwise_cross/expected/nast.txt +46 -0
  204. data/golden/pairwise_cross/expected/runtime.json +80 -0
  205. data/golden/pairwise_cross/expected/schema_javascript.mjs +113 -0
  206. data/golden/pairwise_cross/expected/schema_ruby.rb +104 -0
  207. data/golden/pairwise_cross/expected/snast.txt +46 -0
  208. data/golden/pairwise_cross/expected/vecir.txt +50 -0
  209. data/golden/pairwise_cross/input.json +8 -0
  210. data/golden/pairwise_cross/schema.kumi +18 -0
  211. data/golden/reduction_broadcast/expected/loopir.txt +4 -10
  212. data/golden/reduction_broadcast/expected/runtime.json +14 -0
  213. data/golden/reduction_broadcast/expected/schema_javascript.mjs +4 -10
  214. data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -11
  215. data/golden/roll/expected/loopir.txt +4 -8
  216. data/golden/roll/expected/runtime.json +26 -0
  217. data/golden/roll/expected/schema_javascript.mjs +4 -8
  218. data/golden/roll/expected/schema_ruby.rb +5 -9
  219. data/golden/schema_imports_broadcasting_with_imports/expected/dfir.txt +3 -3
  220. data/golden/schema_imports_broadcasting_with_imports/expected/dfir_optimized.txt +3 -3
  221. data/golden/schema_imports_broadcasting_with_imports/expected/loopir.txt +3 -4
  222. data/golden/schema_imports_broadcasting_with_imports/expected/runtime.json +11 -0
  223. data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +2 -3
  224. data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +3 -4
  225. data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +5 -5
  226. data/golden/schema_imports_broadcasting_with_imports/expected/vecir.txt +3 -3
  227. data/golden/schema_imports_complex_order_calc/expected/dfir.txt +20 -20
  228. data/golden/schema_imports_complex_order_calc/expected/dfir_optimized.txt +60 -60
  229. data/golden/schema_imports_complex_order_calc/expected/loopir.txt +34 -47
  230. data/golden/schema_imports_complex_order_calc/expected/runtime.json +33 -0
  231. data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +16 -29
  232. data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +17 -30
  233. data/golden/schema_imports_complex_order_calc/expected/snast.txt +26 -26
  234. data/golden/schema_imports_complex_order_calc/expected/vecir.txt +60 -60
  235. data/golden/schema_imports_composed_order/expected/dfir.txt +3 -3
  236. data/golden/schema_imports_composed_order/expected/dfir_optimized.txt +6 -6
  237. data/golden/schema_imports_composed_order/expected/loopir.txt +6 -6
  238. data/golden/schema_imports_composed_order/expected/runtime.json +9 -0
  239. data/golden/schema_imports_composed_order/expected/schema_ruby.rb +1 -1
  240. data/golden/schema_imports_composed_order/expected/snast.txt +5 -5
  241. data/golden/schema_imports_composed_order/expected/vecir.txt +6 -6
  242. data/golden/schema_imports_discount_with_tax/expected/dfir.txt +7 -7
  243. data/golden/schema_imports_discount_with_tax/expected/dfir_optimized.txt +10 -10
  244. data/golden/schema_imports_discount_with_tax/expected/loopir.txt +10 -10
  245. data/golden/schema_imports_discount_with_tax/expected/runtime.json +10 -0
  246. data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +1 -1
  247. data/golden/schema_imports_discount_with_tax/expected/snast.txt +11 -11
  248. data/golden/schema_imports_discount_with_tax/expected/vecir.txt +10 -10
  249. data/golden/schema_imports_line_items/expected/dfir.txt +1 -1
  250. data/golden/schema_imports_line_items/expected/dfir_optimized.txt +3 -3
  251. data/golden/schema_imports_line_items/expected/loopir.txt +3 -6
  252. data/golden/schema_imports_line_items/expected/runtime.json +8 -0
  253. data/golden/schema_imports_line_items/expected/schema_javascript.mjs +4 -7
  254. data/golden/schema_imports_line_items/expected/schema_ruby.rb +5 -8
  255. data/golden/schema_imports_line_items/expected/snast.txt +1 -1
  256. data/golden/schema_imports_line_items/expected/vecir.txt +3 -3
  257. data/golden/schema_imports_multiple/expected/dfir.txt +7 -7
  258. data/golden/schema_imports_multiple/expected/dfir_optimized.txt +13 -13
  259. data/golden/schema_imports_multiple/expected/loopir.txt +13 -13
  260. data/golden/schema_imports_multiple/expected/runtime.json +10 -0
  261. data/golden/schema_imports_multiple/expected/schema_ruby.rb +1 -1
  262. data/golden/schema_imports_multiple/expected/snast.txt +11 -11
  263. data/golden/schema_imports_multiple/expected/vecir.txt +13 -13
  264. data/golden/schema_imports_nested_expressions/expected/dfir.txt +4 -4
  265. data/golden/schema_imports_nested_expressions/expected/dfir_optimized.txt +6 -6
  266. data/golden/schema_imports_nested_expressions/expected/loopir.txt +6 -6
  267. data/golden/schema_imports_nested_expressions/expected/runtime.json +8 -0
  268. data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +1 -1
  269. data/golden/schema_imports_nested_expressions/expected/snast.txt +6 -6
  270. data/golden/schema_imports_nested_expressions/expected/vecir.txt +6 -6
  271. data/golden/schema_imports_nested_with_reductions/expected/dfir.txt +6 -6
  272. data/golden/schema_imports_nested_with_reductions/expected/dfir_optimized.txt +15 -15
  273. data/golden/schema_imports_nested_with_reductions/expected/loopir.txt +7 -14
  274. data/golden/schema_imports_nested_with_reductions/expected/runtime.json +12 -0
  275. data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +8 -15
  276. data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +9 -16
  277. data/golden/schema_imports_nested_with_reductions/expected/snast.txt +6 -6
  278. data/golden/schema_imports_nested_with_reductions/expected/vecir.txt +15 -15
  279. data/golden/schema_imports_with_imports/expected/dfir.txt +3 -3
  280. data/golden/schema_imports_with_imports/expected/dfir_optimized.txt +3 -3
  281. data/golden/schema_imports_with_imports/expected/loopir.txt +3 -3
  282. data/golden/schema_imports_with_imports/expected/runtime.json +7 -0
  283. data/golden/schema_imports_with_imports/expected/schema_ruby.rb +1 -1
  284. data/golden/schema_imports_with_imports/expected/snast.txt +5 -5
  285. data/golden/schema_imports_with_imports/expected/vecir.txt +3 -3
  286. data/golden/shift/expected/loopir.txt +4 -8
  287. data/golden/shift/expected/runtime.json +38 -0
  288. data/golden/shift/expected/schema_javascript.mjs +4 -8
  289. data/golden/shift/expected/schema_ruby.rb +5 -9
  290. data/golden/shift_2d/expected/loopir.txt +8 -16
  291. data/golden/shift_2d/expected/runtime.json +146 -0
  292. data/golden/shift_2d/expected/schema_javascript.mjs +8 -16
  293. data/golden/shift_2d/expected/schema_ruby.rb +9 -17
  294. data/golden/simple_math/expected/runtime.json +10 -0
  295. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  296. data/golden/streaming_basics/expected/loopir.txt +0 -3
  297. data/golden/streaming_basics/expected/runtime.json +25 -0
  298. data/golden/streaming_basics/expected/schema_javascript.mjs +3 -6
  299. data/golden/streaming_basics/expected/schema_ruby.rb +4 -7
  300. data/golden/transcendentals/expected/ast.txt +48 -0
  301. data/golden/transcendentals/expected/dfir.txt +31 -0
  302. data/golden/transcendentals/expected/dfir_optimized.txt +34 -0
  303. data/golden/transcendentals/expected/input_plan.txt +5 -0
  304. data/golden/transcendentals/expected/loopir.txt +46 -0
  305. data/golden/transcendentals/expected/nast.txt +34 -0
  306. data/golden/transcendentals/expected/runtime.json +27 -0
  307. data/golden/transcendentals/expected/schema_javascript.mjs +66 -0
  308. data/golden/transcendentals/expected/schema_ruby.rb +63 -0
  309. data/golden/transcendentals/expected/snast.txt +34 -0
  310. data/golden/transcendentals/expected/vecir.txt +34 -0
  311. data/golden/transcendentals/input.json +1 -0
  312. data/golden/transcendentals/schema.kumi +16 -0
  313. data/golden/tuples/expected/dfir.txt +4 -4
  314. data/golden/tuples/expected/runtime.json +12 -0
  315. data/golden/tuples/expected/schema_ruby.rb +1 -1
  316. data/golden/tuples_and_arrays/expected/dfir.txt +1 -1
  317. data/golden/tuples_and_arrays/expected/loopir.txt +0 -1
  318. data/golden/tuples_and_arrays/expected/runtime.json +13 -0
  319. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +1 -2
  320. data/golden/tuples_and_arrays/expected/schema_ruby.rb +2 -3
  321. data/golden/type_promotion/expected/ast.txt +75 -0
  322. data/golden/type_promotion/expected/dfir.txt +38 -0
  323. data/golden/type_promotion/expected/dfir_optimized.txt +51 -0
  324. data/golden/type_promotion/expected/input_plan.txt +9 -0
  325. data/golden/type_promotion/expected/loopir.txt +57 -0
  326. data/golden/type_promotion/expected/nast.txt +57 -0
  327. data/golden/type_promotion/expected/runtime.json +23 -0
  328. data/golden/type_promotion/expected/schema_javascript.mjs +90 -0
  329. data/golden/type_promotion/expected/schema_ruby.rb +89 -0
  330. data/golden/type_promotion/expected/snast.txt +57 -0
  331. data/golden/type_promotion/expected/vecir.txt +51 -0
  332. data/golden/type_promotion/input.json +11 -0
  333. data/golden/type_promotion/schema.kumi +30 -0
  334. data/golden/us_tax_2024/expected/dfir.txt +6 -6
  335. data/golden/us_tax_2024/expected/loopir.txt +108 -217
  336. data/golden/us_tax_2024/expected/runtime.json +423 -0
  337. data/golden/us_tax_2024/expected/schema_javascript.mjs +108 -235
  338. data/golden/us_tax_2024/expected/schema_ruby.rb +109 -218
  339. data/golden/vector_make_object/expected/schema_ruby.rb +1 -1
  340. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  341. data/lib/kumi/analyzer.rb +29 -34
  342. data/lib/kumi/configuration.rb +31 -0
  343. data/lib/kumi/core/analyzer/binder.rb +2 -2
  344. data/lib/kumi/core/analyzer/macro_expander.rb +3 -3
  345. data/lib/kumi/core/analyzer/pass_failure.rb +1 -1
  346. data/lib/kumi/core/analyzer/pass_manager.rb +211 -100
  347. data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +44 -15
  348. data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +6 -20
  349. data/lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb +252 -14
  350. data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb +6 -3
  351. data/lib/kumi/core/analyzer/passes/codegen/loop_js_pass.rb +5 -1
  352. data/lib/kumi/core/analyzer/passes/codegen/loop_ruby_pass.rb +3 -0
  353. data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +3 -0
  354. data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +1 -1
  355. data/lib/kumi/core/analyzer/passes/declaration_validator_pass.rb +83 -0
  356. data/lib/kumi/core/analyzer/passes/{dependency_resolver.rb → dependency_resolver_pass.rb} +8 -6
  357. data/lib/kumi/core/analyzer/passes/df_validate_pass.rb +3 -13
  358. data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +7 -2
  359. data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +4 -28
  360. data/lib/kumi/core/analyzer/passes/{input_collector.rb → input_collector_pass.rb} +30 -3
  361. data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +4 -1
  362. data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +4 -2
  363. data/lib/kumi/core/analyzer/passes/ir_lower_pass.rb +35 -0
  364. data/lib/kumi/core/analyzer/passes/ir_validate_pass.rb +43 -0
  365. data/lib/kumi/core/analyzer/passes/{load_input_cse.rb → load_input_cse_pass.rb} +1 -1
  366. data/lib/kumi/core/analyzer/passes/loop/lower_pass.rb +23 -10
  367. data/lib/kumi/core/analyzer/passes/loop_validate_pass.rb +2 -10
  368. data/lib/kumi/core/analyzer/passes/lower_to_dfir_pass.rb +4 -2
  369. data/lib/kumi/core/analyzer/passes/{name_indexer.rb → name_indexer_pass.rb} +3 -7
  370. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +174 -23
  371. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +19 -3
  372. data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +3 -0
  373. data/lib/kumi/core/analyzer/passes/pass_base.rb +78 -5
  374. data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +7 -1
  375. data/lib/kumi/core/analyzer/passes/{semantic_constraint_validator.rb → semantic_constraint_validator_pass.rb} +7 -14
  376. data/lib/kumi/core/analyzer/passes/snast_pass.rb +22 -48
  377. data/lib/kumi/core/analyzer/passes/{toposorter.rb → toposorter_pass.rb} +4 -5
  378. data/lib/kumi/core/analyzer/passes/{unsat_detector.rb → unsat_detector_pass.rb} +4 -15
  379. data/lib/kumi/core/analyzer/passes/vec/lower_pass.rb +6 -8
  380. data/lib/kumi/core/analyzer/passes/vec_validate_pass.rb +2 -10
  381. data/lib/kumi/core/analyzer/structs/input_meta.rb +1 -1
  382. data/lib/kumi/core/compiler/access_builder.rb +1 -1
  383. data/lib/kumi/core/compiler/access_codegen.rb +1 -1
  384. data/lib/kumi/core/compiler/access_emit/base.rb +1 -1
  385. data/lib/kumi/core/compiler/access_planner_v2.rb +2 -2
  386. data/lib/kumi/core/compiler/accessors/each_indexed_accessor.rb +1 -1
  387. data/lib/kumi/core/compiler/accessors/materialize_accessor.rb +1 -1
  388. data/lib/kumi/core/compiler/accessors/ravel_accessor.rb +1 -1
  389. data/lib/kumi/core/compiler/accessors/read_accessor.rb +1 -1
  390. data/lib/kumi/core/error_reporter.rb +6 -11
  391. data/lib/kumi/core/errors.rb +37 -11
  392. data/lib/kumi/core/expression_renderer.rb +97 -0
  393. data/lib/kumi/core/functions/overload_resolver.rb +79 -149
  394. data/lib/kumi/core/ir/execution_engine/combinators.rb +16 -10
  395. data/lib/kumi/core/nast.rb +24 -0
  396. data/lib/kumi/core/ruby_parser/build_context.rb +6 -1
  397. data/lib/kumi/core/ruby_parser/dsl.rb +12 -2
  398. data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +14 -12
  399. data/lib/kumi/core/ruby_parser/guard_rails.rb +15 -1
  400. data/lib/kumi/core/ruby_parser/input_builder.rb +55 -48
  401. data/lib/kumi/core/ruby_parser/parser.rb +26 -18
  402. data/lib/kumi/core/ruby_parser/schema_builder.rb +60 -15
  403. data/lib/kumi/core/ruby_parser/sugar.rb +0 -86
  404. data/lib/kumi/core/types/dtype_rule.rb +76 -0
  405. data/lib/kumi/core/types/normalizer.rb +2 -2
  406. data/lib/kumi/core/types/profile.rb +82 -0
  407. data/lib/kumi/core/types/registry.rb +87 -0
  408. data/lib/kumi/core/types/system.rb +96 -0
  409. data/lib/kumi/core/types/value_objects.rb +14 -13
  410. data/lib/kumi/core/types.rb +41 -34
  411. data/lib/kumi/dev/golden_runtime.rb +163 -0
  412. data/lib/kumi/dev/golden_v2.rb +30 -5
  413. data/lib/kumi/dev/pretty_printer.rb +40 -73
  414. data/lib/kumi/frontends/ruby.rb +52 -12
  415. data/lib/kumi/frontends/source_frame.rb +71 -0
  416. data/lib/kumi/frontends/text.rb +4 -48
  417. data/lib/kumi/function_registry/loader.rb +101 -0
  418. data/lib/kumi/function_registry.rb +150 -0
  419. data/lib/kumi/ir/base/block.rb +11 -2
  420. data/lib/kumi/ir/base/builder.rb +1 -1
  421. data/lib/kumi/ir/base/function.rb +2 -4
  422. data/lib/kumi/ir/base/instruction.rb +10 -23
  423. data/lib/kumi/ir/base/module.rb +5 -4
  424. data/lib/kumi/ir/buf/lower.rb +1 -2
  425. data/lib/kumi/ir/df/access_contract.rb +3 -5
  426. data/lib/kumi/ir/df/import_inliner.rb +2 -5
  427. data/lib/kumi/ir/df/lower.rb +72 -51
  428. data/lib/kumi/ir/df/ops/axis_cross.rb +34 -0
  429. data/lib/kumi/ir/df/ops/axis_outer.rb +35 -0
  430. data/lib/kumi/ir/df/passes/broadcast_simplify.rb +1 -2
  431. data/lib/kumi/ir/df/passes/cse.rb +8 -3
  432. data/lib/kumi/ir/df/passes/decl_inlining.rb +5 -26
  433. data/lib/kumi/ir/df/passes/import_inlining.rb +42 -36
  434. data/lib/kumi/ir/df/passes/load_dedup.rb +9 -4
  435. data/lib/kumi/ir/df/passes/stencil_cse.rb +2 -5
  436. data/lib/kumi/ir/df/passes/support/instruction_cloner.rb +41 -14
  437. data/lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb +8 -3
  438. data/lib/kumi/ir/df/passes/tuple_to_object.rb +1 -2
  439. data/lib/kumi/ir/df/validator.rb +3 -3
  440. data/lib/kumi/ir/df.rb +8 -0
  441. data/lib/kumi/ir/loop/lower.rb +231 -37
  442. data/lib/kumi/ir/loop/passes/array_contraction.rb +124 -0
  443. data/lib/kumi/ir/loop/passes/copy_cleanup.rb +112 -0
  444. data/lib/kumi/ir/loop/passes/loop_fusion.rb +125 -0
  445. data/lib/kumi/ir/loop/passes/support/structure.rb +100 -0
  446. data/lib/kumi/ir/loop/passes.rb +14 -0
  447. data/lib/kumi/ir/loop/pipeline.rb +9 -1
  448. data/lib/kumi/ir/loop/validator.rb +29 -4
  449. data/lib/kumi/ir/loop.rb +1 -0
  450. data/lib/kumi/ir/passes/register_generator.rb +32 -0
  451. data/lib/kumi/ir/testing/snast_factory.rb +2 -4
  452. data/lib/kumi/ir/vec/lower.rb +17 -7
  453. data/lib/kumi/ir/vec/ops/core_ops.rb +41 -0
  454. data/lib/kumi/ir/vec/passes/axis_canonicalization.rb +1 -2
  455. data/lib/kumi/ir/vec/passes/constant_propagation.rb +75 -47
  456. data/lib/kumi/ir/vec/passes/dce.rb +2 -5
  457. data/lib/kumi/ir/vec/passes/gvn.rb +8 -3
  458. data/lib/kumi/ir/vec/passes/peephole_simplify.rb +30 -13
  459. data/lib/kumi/ir/vec/passes/stencil_detection.rb +1 -2
  460. data/lib/kumi/ir/vec/passes/support/algebraic_identities.rb +70 -0
  461. data/lib/kumi/ir/vec/passes/support/instruction_cloner.rb +17 -3
  462. data/lib/kumi/ir/vec/validator.rb +26 -6
  463. data/lib/kumi/schema.rb +14 -10
  464. data/lib/kumi/schema_metadata/printer.rb +111 -0
  465. data/lib/kumi/schema_metadata.rb +289 -0
  466. data/lib/kumi/syntax/location.rb +14 -1
  467. data/lib/kumi/syntax/root.rb +35 -3
  468. data/lib/kumi/test_shared_schemas/pairwise.rb +27 -0
  469. data/lib/kumi/version.rb +1 -1
  470. data/lib/kumi.rb +3 -5
  471. data/tasks/docs_portal.rake +135 -0
  472. metadata +203 -81
  473. data/golden/array_element/expected.json +0 -5
  474. data/golden/array_index/expected.json +0 -5
  475. data/golden/cascade_logic/expected.json +0 -5
  476. data/golden/chained_fusion/expected.json +0 -45
  477. data/golden/decimal_explicit/expected.json +0 -1
  478. data/golden/element_arrays/expected.json +0 -55
  479. data/golden/empty_and_null_inputs/expected.json +0 -8
  480. data/golden/example_xpto/expected.json +0 -4
  481. data/golden/game_of_life/expected.json +0 -3
  482. data/golden/hash_keys/expected.json +0 -20
  483. data/golden/hash_value/expected.json +0 -19
  484. data/golden/hierarchical_complex/expected.json +0 -34
  485. data/golden/inline_rename_scope_leak/expected.json +0 -7
  486. data/golden/input_reference/expected.json +0 -7
  487. data/golden/interleaved_fusion/expected.json +0 -37
  488. data/golden/let_inline/expected.json +0 -1
  489. data/golden/loop_fusion/expected.json +0 -30
  490. data/golden/min_max_empty_arrays/expected.json +0 -7
  491. data/golden/min_reduce_scope/expected.json +0 -9
  492. data/golden/mixed_dimensions/expected.json +0 -6
  493. data/golden/multi_loop_reduction/expected.json +0 -5
  494. data/golden/multirank_hoisting/expected.json +0 -15
  495. data/golden/nested_hash/expected.json +0 -3
  496. data/golden/reduction_broadcast/expected.json +0 -25
  497. data/golden/roll/expected.json +0 -6
  498. data/golden/schema_imports_broadcasting_with_imports/expected.json +0 -4
  499. data/golden/schema_imports_complex_order_calc/expected.json +0 -12
  500. data/golden/schema_imports_composed_order/expected.json +0 -6
  501. data/golden/schema_imports_discount_with_tax/expected.json +0 -7
  502. data/golden/schema_imports_line_items/expected.json +0 -5
  503. data/golden/schema_imports_multiple/expected.json +0 -7
  504. data/golden/schema_imports_nested_expressions/expected.json +0 -5
  505. data/golden/schema_imports_nested_with_reductions/expected.json +0 -6
  506. data/golden/schema_imports_with_imports/expected.json +0 -4
  507. data/golden/shift/expected.json +0 -8
  508. data/golden/shift_2d/expected.json +0 -15
  509. data/golden/simple_math/expected.json +0 -1
  510. data/golden/streaming_basics/expected.json +0 -10
  511. data/golden/tuples/expected.json +0 -7
  512. data/golden/tuples_and_arrays/expected.json +0 -18
  513. data/golden/us_tax_2024/expected.json +0 -120
  514. data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +0 -130
  515. data/lib/kumi/core/analyzer/passes/declaration_validator.rb +0 -45
  516. data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +0 -197
  517. data/lib/kumi/core/compiler/access_planner.rb +0 -258
  518. data/lib/kumi/core/functions/function_spec.rb +0 -17
  519. data/lib/kumi/core/functions/loader.rb +0 -63
  520. data/lib/kumi/core/functions/type_categories.rb +0 -44
  521. data/lib/kumi/core/functions/type_error_reporter.rb +0 -116
  522. data/lib/kumi/core/functions/type_rules.rb +0 -228
  523. data/lib/kumi/core/irv2/builder.rb +0 -48
  524. data/lib/kumi/core/irv2/declaration.rb +0 -28
  525. data/lib/kumi/core/irv2/module.rb +0 -108
  526. data/lib/kumi/core/irv2/value.rb +0 -28
  527. data/lib/kumi/core/types/validator.rb +0 -33
  528. data/lib/kumi/dev/codegen.rb +0 -194
  529. data/lib/kumi/dev/golden/generator.rb +0 -109
  530. data/lib/kumi/dev/golden/reporter.rb +0 -169
  531. data/lib/kumi/dev/golden/representation.rb +0 -40
  532. data/lib/kumi/dev/golden/result.rb +0 -106
  533. data/lib/kumi/dev/golden/runtime_test.rb +0 -131
  534. data/lib/kumi/dev/golden/suite.rb +0 -147
  535. data/lib/kumi/dev/golden/value_normalizer.rb +0 -78
  536. data/lib/kumi/dev/golden/verifier.rb +0 -76
  537. data/lib/kumi/dev/golden.rb +0 -82
  538. data/lib/kumi/dev/golden_schema_wrapper.rb +0 -116
  539. data/lib/kumi/dev/printer/irv2_formatter.rb +0 -163
  540. data/lib/kumi/kernel_registry.rb +0 -59
  541. data/lib/kumi/pack/builder.rb +0 -229
  542. data/lib/kumi/pack.rb +0 -15
  543. data/lib/kumi/registry_v2/loader.rb +0 -170
  544. data/lib/kumi/registry_v2.rb +0 -135
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,931 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 300`
3
+ # on 2026-06-18 07:13:21 UTC using RuboCop version 1.81.6.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 12
10
+ # This cop supports safe autocorrection (--autocorrect).
11
+ # Configuration parameters: EnforcedStyle.
12
+ # SupportedStyles: leading, trailing
13
+ Layout/LineContinuationLeadingSpace:
14
+ Exclude:
15
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
16
+ - 'lib/kumi/core/ruby_parser/input_builder.rb'
17
+
18
+ # Offense count: 9
19
+ # This cop supports safe autocorrection (--autocorrect).
20
+ # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
21
+ # URISchemes: http, https
22
+ Layout/LineLength:
23
+ Exclude:
24
+ - 'lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb'
25
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
26
+ - 'lib/kumi/dev/profile_aggregator.rb'
27
+ - 'lib/kumi/ir/df/passes/support/instruction_cloner.rb'
28
+ - 'spec/kumi/ir/df/lower_spec.rb'
29
+
30
+ # Offense count: 2
31
+ # This cop supports safe autocorrection (--autocorrect).
32
+ Lint/AmbiguousOperatorPrecedence:
33
+ Exclude:
34
+ - 'spec/integration/outer_axis_spec.rb'
35
+
36
+ # Offense count: 1
37
+ # This cop supports unsafe autocorrection (--autocorrect-all).
38
+ # Configuration parameters: RequireParenthesesForMethodChains.
39
+ Lint/AmbiguousRange:
40
+ Exclude:
41
+ - 'spec/support/debug_printers.rb'
42
+
43
+ # Offense count: 10
44
+ # Configuration parameters: AllowedMethods.
45
+ # AllowedMethods: enums
46
+ Lint/ConstantDefinitionInBlock:
47
+ Exclude:
48
+ - 'spec/integration/element_access_mode_spec.rb'
49
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
50
+ - 'spec/kumi/ir/df/passes/import_inlining_spec.rb'
51
+ - 'spec/kumi/parser/guard_rails_spec.rb'
52
+ - 'spec/kumi/parser/hash_spec.rb'
53
+ - 'spec/kumi/parser_imports_spec.rb'
54
+
55
+ # Offense count: 16
56
+ # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
57
+ Lint/DuplicateBranch:
58
+ Exclude:
59
+ - 'lib/kumi/core/analyzer/debug.rb'
60
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb'
61
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb'
62
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
63
+ - 'lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb'
64
+ - 'lib/kumi/core/analyzer/passes/semantic_constraint_validator_pass.rb'
65
+ - 'lib/kumi/core/analyzer/passes/unsat_detector_pass.rb'
66
+ - 'lib/kumi/core/compiler/accessors/read_accessor.rb'
67
+ - 'lib/kumi/core/json_schema/generator.rb'
68
+ - 'lib/kumi/dev/ir.rb'
69
+ - 'lib/kumi/dev/profile_aggregator.rb'
70
+ - 'lib/kumi/dev/profile_runner.rb'
71
+ - 'lib/kumi/pack/builder.rb'
72
+ - 'spec/support/error_inspector.rb'
73
+
74
+ # Offense count: 1
75
+ Lint/DuplicateMethods:
76
+ Exclude:
77
+ - 'lib/kumi/core/nast.rb'
78
+
79
+ # Offense count: 1
80
+ # Configuration parameters: AllowComments, AllowEmptyLambdas.
81
+ Lint/EmptyBlock:
82
+ Exclude:
83
+ - 'spec/kumi/schema_spec.rb'
84
+
85
+ # Offense count: 1
86
+ # Configuration parameters: AllowComments.
87
+ Lint/EmptyClass:
88
+ Exclude:
89
+ - 'spec/kumi/parser_imports_spec.rb'
90
+
91
+ # Offense count: 1
92
+ Lint/FloatComparison:
93
+ Exclude:
94
+ - 'spec/kumi/sugar_literal_lifting_spec.rb'
95
+
96
+ # Offense count: 4
97
+ Lint/HashCompareByIdentity:
98
+ Exclude:
99
+ - 'lib/kumi/ir/df/lower.rb'
100
+ - 'lib/kumi/ir/loop/lower.rb'
101
+
102
+ # Offense count: 1
103
+ Lint/IneffectiveAccessModifier:
104
+ Exclude:
105
+ - 'lib/kumi/dev/ir.rb'
106
+
107
+ # Offense count: 4
108
+ # Configuration parameters: AllowedParentClasses.
109
+ Lint/MissingSuper:
110
+ Exclude:
111
+ - 'lib/kumi/core/types/value_objects.rb'
112
+ - 'lib/kumi/ir/df/passes/import_inlining.rb'
113
+
114
+ # Offense count: 2
115
+ # This cop supports unsafe autocorrection (--autocorrect-all).
116
+ Lint/NonAtomicFileOperation:
117
+ Exclude:
118
+ - 'spec/kumi/core/analyzer/checkpoint_spec.rb'
119
+ - 'spec/kumi/frontends_spec.rb'
120
+
121
+ # Offense count: 2
122
+ # This cop supports unsafe autocorrection (--autocorrect-all).
123
+ # Configuration parameters: AllowedMethods, InferNonNilReceiver, AdditionalNilMethods.
124
+ # AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal?
125
+ # AdditionalNilMethods: present?, blank?, try, try!
126
+ Lint/RedundantSafeNavigation:
127
+ Exclude:
128
+ - 'lib/kumi/core/analyzer/passes/unsat_detector_pass.rb'
129
+ - 'lib/kumi/ir/loop/lower.rb'
130
+
131
+ # Offense count: 2
132
+ Lint/StructNewOverride:
133
+ Exclude:
134
+ - 'lib/kumi/core/analyzer/structs/access_plan.rb'
135
+ - 'lib/kumi/syntax/root.rb'
136
+
137
+ # Offense count: 1
138
+ # Configuration parameters: AllowComments, AllowNil.
139
+ Lint/SuppressedException:
140
+ Exclude:
141
+ - 'spec/kumi/parser/guard_rails_spec.rb'
142
+
143
+ # Offense count: 1
144
+ # Configuration parameters: AllowKeywordBlockArguments.
145
+ Lint/UnderscorePrefixedVariableName:
146
+ Exclude:
147
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
148
+
149
+ # Offense count: 14
150
+ # This cop supports safe autocorrection (--autocorrect).
151
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
152
+ # NotImplementedExceptions: NotImplementedError
153
+ Lint/UnusedMethodArgument:
154
+ Exclude:
155
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb'
156
+ - 'lib/kumi/ir/df/passes/broadcast_simplify.rb'
157
+ - 'lib/kumi/ir/df/passes/cse.rb'
158
+ - 'lib/kumi/ir/df/passes/decl_inlining.rb'
159
+ - 'lib/kumi/ir/df/passes/load_dedup.rb'
160
+ - 'lib/kumi/ir/df/passes/stencil_cse.rb'
161
+ - 'lib/kumi/ir/df/passes/tuple_to_object.rb'
162
+ - 'lib/kumi/ir/vec.rb'
163
+ - 'lib/kumi/ir/vec/passes/axis_canonicalization.rb'
164
+ - 'lib/kumi/ir/vec/passes/constant_propagation.rb'
165
+ - 'lib/kumi/ir/vec/passes/dce.rb'
166
+ - 'lib/kumi/ir/vec/passes/gvn.rb'
167
+ - 'lib/kumi/ir/vec/passes/peephole_simplify.rb'
168
+ - 'lib/kumi/ir/vec/passes/stencil_detection.rb'
169
+
170
+ # Offense count: 1
171
+ Lint/UselessRescue:
172
+ Exclude:
173
+ - 'lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb'
174
+
175
+ # Offense count: 79
176
+ # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
177
+ Metrics/AbcSize:
178
+ Exclude:
179
+ - 'lib/kumi/analyzer.rb'
180
+ - 'lib/kumi/core/analyzer/binder.rb'
181
+ - 'lib/kumi/core/analyzer/checkpoint.rb'
182
+ - 'lib/kumi/core/analyzer/debug.rb'
183
+ - 'lib/kumi/core/analyzer/folder.rb'
184
+ - 'lib/kumi/core/analyzer/pass_manager.rb'
185
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
186
+ - 'lib/kumi/core/compiler/access_emit/each_indexed.rb'
187
+ - 'lib/kumi/core/compiler/access_emit/materialize.rb'
188
+ - 'lib/kumi/core/compiler/access_emit/ravel.rb'
189
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
190
+ - 'lib/kumi/core/compiler/accessors/base.rb'
191
+ - 'lib/kumi/core/compiler/accessors/each_indexed_accessor.rb'
192
+ - 'lib/kumi/core/compiler/accessors/materialize_accessor.rb'
193
+ - 'lib/kumi/core/compiler/accessors/ravel_accessor.rb'
194
+ - 'lib/kumi/core/expression_renderer.rb'
195
+ - 'lib/kumi/core/functions/overload_resolver.rb'
196
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
197
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
198
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
199
+ - 'lib/kumi/core/irv2/module.rb'
200
+ - 'lib/kumi/core/ruby_parser/sugar.rb'
201
+ - 'lib/kumi/core/types/inference.rb'
202
+ - 'lib/kumi/core/types/normalizer.rb'
203
+ - 'lib/kumi/dev/golden_v2.rb'
204
+ - 'lib/kumi/dev/ir.rb'
205
+ - 'lib/kumi/dev/parse.rb'
206
+ - 'lib/kumi/dev/pretty_printer.rb'
207
+ - 'lib/kumi/dev/printer/irv2_formatter.rb'
208
+ - 'lib/kumi/dev/profile_aggregator.rb'
209
+ - 'lib/kumi/dev/profile_runner.rb'
210
+ - 'lib/kumi/dev/runner.rb'
211
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
212
+ - 'lib/kumi/function_registry/loader.rb'
213
+ - 'lib/kumi/pack/builder.rb'
214
+ - 'lib/kumi/schema.rb'
215
+ - 'lib/kumi/schema_metadata.rb'
216
+ - 'lib/kumi/schema_metadata/printer.rb'
217
+ - 'lib/kumi/support/ir_render.rb'
218
+ - 'lib/kumi/support/nast_printer.rb'
219
+ - 'lib/kumi/support/s_expression_printer.rb'
220
+ - 'lib/kumi/support/snast_printer.rb'
221
+ - 'lib/kumi/syntax/root.rb'
222
+
223
+ # Offense count: 19
224
+ # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
225
+ # AllowedMethods: refine
226
+ Metrics/BlockLength:
227
+ Exclude:
228
+ - 'lib/kumi/core/analyzer/binder.rb'
229
+ - 'lib/kumi/core/analyzer/passes/import_analysis_pass.rb'
230
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
231
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
232
+ - 'lib/kumi/core/compiler/accessors/each_indexed_accessor.rb'
233
+ - 'lib/kumi/core/compiler/accessors/materialize_accessor.rb'
234
+ - 'lib/kumi/core/compiler/accessors/ravel_accessor.rb'
235
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
236
+ - 'lib/kumi/core/ruby_parser/dsl_cascade_builder.rb'
237
+ - 'lib/kumi/core/ruby_parser/sugar.rb'
238
+ - 'lib/kumi/ir/df/passes/import_inlining.rb'
239
+ - 'lib/kumi/ir/df/passes/load_dedup.rb'
240
+ - 'lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb'
241
+ - 'lib/kumi/ir/loop/lower.rb'
242
+
243
+ # Offense count: 1
244
+ # Configuration parameters: CountBlocks, CountModifierForms, Max.
245
+ Metrics/BlockNesting:
246
+ Exclude:
247
+ - 'lib/kumi/core/compiler/accessors/materialize_accessor.rb'
248
+
249
+ # Offense count: 32
250
+ # Configuration parameters: CountComments, Max, CountAsOne.
251
+ Metrics/ClassLength:
252
+ Exclude:
253
+ - 'lib/kumi/core/analyzer/debug.rb'
254
+ - 'lib/kumi/core/analyzer/pass_manager.rb'
255
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
256
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb'
257
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb'
258
+ - 'lib/kumi/core/analyzer/passes/contract_checker_pass.rb'
259
+ - 'lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb'
260
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
261
+ - 'lib/kumi/core/analyzer/passes/join_reduce_planning_pass.rb'
262
+ - 'lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb'
263
+ - 'lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb'
264
+ - 'lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb'
265
+ - 'lib/kumi/core/analyzer/passes/snast_pass.rb'
266
+ - 'lib/kumi/core/analyzer/passes/unsat_detector_pass.rb'
267
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
268
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
269
+ - 'lib/kumi/core/ruby_parser/dsl_cascade_builder.rb'
270
+ - 'lib/kumi/core/ruby_parser/input_builder.rb'
271
+ - 'lib/kumi/core/ruby_parser/schema_builder.rb'
272
+ - 'lib/kumi/dev/golden_v2.rb'
273
+ - 'lib/kumi/dev/printer/irv2_formatter.rb'
274
+ - 'lib/kumi/dev/profile_aggregator.rb'
275
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
276
+ - 'lib/kumi/ir/base/instruction.rb'
277
+ - 'lib/kumi/ir/df/lower.rb'
278
+ - 'lib/kumi/ir/df/passes/import_inlining.rb'
279
+ - 'lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb'
280
+ - 'lib/kumi/ir/loop/lower.rb'
281
+ - 'lib/kumi/ir/vec/lower.rb'
282
+ - 'lib/kumi/schema_metadata.rb'
283
+ - 'lib/kumi/support/s_expression_printer.rb'
284
+ - 'spec/support/debug_printers.rb'
285
+
286
+ # Offense count: 39
287
+ # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
288
+ Metrics/CyclomaticComplexity:
289
+ Exclude:
290
+ - 'lib/kumi/core/analyzer/binder.rb'
291
+ - 'lib/kumi/core/analyzer/debug.rb'
292
+ - 'lib/kumi/core/analyzer/pass_manager.rb'
293
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
294
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
295
+ - 'lib/kumi/core/compiler/accessors/each_indexed_accessor.rb'
296
+ - 'lib/kumi/core/compiler/accessors/materialize_accessor.rb'
297
+ - 'lib/kumi/core/compiler/accessors/ravel_accessor.rb'
298
+ - 'lib/kumi/core/expression_renderer.rb'
299
+ - 'lib/kumi/core/input/type_matcher.rb'
300
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
301
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
302
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
303
+ - 'lib/kumi/core/irv2/module.rb'
304
+ - 'lib/kumi/core/types/inference.rb'
305
+ - 'lib/kumi/core/types/normalizer.rb'
306
+ - 'lib/kumi/dev/parse.rb'
307
+ - 'lib/kumi/dev/profile_aggregator.rb'
308
+ - 'lib/kumi/dev/profile_runner.rb'
309
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
310
+ - 'lib/kumi/function_registry/loader.rb'
311
+ - 'lib/kumi/pack/builder.rb'
312
+ - 'lib/kumi/schema_metadata.rb'
313
+ - 'lib/kumi/support/nast_printer.rb'
314
+ - 'lib/kumi/support/s_expression_printer.rb'
315
+ - 'lib/kumi/support/snast_printer.rb'
316
+ - 'spec/support/debug_printers.rb'
317
+
318
+ # Offense count: 32
319
+ # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
320
+ Metrics/MethodLength:
321
+ Exclude:
322
+ - 'lib/kumi/core/analyzer/binder.rb'
323
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
324
+ - 'lib/kumi/core/compiler/access_emit/each_indexed.rb'
325
+ - 'lib/kumi/core/compiler/access_emit/materialize.rb'
326
+ - 'lib/kumi/core/compiler/access_emit/ravel.rb'
327
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
328
+ - 'lib/kumi/core/compiler/accessors/each_indexed_accessor.rb'
329
+ - 'lib/kumi/core/compiler/accessors/materialize_accessor.rb'
330
+ - 'lib/kumi/core/compiler/accessors/ravel_accessor.rb'
331
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
332
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
333
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
334
+ - 'lib/kumi/core/irv2/module.rb'
335
+ - 'lib/kumi/core/ruby_parser/dsl_cascade_builder.rb'
336
+ - 'lib/kumi/core/ruby_parser/sugar.rb'
337
+ - 'lib/kumi/core/types/inference.rb'
338
+ - 'lib/kumi/core/types/normalizer.rb'
339
+ - 'lib/kumi/dev/golden_v2.rb'
340
+ - 'lib/kumi/dev/parse.rb'
341
+ - 'lib/kumi/dev/profile_aggregator.rb'
342
+ - 'lib/kumi/dev/profile_runner.rb'
343
+ - 'lib/kumi/dev/runner.rb'
344
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
345
+ - 'lib/kumi/schema.rb'
346
+ - 'lib/kumi/support/nast_printer.rb'
347
+ - 'lib/kumi/support/snast_printer.rb'
348
+
349
+ # Offense count: 10
350
+ # Configuration parameters: CountComments, Max, CountAsOne.
351
+ Metrics/ModuleLength:
352
+ Exclude:
353
+ - 'lib/kumi/core/analyzer/debug.rb'
354
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
355
+ - 'lib/kumi/core/export/node_builders.rb'
356
+ - 'lib/kumi/core/export/node_serializers.rb'
357
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
358
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
359
+ - 'lib/kumi/dev/pretty_printer.rb'
360
+ - 'lib/kumi/dev/profile_runner.rb'
361
+ - 'lib/kumi/pack/builder.rb'
362
+ - 'spec/support/debug_printers.rb'
363
+
364
+ # Offense count: 32
365
+ # Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters.
366
+ Metrics/ParameterLists:
367
+ Exclude:
368
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
369
+ - 'lib/kumi/core/analyzer/passes/dependency_resolver_pass.rb'
370
+ - 'lib/kumi/core/analyzer/structs/access_plan.rb'
371
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
372
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
373
+ - 'lib/kumi/ir/df.rb'
374
+ - 'lib/kumi/ir/df/ops/node.rb'
375
+ - 'lib/kumi/ir/loop/builder.rb'
376
+ - 'lib/kumi/ir/loop/ops/node.rb'
377
+ - 'lib/kumi/ir/testing/snast_factory.rb'
378
+ - 'lib/kumi/ir/vec.rb'
379
+ - 'lib/kumi/ir/vec/ops/node.rb'
380
+ - 'lib/kumi/ir/vec/passes/support/instruction_cloner.rb'
381
+ - 'lib/kumi/pack/builder.rb'
382
+
383
+ # Offense count: 30
384
+ # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
385
+ Metrics/PerceivedComplexity:
386
+ Exclude:
387
+ - 'lib/kumi/core/analyzer/binder.rb'
388
+ - 'lib/kumi/core/analyzer/debug.rb'
389
+ - 'lib/kumi/core/analyzer/pass_manager.rb'
390
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
391
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'
392
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
393
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
394
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
395
+ - 'lib/kumi/dev/parse.rb'
396
+ - 'lib/kumi/dev/profile_aggregator.rb'
397
+ - 'lib/kumi/dev/profile_runner.rb'
398
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
399
+ - 'lib/kumi/pack/builder.rb'
400
+ - 'lib/kumi/schema_metadata.rb'
401
+ - 'lib/kumi/support/nast_printer.rb'
402
+ - 'lib/kumi/support/s_expression_printer.rb'
403
+ - 'lib/kumi/support/snast_printer.rb'
404
+
405
+ # Offense count: 2
406
+ Naming/AccessorMethodName:
407
+ Exclude:
408
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
409
+ - 'lib/kumi/ir/base/builder.rb'
410
+
411
+ # Offense count: 14
412
+ # Configuration parameters: EnforcedStyle, AllowedPatterns, ForbiddenIdentifiers, ForbiddenPatterns.
413
+ # SupportedStyles: snake_case, camelCase
414
+ # ForbiddenIdentifiers: __id__, __send__
415
+ Naming/MethodName:
416
+ Exclude:
417
+ - 'lib/kumi/core/ir.rb'
418
+
419
+ # Offense count: 134
420
+ # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
421
+ # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
422
+ Naming/MethodParameterName:
423
+ Exclude:
424
+ - 'lib/kumi/core/analyzer/constant_folding_helpers.rb'
425
+ - 'lib/kumi/core/analyzer/fn_aliases.rb'
426
+ - 'lib/kumi/core/analyzer/passes/attach_anchors_pass.rb'
427
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
428
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb'
429
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb'
430
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/output_buffer.rb'
431
+ - 'lib/kumi/core/analyzer/passes/input_collector_pass.rb'
432
+ - 'lib/kumi/core/analyzer/passes/load_input_cse_pass.rb'
433
+ - 'lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb'
434
+ - 'lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb'
435
+ - 'lib/kumi/core/analyzer/passes/snast_pass.rb'
436
+ - 'lib/kumi/core/analyzer/state_serde.rb'
437
+ - 'lib/kumi/core/compiler/accessors/base.rb'
438
+ - 'lib/kumi/core/ir.rb'
439
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
440
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
441
+ - 'lib/kumi/core/ir/execution_engine/values.rb'
442
+ - 'lib/kumi/core/irv2/builder.rb'
443
+ - 'lib/kumi/core/irv2/value.rb'
444
+ - 'lib/kumi/core/nast.rb'
445
+ - 'lib/kumi/dev/printer/irv2_formatter.rb'
446
+ - 'lib/kumi/ir/base/module.rb'
447
+ - 'lib/kumi/ir/df.rb'
448
+ - 'lib/kumi/ir/df/lower.rb'
449
+ - 'lib/kumi/ir/df/ops/fold.rb'
450
+ - 'lib/kumi/ir/df/ops/map.rb'
451
+ - 'lib/kumi/ir/df/ops/reduce.rb'
452
+ - 'lib/kumi/ir/df/passes/broadcast_simplify.rb'
453
+ - 'lib/kumi/ir/df/passes/cse.rb'
454
+ - 'lib/kumi/ir/df/passes/decl_inlining.rb'
455
+ - 'lib/kumi/ir/df/passes/import_inlining.rb'
456
+ - 'lib/kumi/ir/df/passes/load_dedup.rb'
457
+ - 'lib/kumi/ir/df/passes/stencil_cse.rb'
458
+ - 'lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb'
459
+ - 'lib/kumi/ir/loop/builder.rb'
460
+ - 'lib/kumi/ir/loop/lower.rb'
461
+ - 'lib/kumi/ir/loop/ops/core_ops.rb'
462
+ - 'lib/kumi/ir/loop/passes/array_contraction.rb'
463
+ - 'lib/kumi/ir/loop/passes/loop_fusion.rb'
464
+ - 'lib/kumi/ir/testing/snast_factory.rb'
465
+ - 'lib/kumi/ir/vec.rb'
466
+ - 'lib/kumi/ir/vec/ops/core_ops.rb'
467
+ - 'lib/kumi/pack/builder.rb'
468
+ - 'spec/kumi/ir/df/validator_spec.rb'
469
+ - 'spec/kumi/ir/loop/passes_spec.rb'
470
+
471
+ # Offense count: 2
472
+ # Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
473
+ # AllowedMethods: call
474
+ # WaywardPredicates: nonzero?
475
+ Naming/PredicateMethod:
476
+ Exclude:
477
+ - 'lib/kumi/dev/golden_v2.rb'
478
+ - 'lib/kumi/schema_metadata.rb'
479
+
480
+ # Offense count: 2
481
+ # Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros, UseSorbetSigs.
482
+ # NamePrefix: is_, has_, have_, does_
483
+ # ForbiddenPrefixes: is_, has_, have_, does_
484
+ # AllowedMethods: is_a?
485
+ # MethodDefinitionMacros: define_method, define_singleton_method
486
+ Naming/PredicatePrefix:
487
+ Exclude:
488
+ - 'lib/kumi/core/errors.rb'
489
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
490
+
491
+ # Offense count: 4
492
+ # Configuration parameters: MinSize.
493
+ Performance/CollectionLiteralInLoop:
494
+ Exclude:
495
+ - 'lib/kumi/core/analyzer/binder.rb'
496
+ - 'lib/kumi/dev/printer/irv2_formatter.rb'
497
+ - 'lib/kumi/dev/profile_aggregator.rb'
498
+ - 'lib/kumi/dev/profile_runner.rb'
499
+
500
+ # Offense count: 7
501
+ # This cop supports unsafe autocorrection (--autocorrect-all).
502
+ Performance/MapCompact:
503
+ Exclude:
504
+ - 'lib/kumi/dev/profile_aggregator.rb'
505
+ - 'lib/kumi/ir/df/import_inliner.rb'
506
+ - 'lib/kumi/ir/df/passes/decl_inlining.rb'
507
+ - 'lib/kumi/ir/df/passes/import_inlining.rb'
508
+ - 'lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb'
509
+ - 'lib/kumi/ir/vec/passes/constant_propagation.rb'
510
+ - 'spec/support/analyzer_state_helper.rb'
511
+
512
+ # Offense count: 3
513
+ # This cop supports unsafe autocorrection (--autocorrect-all).
514
+ # Configuration parameters: AllowRegexpMatch.
515
+ Performance/RedundantEqualityComparisonBlock:
516
+ Exclude:
517
+ - 'lib/kumi/core/analyzer/folder.rb'
518
+ - 'lib/kumi/ir/base/instruction.rb'
519
+
520
+ # Offense count: 28
521
+ # This cop supports unsafe autocorrection (--autocorrect-all).
522
+ # Configuration parameters: SkipBlocks, EnforcedStyle, OnlyStaticConstants.
523
+ # SupportedStyles: described_class, explicit
524
+ RSpec/DescribedClass:
525
+ Exclude:
526
+ - 'spec/kumi/core/types/value_objects_spec.rb'
527
+ - 'spec/kumi/version_spec.rb'
528
+
529
+ # Offense count: 3
530
+ # This cop supports unsafe autocorrection (--autocorrect-all).
531
+ RSpec/EmptyExampleGroup:
532
+ Exclude:
533
+ - 'spec/integration/cascade_logic_spec.rb'
534
+ - 'spec/kumi/schema_spec.rb'
535
+
536
+ # Offense count: 10
537
+ # Configuration parameters: Max, CountAsOne.
538
+ RSpec/ExampleLength:
539
+ Exclude:
540
+ - 'spec/integration/outer_axis_spec.rb'
541
+ - 'spec/kumi/core/analyzer/checkpoint_spec.rb'
542
+ - 'spec/kumi/ir/df/lower_spec.rb'
543
+ - 'spec/kumi/ir/df/passes/import_inlining_spec.rb'
544
+ - 'spec/kumi/ir/df_examples_spec.rb'
545
+ - 'spec/kumi/schema_spec.rb'
546
+
547
+ # Offense count: 12
548
+ # Configuration parameters: AssignmentOnly.
549
+ RSpec/InstanceVariable:
550
+ Exclude:
551
+ - 'spec/kumi/analyzer/passes/dependency_resolver_pass_spec.rb'
552
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
553
+ - 'spec/kumi/golden_v2_spec.rb'
554
+ - 'spec/kumi/ir/df/passes/import_inlining_spec.rb'
555
+
556
+ # Offense count: 20
557
+ RSpec/LeakyConstantDeclaration:
558
+ Exclude:
559
+ - 'spec/integration/element_access_mode_spec.rb'
560
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
561
+ - 'spec/kumi/ir/df/passes/import_inlining_spec.rb'
562
+ - 'spec/kumi/parser/guard_rails_spec.rb'
563
+ - 'spec/kumi/parser/hash_spec.rb'
564
+ - 'spec/kumi/parser_imports_spec.rb'
565
+
566
+ # Offense count: 7
567
+ # Configuration parameters: EnforcedStyle.
568
+ # SupportedStyles: have_received, receive
569
+ RSpec/MessageSpies:
570
+ Exclude:
571
+ - 'spec/kumi/core/analyzer/checkpoint_spec.rb'
572
+ - 'spec/kumi/core/analyzer/debug/debug_module_spec.rb'
573
+
574
+ # Offense count: 5
575
+ # Configuration parameters: AllowSubject, Max.
576
+ RSpec/MultipleMemoizedHelpers:
577
+ Exclude:
578
+ - 'spec/kumi/types/inference_spec.rb'
579
+
580
+ # Offense count: 15
581
+ # Configuration parameters: Max, AllowedGroups.
582
+ RSpec/NestedGroups:
583
+ Exclude:
584
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
585
+ - 'spec/kumi/input/type_matcher_spec.rb'
586
+
587
+ # Offense count: 4
588
+ # This cop supports unsafe autocorrection (--autocorrect-all).
589
+ # Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
590
+ # SupportedStyles: inflected, explicit
591
+ RSpec/PredicateMatcher:
592
+ Exclude:
593
+ - 'spec/kumi/core/error_handling_spec.rb'
594
+
595
+ # Offense count: 3
596
+ # This cop supports unsafe autocorrection (--autocorrect-all).
597
+ RSpec/ReceiveMessages:
598
+ Exclude:
599
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
600
+
601
+ # Offense count: 1
602
+ RSpec/RemoveConst:
603
+ Exclude:
604
+ - 'spec/kumi/parser/guard_rails_spec.rb'
605
+
606
+ # Offense count: 2
607
+ RSpec/RepeatedExample:
608
+ Exclude:
609
+ - 'spec/kumi/version_spec.rb'
610
+
611
+ # Offense count: 26
612
+ # Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata.
613
+ RSpec/SpecFilePathFormat:
614
+ Exclude:
615
+ - 'spec/kumi/analyzer/passes/declaration_validator_pass_spec.rb'
616
+ - 'spec/kumi/analyzer/passes/dependency_resolver_pass_spec.rb'
617
+ - 'spec/kumi/analyzer/passes/name_indexer_pass_spec.rb'
618
+ - 'spec/kumi/analyzer/passes/pass_base_spec.rb'
619
+ - 'spec/kumi/analyzer/passes/toposorter_pass_spec.rb'
620
+ - 'spec/kumi/analyzer/passes/visitor_pass_spec.rb'
621
+ - 'spec/kumi/core/analyzer/debug/debug_module_spec.rb'
622
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
623
+ - 'spec/kumi/domain/enum_analyzer_spec.rb'
624
+ - 'spec/kumi/domain/range_analyzer_spec.rb'
625
+ - 'spec/kumi/domain/validator_spec.rb'
626
+ - 'spec/kumi/domain/violation_formatter_spec.rb'
627
+ - 'spec/kumi/errors/input_validation_error_spec.rb'
628
+ - 'spec/kumi/export_spec.rb'
629
+ - 'spec/kumi/function_registry/yaml_dtype_loader_spec.rb'
630
+ - 'spec/kumi/golden_v2_spec.rb'
631
+ - 'spec/kumi/input/type_matcher_spec.rb'
632
+ - 'spec/kumi/input/validator_spec.rb'
633
+ - 'spec/kumi/input/violation_creator_spec.rb'
634
+ - 'spec/kumi/ir/df_spec.rb'
635
+ - 'spec/kumi/ir/vec/lower_spec.rb'
636
+ - 'spec/kumi/json_schema/generator_spec.rb'
637
+ - 'spec/kumi/parser/dsl_spec.rb'
638
+ - 'spec/kumi/parser/expression_converter_spec.rb'
639
+ - 'spec/kumi/types/inference_spec.rb'
640
+ - 'spec/kumi/types/normalizer_spec.rb'
641
+
642
+ # Offense count: 1
643
+ RSpec/UnspecifiedException:
644
+ Exclude:
645
+ - 'spec/kumi/parser_imports_spec.rb'
646
+
647
+ # Offense count: 10
648
+ # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
649
+ RSpec/VerifiedDoubles:
650
+ Exclude:
651
+ - 'spec/kumi/analyzer_refactoring_spec.rb'
652
+ - 'spec/kumi/core/analyzer/debug/debug_module_spec.rb'
653
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
654
+ - 'spec/kumi/core/analyzer/passes/lower_to_dfir_pass_spec.rb'
655
+ - 'spec/kumi/ir/df/passes/tuple_fold_canonicalization_spec.rb'
656
+ - 'spec/kumi/json_schema/generator_spec.rb'
657
+ - 'spec/kumi/parser/expression_converter_spec.rb'
658
+
659
+ # Offense count: 2
660
+ Security/CompoundHash:
661
+ Exclude:
662
+ - 'lib/kumi/core/types/value_objects.rb'
663
+
664
+ # Offense count: 5
665
+ Security/Eval:
666
+ Exclude:
667
+ - 'lib/kumi/core/compiler/access_codegen.rb'
668
+ - 'spec/support/schema_test_helper.rb'
669
+
670
+ # Offense count: 2
671
+ Security/MarshalLoad:
672
+ Exclude:
673
+ - 'lib/kumi/core/analyzer/state_serde.rb'
674
+ - 'spec/kumi/core/analyzer/state_serde_spec.rb'
675
+
676
+ # Offense count: 1
677
+ # This cop supports unsafe autocorrection (--autocorrect-all).
678
+ # Configuration parameters: MinBranchesCount.
679
+ Style/CaseLikeIf:
680
+ Exclude:
681
+ - 'lib/kumi/core/compiler/access_emit/base.rb'
682
+
683
+ # Offense count: 5
684
+ # This cop supports unsafe autocorrection (--autocorrect-all).
685
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForClasses, EnforcedStyleForModules.
686
+ # SupportedStyles: nested, compact
687
+ # SupportedStylesForClasses: ~, nested, compact
688
+ # SupportedStylesForModules: ~, nested, compact
689
+ Style/ClassAndModuleChildren:
690
+ Exclude:
691
+ - 'lib/kumi/core/compiler/access_emit/each_indexed.rb'
692
+ - 'lib/kumi/core/compiler/access_emit/materialize.rb'
693
+ - 'lib/kumi/core/compiler/access_emit/ravel.rb'
694
+ - 'lib/kumi/core/compiler/access_emit/read.rb'
695
+ - 'lib/kumi/core/ir.rb'
696
+
697
+ # Offense count: 5
698
+ # This cop supports unsafe autocorrection (--autocorrect-all).
699
+ Style/CommentedKeyword:
700
+ Exclude:
701
+ - 'lib/kumi/core/analyzer/checkpoint.rb'
702
+ - 'spec/kumi/core/analyzer/debug_spec.rb'
703
+
704
+ # Offense count: 1
705
+ Style/DocumentDynamicEvalDefinition:
706
+ Exclude:
707
+ - 'spec/support/schema_test_helper.rb'
708
+
709
+ # Offense count: 6
710
+ # This cop supports unsafe autocorrection (--autocorrect-all).
711
+ # Configuration parameters: EnforcedStyle.
712
+ # SupportedStyles: allowed_in_returns, forbidden
713
+ Style/DoubleNegation:
714
+ Exclude:
715
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
716
+ - 'spec/kumi/core/analyzer/checkpoint_spec.rb'
717
+
718
+ # Offense count: 1
719
+ # This cop supports safe autocorrection (--autocorrect).
720
+ # Configuration parameters: EnforcedStyle.
721
+ # SupportedStyles: format, sprintf, percent
722
+ Style/FormatString:
723
+ Exclude:
724
+ - 'lib/kumi/core/analyzer/checkpoint.rb'
725
+
726
+ # Offense count: 11
727
+ # This cop supports safe autocorrection (--autocorrect).
728
+ # Configuration parameters: MaxUnannotatedPlaceholdersAllowed, Mode, AllowedMethods, AllowedPatterns.
729
+ # SupportedStyles: annotated, template, unannotated
730
+ Style/FormatStringToken:
731
+ EnforcedStyle: unannotated
732
+
733
+ # Offense count: 11
734
+ # This cop supports unsafe autocorrection (--autocorrect-all).
735
+ # Configuration parameters: EnforcedStyle.
736
+ # SupportedStyles: always, always_true, never
737
+ Style/FrozenStringLiteralComment:
738
+ Exclude:
739
+ - 'cmd'
740
+ - 'lib/kumi/core/compiler/access_builder.rb'
741
+ - 'lib/kumi/dev/printer/width_aware_json.rb'
742
+ - 'lib/kumi/doc_generator.rb'
743
+ - 'lib/kumi/doc_generator/formatters/json.rb'
744
+ - 'lib/kumi/doc_generator/formatters/markdown.rb'
745
+ - 'lib/kumi/doc_generator/loader.rb'
746
+ - 'lib/kumi/doc_generator/merger.rb'
747
+ - 'lib/kumi/syntax/location.rb'
748
+ - 'spec/kumi/doc_generator_spec.rb'
749
+ - 'spec/kumi/parser/hash_spec.rb'
750
+
751
+ # Offense count: 1
752
+ # This cop supports safe autocorrection (--autocorrect).
753
+ # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
754
+ Style/GuardClause:
755
+ Exclude:
756
+ - 'lib/kumi/core/analyzer/passes/snast_pass.rb'
757
+
758
+ # Offense count: 1
759
+ # This cop supports unsafe autocorrection (--autocorrect-all).
760
+ # Configuration parameters: AllowSplatArgument.
761
+ Style/HashConversion:
762
+ Exclude:
763
+ - 'lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb'
764
+
765
+ # Offense count: 6
766
+ # This cop supports unsafe autocorrection (--autocorrect-all).
767
+ # Configuration parameters: AllowedReceivers.
768
+ # AllowedReceivers: Thread.current
769
+ Style/HashEachMethods:
770
+ Exclude:
771
+ - 'lib/kumi/core/analyzer/passes/contract_checker_pass.rb'
772
+ - 'lib/kumi/core/analyzer/passes/join_reduce_planning_pass.rb'
773
+ - 'lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb'
774
+ - 'lib/kumi/core/analyzer/passes/unsat_detector_pass.rb'
775
+ - 'lib/kumi/support/snast_printer.rb'
776
+
777
+ # Offense count: 2
778
+ # This cop supports unsafe autocorrection (--autocorrect-all).
779
+ Style/HashExcept:
780
+ Exclude:
781
+ - 'lib/kumi/core/analyzer/binder.rb'
782
+ - 'lib/kumi/dev/printer/irv2_formatter.rb'
783
+
784
+ # Offense count: 1
785
+ # This cop supports unsafe autocorrection (--autocorrect-all).
786
+ Style/HashTransformKeys:
787
+ Exclude:
788
+ - 'lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb'
789
+
790
+ # Offense count: 1
791
+ # This cop supports unsafe autocorrection (--autocorrect-all).
792
+ Style/HashTransformValues:
793
+ Exclude:
794
+ - 'lib/kumi/doc_generator/formatters/json.rb'
795
+
796
+ # Offense count: 4
797
+ # This cop supports unsafe autocorrection (--autocorrect-all).
798
+ Style/IdenticalConditionalBranches:
799
+ Exclude:
800
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
801
+ - 'lib/kumi/dev/parse.rb'
802
+
803
+ # Offense count: 7
804
+ # This cop supports safe autocorrection (--autocorrect).
805
+ Style/IfUnlessModifier:
806
+ Exclude:
807
+ - 'lib/kumi/core/analyzer/pass_manager.rb'
808
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
809
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
810
+ - 'lib/kumi/core/ir/execution_engine/interpreter.rb'
811
+ - 'lib/kumi/ir/base/instruction.rb'
812
+ - 'lib/kumi/ir/df/validator.rb'
813
+ - 'lib/kumi/ir/loop/lower.rb'
814
+
815
+ # Offense count: 2
816
+ # This cop supports unsafe autocorrection (--autocorrect-all).
817
+ # Configuration parameters: InverseMethods, InverseBlocks.
818
+ Style/InverseMethods:
819
+ Exclude:
820
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
821
+ - 'lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb'
822
+
823
+ # Offense count: 1
824
+ # This cop supports unsafe autocorrection (--autocorrect-all).
825
+ Style/MapIntoArray:
826
+ Exclude:
827
+ - 'lib/kumi/dev/pretty_printer.rb'
828
+
829
+ # Offense count: 1
830
+ # This cop supports unsafe autocorrection (--autocorrect-all).
831
+ Style/MapToHash:
832
+ Exclude:
833
+ - 'lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb'
834
+
835
+ # Offense count: 19
836
+ Style/MultilineBlockChain:
837
+ Exclude:
838
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
839
+ - 'lib/kumi/dev/profile_aggregator.rb'
840
+ - 'lib/kumi/dev/profile_runner.rb'
841
+ - 'spec/integration/location_tracking_spec.rb'
842
+ - 'spec/kumi/parser/expression_converter_spec.rb'
843
+
844
+ # Offense count: 1
845
+ # This cop supports unsafe autocorrection (--autocorrect-all).
846
+ # Configuration parameters: EnforcedStyle.
847
+ # SupportedStyles: literals, strict
848
+ Style/MutableConstant:
849
+ Exclude:
850
+ - 'lib/kumi/core/compiler/access_codegen.rb'
851
+
852
+ # Offense count: 15
853
+ # This cop supports unsafe autocorrection (--autocorrect-all).
854
+ # Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
855
+ # SupportedStyles: predicate, comparison
856
+ Style/NumericPredicate:
857
+ Exclude:
858
+ - 'lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb'
859
+ - 'lib/kumi/core/error_reporter.rb'
860
+ - 'lib/kumi/core/errors.rb'
861
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
862
+ - 'lib/kumi/core/ir/execution_engine/profiler.rb'
863
+ - 'lib/kumi/dev/profile_aggregator.rb'
864
+ - 'lib/kumi/dev/profile_runner.rb'
865
+
866
+ # Offense count: 2
867
+ # Configuration parameters: AllowedMethods.
868
+ # AllowedMethods: respond_to_missing?
869
+ Style/OptionalBooleanParameter:
870
+ Exclude:
871
+ - 'lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb'
872
+ - 'lib/kumi/core/compiler/accessors/each_indexed_accessor.rb'
873
+
874
+ # Offense count: 3
875
+ # This cop supports unsafe autocorrection (--autocorrect-all).
876
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
877
+ # AllowedMethods: present?, blank?, presence, try, try!
878
+ Style/SafeNavigation:
879
+ Exclude:
880
+ - 'lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb'
881
+ - 'lib/kumi/core/errors.rb'
882
+ - 'lib/kumi/dev/profile_aggregator.rb'
883
+
884
+ # Offense count: 1
885
+ # This cop supports unsafe autocorrection (--autocorrect-all).
886
+ Style/SingleArgumentDig:
887
+ Exclude:
888
+ - 'lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb'
889
+
890
+ # Offense count: 4
891
+ # This cop supports unsafe autocorrection (--autocorrect-all).
892
+ Style/SlicingWithRange:
893
+ Exclude:
894
+ - 'lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb'
895
+ - 'lib/kumi/core/analyzer/passes/dependency_resolver_pass.rb'
896
+ - 'lib/kumi/core/ir/execution_engine/combinators.rb'
897
+ - 'lib/kumi/pack/builder.rb'
898
+
899
+ # Offense count: 3
900
+ # This cop supports unsafe autocorrection (--autocorrect-all).
901
+ # Configuration parameters: RequireEnglish.
902
+ # SupportedStyles: use_perl_names, use_english_names, use_builtin_english_names
903
+ Style/SpecialGlobalVars:
904
+ EnforcedStyle: use_perl_names
905
+
906
+ # Offense count: 6
907
+ # This cop supports unsafe autocorrection (--autocorrect-all).
908
+ # Configuration parameters: Mode.
909
+ Style/StringConcatenation:
910
+ Exclude:
911
+ - 'lib/kumi/analyzer.rb'
912
+ - 'lib/kumi/core/compiler/access_emit/materialize.rb'
913
+ - 'lib/kumi/core/irv2/value.rb'
914
+ - 'lib/kumi/dev/ir.rb'
915
+ - 'lib/kumi/dev/printer/width_aware_json.rb'
916
+ - 'lib/kumi/ir/printer.rb'
917
+
918
+ # Offense count: 1
919
+ # This cop supports unsafe autocorrection (--autocorrect-all).
920
+ Style/StructInheritance:
921
+ Exclude:
922
+ - 'lib/kumi/syntax/location.rb'
923
+
924
+ # Offense count: 2
925
+ # This cop supports unsafe autocorrection (--autocorrect-all).
926
+ # Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
927
+ # AllowedMethods: define_method
928
+ Style/SymbolProc:
929
+ Exclude:
930
+ - 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb'
931
+ - 'lib/kumi/core/compiler/access_planner_v2.rb'