kumi 0.0.23 → 0.0.25

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 (166) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +2 -2
  4. data/golden/array_element/expected/schema_ruby.rb +1 -1
  5. data/golden/array_index/expected/schema_ruby.rb +1 -1
  6. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  7. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  8. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  9. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  10. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  11. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  12. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  13. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  14. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  15. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  16. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  17. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  18. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  19. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  20. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  21. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  22. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  23. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  24. data/golden/game_of_life/expected/lir_00_unoptimized.txt +33 -33
  25. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +33 -33
  26. data/golden/game_of_life/expected/lir_02_inlined.txt +1370 -1370
  27. data/golden/game_of_life/expected/lir_03_cse.txt +448 -448
  28. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +448 -448
  29. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +448 -448
  30. data/golden/game_of_life/expected/lir_06_const_prop.txt +448 -448
  31. data/golden/game_of_life/expected/schema_javascript.mjs +85 -85
  32. data/golden/game_of_life/expected/schema_ruby.rb +86 -86
  33. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  34. data/golden/hash_keys/schema.kumi +4 -5
  35. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  36. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  37. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  38. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  39. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  40. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  41. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  42. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  43. data/golden/inline_rename_scope_leak/expected/ast.txt +48 -0
  44. data/golden/inline_rename_scope_leak/expected/input_plan.txt +10 -0
  45. data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +35 -0
  46. data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +35 -0
  47. data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +49 -0
  48. data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +49 -0
  49. data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +49 -0
  50. data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +49 -0
  51. data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +49 -0
  52. data/golden/inline_rename_scope_leak/expected/nast.txt +31 -0
  53. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +51 -0
  54. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +82 -0
  55. data/golden/inline_rename_scope_leak/expected/snast.txt +31 -0
  56. data/golden/inline_rename_scope_leak/expected.json +7 -0
  57. data/golden/inline_rename_scope_leak/input.json +4 -0
  58. data/golden/inline_rename_scope_leak/schema.kumi +24 -0
  59. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  60. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  61. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  62. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  63. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  64. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  65. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  66. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  67. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  68. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  69. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  70. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  71. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  72. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  73. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  74. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  75. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  76. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  77. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  78. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  79. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  80. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  81. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  82. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  83. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  84. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  85. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  86. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  87. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  88. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  89. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  90. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  91. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  92. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  93. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  94. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  95. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  96. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  97. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  98. data/golden/roll/expected/lir_00_unoptimized.txt +8 -8
  99. data/golden/roll/expected/lir_01_hoist_scalar_references.txt +8 -8
  100. data/golden/roll/expected/lir_02_inlined.txt +8 -8
  101. data/golden/roll/expected/lir_03_cse.txt +8 -8
  102. data/golden/roll/expected/lir_04_1_loop_fusion.txt +8 -8
  103. data/golden/roll/expected/lir_04_loop_invcm.txt +8 -8
  104. data/golden/roll/expected/lir_06_const_prop.txt +8 -8
  105. data/golden/roll/expected/schema_ruby.rb +1 -1
  106. data/golden/shift/expected/lir_00_unoptimized.txt +12 -12
  107. data/golden/shift/expected/lir_01_hoist_scalar_references.txt +12 -12
  108. data/golden/shift/expected/lir_02_inlined.txt +12 -12
  109. data/golden/shift/expected/lir_03_cse.txt +12 -12
  110. data/golden/shift/expected/lir_04_1_loop_fusion.txt +12 -12
  111. data/golden/shift/expected/lir_04_loop_invcm.txt +12 -12
  112. data/golden/shift/expected/lir_06_const_prop.txt +12 -12
  113. data/golden/shift/expected/schema_ruby.rb +1 -1
  114. data/golden/shift_2d/expected/lir_00_unoptimized.txt +48 -48
  115. data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +48 -48
  116. data/golden/shift_2d/expected/lir_02_inlined.txt +48 -48
  117. data/golden/shift_2d/expected/lir_03_cse.txt +48 -48
  118. data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +48 -48
  119. data/golden/shift_2d/expected/lir_04_loop_invcm.txt +48 -48
  120. data/golden/shift_2d/expected/lir_06_const_prop.txt +48 -48
  121. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  122. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  123. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  124. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  125. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  126. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  127. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  128. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  129. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  130. data/golden/tuples/expected/lir_00_unoptimized.txt +4 -4
  131. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +4 -4
  132. data/golden/tuples/expected/lir_02_inlined.txt +4 -4
  133. data/golden/tuples/expected/lir_03_cse.txt +4 -4
  134. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +4 -4
  135. data/golden/tuples/expected/lir_04_loop_invcm.txt +4 -4
  136. data/golden/tuples/expected/lir_06_const_prop.txt +4 -4
  137. data/golden/tuples/expected/schema_ruby.rb +1 -1
  138. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  139. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  140. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  141. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +14 -14
  142. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +14 -14
  143. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +14 -14
  144. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +14 -14
  145. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  146. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  147. data/golden/us_tax_2024/expected/ast.txt +865 -0
  148. data/golden/us_tax_2024/expected/input_plan.txt +61 -0
  149. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +901 -0
  150. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +901 -0
  151. data/golden/us_tax_2024/expected/lir_02_inlined.txt +5178 -0
  152. data/golden/us_tax_2024/expected/lir_03_cse.txt +2499 -0
  153. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +2519 -0
  154. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +2499 -0
  155. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +2499 -0
  156. data/golden/us_tax_2024/expected/nast.txt +976 -0
  157. data/golden/us_tax_2024/expected/schema_javascript.mjs +584 -0
  158. data/golden/us_tax_2024/expected/schema_ruby.rb +639 -0
  159. data/golden/us_tax_2024/expected/snast.txt +976 -0
  160. data/golden/us_tax_2024/expected.json +1 -0
  161. data/golden/us_tax_2024/input.json +168 -0
  162. data/golden/us_tax_2024/schema.kumi +203 -0
  163. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  164. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +227 -107
  165. data/lib/kumi/version.rb +1 -1
  166. metadata +33 -1
@@ -18,12 +18,12 @@
18
18
  %acc40 = decl_acc :: integer
19
19
  %t41 = load_field departments_el_11["employees"] :: any
20
20
  %t14 = const 0.15 :: float
21
- loop employees id=L7 in %t41 as el=%employees_el_6, idx=%employees_i_7
22
- %t42 = load_field employees_el_6["salary"] :: integer
23
- %acc40 = acc_add agg.sum(%acc40, %t42) :: integer
21
+ loop employees id=L7 in %t41 as el=%t42, idx=%t43
22
+ %t44 = load_field t42["salary"] :: integer
23
+ %acc40 = acc_add agg.sum(%acc40, %t44) :: integer
24
24
  end_loop
25
- %t43 = acc_load %acc40 :: integer
26
- %t15 = call core.mul(%t43, %t14) :: float
25
+ %t45 = acc_load %acc40 :: integer
26
+ %t15 = call core.mul(%t45, %t14) :: float
27
27
  yield %t15
28
28
  end_loop
29
29
  )
@@ -49,28 +49,28 @@
49
49
  %t30 = load_input "departments" :: array
50
50
  loop departments id=L6 in %t30 as el=%departments_el_31, idx=%departments_i_32
51
51
  %t33 = load_field departments_el_31["name"] :: string
52
- %acc46 = decl_acc :: integer
53
- %t47 = load_field departments_el_31["employees"] :: any
54
- %acc67 = decl_acc :: integer
55
- %t52 = const 0.15 :: float
56
- %acc56 = decl_acc :: integer
57
- loop employees id=L8 in %t47 as el=%employees_el_6, idx=%employees_i_7
58
- %t48 = load_field employees_el_6["salary"] :: integer
59
- %acc46 = acc_add agg.sum(%acc46, %t48) :: integer
60
- %t58 = load_field employees_el_6["role"] :: string
61
- %t59 = const "manager" :: string
62
- %t60 = call core.eq(%t58, %t59) :: boolean
63
- %t61 = const 1 :: integer
64
- %t62 = const 0 :: integer
65
- %t63 = select %t60, %t61, %t62 :: integer
66
- %acc56 = acc_add agg.sum(%acc56, %t63) :: integer
67
- %acc67 = acc_add agg.sum(%acc67, %t48) :: integer
52
+ %acc48 = decl_acc :: integer
53
+ %t49 = load_field departments_el_31["employees"] :: any
54
+ %acc60 = decl_acc :: integer
55
+ %t56 = const 0.15 :: float
56
+ %acc68 = decl_acc :: integer
57
+ loop employees id=L8 in %t49 as el=%t50, idx=%t51
58
+ %t52 = load_field t50["salary"] :: integer
59
+ %acc48 = acc_add agg.sum(%acc48, %t52) :: integer
60
+ %acc60 = acc_add agg.sum(%acc60, %t52) :: integer
61
+ %t72 = load_field t50["role"] :: string
62
+ %t73 = const "manager" :: string
63
+ %t74 = call core.eq(%t72, %t73) :: boolean
64
+ %t75 = const 1 :: integer
65
+ %t76 = const 0 :: integer
66
+ %t77 = select %t74, %t75, %t76 :: integer
67
+ %acc68 = acc_add agg.sum(%acc68, %t77) :: integer
68
68
  end_loop
69
- %t49 = acc_load %acc46 :: integer
70
- %t64 = acc_load %acc56 :: integer
71
- %t70 = acc_load %acc67 :: integer
72
- %t53 = call core.mul(%t70, %t52) :: float
73
- %t37 = make_object{name: %t33, payroll: %t49, tax: %t53, managers: %t64} :: object
69
+ %t53 = acc_load %acc48 :: integer
70
+ %t65 = acc_load %acc60 :: integer
71
+ %t78 = acc_load %acc68 :: integer
72
+ %t57 = call core.mul(%t65, %t56) :: float
73
+ %t37 = make_object{name: %t33, payroll: %t53, tax: %t57, managers: %t78} :: object
74
74
  yield %t37
75
75
  end_loop
76
76
  )
@@ -18,12 +18,12 @@
18
18
  %acc40 = decl_acc :: integer
19
19
  %t41 = load_field departments_el_11["employees"] :: any
20
20
  %t14 = const 0.15 :: float
21
- loop employees id=L7 in %t41 as el=%employees_el_6, idx=%employees_i_7
22
- %t42 = load_field employees_el_6["salary"] :: integer
23
- %acc40 = acc_add agg.sum(%acc40, %t42) :: integer
21
+ loop employees id=L7 in %t41 as el=%t42, idx=%t43
22
+ %t44 = load_field t42["salary"] :: integer
23
+ %acc40 = acc_add agg.sum(%acc40, %t44) :: integer
24
24
  end_loop
25
- %t43 = acc_load %acc40 :: integer
26
- %t15 = call core.mul(%t43, %t14) :: float
25
+ %t45 = acc_load %acc40 :: integer
26
+ %t15 = call core.mul(%t45, %t14) :: float
27
27
  yield %t15
28
28
  end_loop
29
29
  )
@@ -49,28 +49,29 @@
49
49
  %t30 = load_input "departments" :: array
50
50
  loop departments id=L6 in %t30 as el=%departments_el_31, idx=%departments_i_32
51
51
  %t33 = load_field departments_el_31["name"] :: string
52
- %acc46 = decl_acc :: integer
53
- %t47 = load_field departments_el_31["employees"] :: any
54
- %acc67 = decl_acc :: integer
55
- %t52 = const 0.15 :: float
56
- %acc56 = decl_acc :: integer
57
- loop employees id=L8 in %t47 as el=%employees_el_6, idx=%employees_i_7
58
- %t48 = load_field employees_el_6["salary"] :: integer
59
- %acc46 = acc_add agg.sum(%acc46, %t48) :: integer
60
- %t58 = load_field employees_el_6["role"] :: string
61
- %t59 = const "manager" :: string
62
- %t60 = call core.eq(%t58, %t59) :: boolean
63
- %t61 = const 1 :: integer
64
- %t62 = const 0 :: integer
65
- %t63 = select %t60, %t61, %t62 :: integer
66
- %acc56 = acc_add agg.sum(%acc56, %t63) :: integer
67
- %acc67 = acc_add agg.sum(%acc67, %t48) :: integer
52
+ %acc48 = decl_acc :: integer
53
+ %t49 = load_field departments_el_31["employees"] :: any
54
+ %acc60 = decl_acc :: integer
55
+ %t56 = const 0.15 :: float
56
+ %acc68 = decl_acc :: integer
57
+ loop employees id=L8 in %t49 as el=%t50, idx=%t51
58
+ %t52 = load_field t50["salary"] :: integer
59
+ %acc48 = acc_add agg.sum(%acc48, %t52) :: integer
60
+ %t64 = load_field t50["salary"] :: integer
61
+ %acc60 = acc_add agg.sum(%acc60, %t64) :: integer
62
+ %t72 = load_field t50["role"] :: string
63
+ %t73 = const "manager" :: string
64
+ %t74 = call core.eq(%t72, %t73) :: boolean
65
+ %t75 = const 1 :: integer
66
+ %t76 = const 0 :: integer
67
+ %t77 = select %t74, %t75, %t76 :: integer
68
+ %acc68 = acc_add agg.sum(%acc68, %t77) :: integer
68
69
  end_loop
69
- %t49 = acc_load %acc46 :: integer
70
- %t64 = acc_load %acc56 :: integer
71
- %t70 = acc_load %acc67 :: integer
72
- %t53 = call core.mul(%t70, %t52) :: float
73
- %t37 = make_object{name: %t33, payroll: %t49, tax: %t53, managers: %t64} :: object
70
+ %t53 = acc_load %acc48 :: integer
71
+ %t65 = acc_load %acc60 :: integer
72
+ %t78 = acc_load %acc68 :: integer
73
+ %t57 = call core.mul(%t65, %t56) :: float
74
+ %t37 = make_object{name: %t33, payroll: %t53, tax: %t57, managers: %t78} :: object
74
75
  yield %t37
75
76
  end_loop
76
77
  )
@@ -18,12 +18,12 @@
18
18
  loop departments id=L3 in %t10 as el=%departments_el_11, idx=%departments_i_12
19
19
  %acc40 = decl_acc :: integer
20
20
  %t41 = load_field departments_el_11["employees"] :: any
21
- loop employees id=L7 in %t41 as el=%employees_el_6, idx=%employees_i_7
22
- %t42 = load_field employees_el_6["salary"] :: integer
23
- %acc40 = acc_add agg.sum(%acc40, %t42) :: integer
21
+ loop employees id=L7 in %t41 as el=%t42, idx=%t43
22
+ %t44 = load_field t42["salary"] :: integer
23
+ %acc40 = acc_add agg.sum(%acc40, %t44) :: integer
24
24
  end_loop
25
- %t43 = acc_load %acc40 :: integer
26
- %t15 = call core.mul(%t43, %t14) :: float
25
+ %t45 = acc_load %acc40 :: integer
26
+ %t15 = call core.mul(%t45, %t14) :: float
27
27
  yield %t15
28
28
  end_loop
29
29
  )
@@ -47,30 +47,30 @@
47
47
  )
48
48
  (Declaration department_summary
49
49
  %t30 = load_input "departments" :: array
50
- %t52 = const 0.15 :: float
51
- %t59 = const "manager" :: string
52
- %t61 = const 1 :: integer
53
- %t62 = const 0 :: integer
50
+ %t56 = const 0.15 :: float
51
+ %t73 = const "manager" :: string
52
+ %t75 = const 1 :: integer
53
+ %t76 = const 0 :: integer
54
54
  loop departments id=L6 in %t30 as el=%departments_el_31, idx=%departments_i_32
55
55
  %t33 = load_field departments_el_31["name"] :: string
56
- %acc46 = decl_acc :: integer
57
- %t47 = load_field departments_el_31["employees"] :: any
58
- %acc67 = decl_acc :: integer
59
- %acc56 = decl_acc :: integer
60
- loop employees id=L8 in %t47 as el=%employees_el_6, idx=%employees_i_7
61
- %t48 = load_field employees_el_6["salary"] :: integer
62
- %acc46 = acc_add agg.sum(%acc46, %t48) :: integer
63
- %t58 = load_field employees_el_6["role"] :: string
64
- %t60 = call core.eq(%t58, %t59) :: boolean
65
- %t63 = select %t60, %t61, %t62 :: integer
66
- %acc56 = acc_add agg.sum(%acc56, %t63) :: integer
67
- %acc67 = acc_add agg.sum(%acc67, %t48) :: integer
56
+ %acc48 = decl_acc :: integer
57
+ %t49 = load_field departments_el_31["employees"] :: any
58
+ %acc60 = decl_acc :: integer
59
+ %acc68 = decl_acc :: integer
60
+ loop employees id=L8 in %t49 as el=%t50, idx=%t51
61
+ %t52 = load_field t50["salary"] :: integer
62
+ %acc48 = acc_add agg.sum(%acc48, %t52) :: integer
63
+ %acc60 = acc_add agg.sum(%acc60, %t52) :: integer
64
+ %t72 = load_field t50["role"] :: string
65
+ %t74 = call core.eq(%t72, %t73) :: boolean
66
+ %t77 = select %t74, %t75, %t76 :: integer
67
+ %acc68 = acc_add agg.sum(%acc68, %t77) :: integer
68
68
  end_loop
69
- %t49 = acc_load %acc46 :: integer
70
- %t64 = acc_load %acc56 :: integer
71
- %t70 = acc_load %acc67 :: integer
72
- %t53 = call core.mul(%t70, %t52) :: float
73
- %t37 = make_object{name: %t33, payroll: %t49, tax: %t53, managers: %t64} :: object
69
+ %t53 = acc_load %acc48 :: integer
70
+ %t65 = acc_load %acc60 :: integer
71
+ %t78 = acc_load %acc68 :: integer
72
+ %t57 = call core.mul(%t65, %t56) :: float
73
+ %t37 = make_object{name: %t33, payroll: %t53, tax: %t57, managers: %t78} :: object
74
74
  yield %t37
75
75
  end_loop
76
76
  )
@@ -18,12 +18,12 @@
18
18
  loop departments id=L3 in %t10 as el=%departments_el_11, idx=%departments_i_12
19
19
  %acc40 = decl_acc :: integer
20
20
  %t41 = load_field departments_el_11["employees"] :: any
21
- loop employees id=L7 in %t41 as el=%employees_el_6, idx=%employees_i_7
22
- %t42 = load_field employees_el_6["salary"] :: integer
23
- %acc40 = acc_add agg.sum(%acc40, %t42) :: integer
21
+ loop employees id=L7 in %t41 as el=%t42, idx=%t43
22
+ %t44 = load_field t42["salary"] :: integer
23
+ %acc40 = acc_add agg.sum(%acc40, %t44) :: integer
24
24
  end_loop
25
- %t43 = acc_load %acc40 :: integer
26
- %t15 = call core.mul(%t43, %t14) :: float
25
+ %t45 = acc_load %acc40 :: integer
26
+ %t15 = call core.mul(%t45, %t14) :: float
27
27
  yield %t15
28
28
  end_loop
29
29
  )
@@ -47,30 +47,30 @@
47
47
  )
48
48
  (Declaration department_summary
49
49
  %t30 = load_input "departments" :: array
50
- %t52 = const 0.15 :: float
51
- %t59 = const "manager" :: string
52
- %t61 = const 1 :: integer
53
- %t62 = const 0 :: integer
50
+ %t56 = const 0.15 :: float
51
+ %t73 = const "manager" :: string
52
+ %t75 = const 1 :: integer
53
+ %t76 = const 0 :: integer
54
54
  loop departments id=L6 in %t30 as el=%departments_el_31, idx=%departments_i_32
55
55
  %t33 = load_field departments_el_31["name"] :: string
56
- %acc46 = decl_acc :: integer
57
- %t47 = load_field departments_el_31["employees"] :: any
58
- %acc67 = decl_acc :: integer
59
- %acc56 = decl_acc :: integer
60
- loop employees id=L8 in %t47 as el=%employees_el_6, idx=%employees_i_7
61
- %t48 = load_field employees_el_6["salary"] :: integer
62
- %acc46 = acc_add agg.sum(%acc46, %t48) :: integer
63
- %t58 = load_field employees_el_6["role"] :: string
64
- %t60 = call core.eq(%t58, %t59) :: boolean
65
- %t63 = select %t60, %t61, %t62 :: integer
66
- %acc56 = acc_add agg.sum(%acc56, %t63) :: integer
67
- %acc67 = acc_add agg.sum(%acc67, %t48) :: integer
56
+ %acc48 = decl_acc :: integer
57
+ %t49 = load_field departments_el_31["employees"] :: any
58
+ %acc60 = decl_acc :: integer
59
+ %acc68 = decl_acc :: integer
60
+ loop employees id=L8 in %t49 as el=%t50, idx=%t51
61
+ %t52 = load_field t50["salary"] :: integer
62
+ %acc48 = acc_add agg.sum(%acc48, %t52) :: integer
63
+ %acc60 = acc_add agg.sum(%acc60, %t52) :: integer
64
+ %t72 = load_field t50["role"] :: string
65
+ %t74 = call core.eq(%t72, %t73) :: boolean
66
+ %t77 = select %t74, %t75, %t76 :: integer
67
+ %acc68 = acc_add agg.sum(%acc68, %t77) :: integer
68
68
  end_loop
69
- %t49 = acc_load %acc46 :: integer
70
- %t64 = acc_load %acc56 :: integer
71
- %t70 = acc_load %acc67 :: integer
72
- %t53 = call core.mul(%t70, %t52) :: float
73
- %t37 = make_object{name: %t33, payroll: %t49, tax: %t53, managers: %t64} :: object
69
+ %t53 = acc_load %acc48 :: integer
70
+ %t65 = acc_load %acc60 :: integer
71
+ %t78 = acc_load %acc68 :: integer
72
+ %t57 = call core.mul(%t65, %t56) :: float
73
+ %t37 = make_object{name: %t33, payroll: %t53, tax: %t57, managers: %t78} :: object
74
74
  yield %t37
75
75
  end_loop
76
76
  )
@@ -20,9 +20,9 @@ export function _payroll_tax(input) {
20
20
  t10.forEach((departments_el_11, departments_i_12) => {
21
21
  let acc40 = 0;
22
22
  let t41 = departments_el_11["employees"];
23
- t41.forEach((employees_el_6, employees_i_7) => {
24
- let t42 = employees_el_6["salary"];
25
- acc40 += t42;
23
+ t41.forEach((t42, t43) => {
24
+ let t44 = t42["salary"];
25
+ acc40 += t44;
26
26
  });
27
27
  let t15 = acc40 * t14;
28
28
  out.push(t15);
@@ -53,31 +53,31 @@ export function _manager_count(input) {
53
53
  export function _department_summary(input) {
54
54
  let out = [];
55
55
  let t30 = input["departments"];
56
- const t52 = 0.15;
57
- const t59 = "manager";
58
- const t61 = 1;
59
- const t62 = 0;
56
+ const t56 = 0.15;
57
+ const t73 = "manager";
58
+ const t75 = 1;
59
+ const t76 = 0;
60
60
  t30.forEach((departments_el_31, departments_i_32) => {
61
61
  let t33 = departments_el_31["name"];
62
- let acc46 = 0;
63
- let t47 = departments_el_31["employees"];
64
- let acc67 = 0;
65
- let acc56 = 0;
66
- t47.forEach((employees_el_6, employees_i_7) => {
67
- let t48 = employees_el_6["salary"];
68
- acc46 += t48;
69
- let t58 = employees_el_6["role"];
70
- let t60 = t58 == t59;
71
- let t63 = t60 ? t61 : t62;
72
- acc56 += t63;
73
- acc67 += t48;
62
+ let acc48 = 0;
63
+ let t49 = departments_el_31["employees"];
64
+ let acc60 = 0;
65
+ let acc68 = 0;
66
+ t49.forEach((t50, t51) => {
67
+ let t52 = t50["salary"];
68
+ acc48 += t52;
69
+ acc60 += t52;
70
+ let t72 = t50["role"];
71
+ let t74 = t72 == t73;
72
+ let t77 = t74 ? t75 : t76;
73
+ acc68 += t77;
74
74
  });
75
- let t53 = acc67 * t52;
75
+ let t57 = acc60 * t56;
76
76
  let t37 = {
77
77
  "name": t33,
78
- "payroll": acc46,
79
- "tax": t53,
80
- "managers": acc56
78
+ "payroll": acc48,
79
+ "tax": t57,
80
+ "managers": acc68
81
81
  };
82
82
  out.push(t37);
83
83
  });
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_1523dc98fbf6f178f956575880c9b428b21c19aa91a7822a35e277983da843a8
2
+ module Kumi::Compiled::KUMI_002f34f6230fcd86b09e6081a7690404057fdb4e88a69309791cc98faf743c5b
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -51,12 +51,12 @@ module Kumi::Compiled::KUMI_1523dc98fbf6f178f956575880c9b428b21c19aa91a7822a35e2
51
51
  t10.each_with_index do |departments_el_11, departments_i_12|
52
52
  acc40 = 0
53
53
  t41 = departments_el_11["employees"] || departments_el_11[:employees]
54
- t41.each_with_index do |employees_el_6, employees_i_7|
55
- t42 = employees_el_6["salary"] || employees_el_6[:salary]
56
- acc40 += t42
54
+ t41.each_with_index do |t42, t43|
55
+ t44 = t42["salary"] || t42[:salary]
56
+ acc40 += t44
57
57
  end
58
- t43 = acc40
59
- t15 = t43 * t14
58
+ t45 = acc40
59
+ t15 = t45 * t14
60
60
  out << t15
61
61
  end
62
62
  out
@@ -86,34 +86,34 @@ module Kumi::Compiled::KUMI_1523dc98fbf6f178f956575880c9b428b21c19aa91a7822a35e2
86
86
  def _department_summary(input = @input)
87
87
  out = []
88
88
  t30 = input["departments"] || input[:departments]
89
- t52 = 0.15
90
- t59 = "manager"
91
- t61 = 1
92
- t62 = 0
89
+ t56 = 0.15
90
+ t73 = "manager"
91
+ t75 = 1
92
+ t76 = 0
93
93
  t30.each_with_index do |departments_el_31, departments_i_32|
94
94
  t33 = departments_el_31["name"] || departments_el_31[:name]
95
- acc46 = 0
96
- t47 = departments_el_31["employees"] || departments_el_31[:employees]
97
- acc67 = 0
98
- acc56 = 0
99
- t47.each_with_index do |employees_el_6, employees_i_7|
100
- t48 = employees_el_6["salary"] || employees_el_6[:salary]
101
- acc46 += t48
102
- t58 = employees_el_6["role"] || employees_el_6[:role]
103
- t60 = t58 == t59
104
- t63 = t60 ? t61 : t62
105
- acc56 += t63
106
- acc67 += t48
95
+ acc48 = 0
96
+ t49 = departments_el_31["employees"] || departments_el_31[:employees]
97
+ acc60 = 0
98
+ acc68 = 0
99
+ t49.each_with_index do |t50, t51|
100
+ t52 = t50["salary"] || t50[:salary]
101
+ acc48 += t52
102
+ acc60 += t52
103
+ t72 = t50["role"] || t50[:role]
104
+ t74 = t72 == t73
105
+ t77 = t74 ? t75 : t76
106
+ acc68 += t77
107
107
  end
108
- t49 = acc46
109
- t64 = acc56
110
- t70 = acc67
111
- t53 = t70 * t52
108
+ t53 = acc48
109
+ t65 = acc60
110
+ t78 = acc68
111
+ t57 = t65 * t56
112
112
  t37 = {
113
113
  "name" => t33,
114
- "payroll" => t49,
115
- "tax" => t53,
116
- "managers" => t64
114
+ "payroll" => t53,
115
+ "tax" => t57,
116
+ "managers" => t78
117
117
  }
118
118
  out << t37
119
119
  end
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_e1b6ea8c9c0e0caff4b221e24755552775604680e28bf1c6b8fa4fd27b823c89
2
+ module Kumi::Compiled::KUMI_4c8723995ed228ad59aa4387c47f793b36b9ab146166d75c9288837c7d368c1b
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -37,25 +37,25 @@
37
37
  %t31 = load_input "departments" :: array
38
38
  %acc33 = decl_acc :: integer
39
39
  %t34 = load_field departments_el_25["employees"] :: any
40
- loop employees id=L6 in %t34 as el=%employees_el_6, idx=%employees_i_7
41
- %t35 = load_field employees_el_6["salary"] :: integer
42
- %acc33 = acc_add agg.sum(%acc33, %t35) :: integer
40
+ loop employees id=L6 in %t34 as el=%t35, idx=%t36
41
+ %t37 = load_field t35["salary"] :: integer
42
+ %acc33 = acc_add agg.sum(%acc33, %t37) :: integer
43
43
  end_loop
44
- %t36 = acc_load %acc33 :: integer
45
- %t37 = load_input "departments" :: array
46
- %acc39 = decl_acc :: integer
47
- %t40 = load_field departments_el_25["employees"] :: any
48
- loop employees id=L7 in %t40 as el=%employees_el_15, idx=%employees_i_16
49
- %t41 = load_field employees_el_15["role"] :: string
50
- %t42 = const "manager" :: string
51
- %t43 = call core.eq(%t41, %t42) :: boolean
52
- %t44 = const 1 :: integer
53
- %t45 = const 0 :: integer
54
- %t46 = select %t43, %t44, %t45 :: integer
55
- %acc39 = acc_add agg.sum(%acc39, %t46) :: integer
44
+ %t38 = acc_load %acc33 :: integer
45
+ %t39 = load_input "departments" :: array
46
+ %acc41 = decl_acc :: integer
47
+ %t42 = load_field departments_el_25["employees"] :: any
48
+ loop employees id=L7 in %t42 as el=%t43, idx=%t44
49
+ %t45 = load_field t43["role"] :: string
50
+ %t46 = const "manager" :: string
51
+ %t47 = call core.eq(%t45, %t46) :: boolean
52
+ %t48 = const 1 :: integer
53
+ %t49 = const 0 :: integer
54
+ %t50 = select %t47, %t48, %t49 :: integer
55
+ %acc41 = acc_add agg.sum(%acc41, %t50) :: integer
56
56
  end_loop
57
- %t47 = acc_load %acc39 :: integer
58
- %t30 = make_object{name: %t27, total_payroll: %t36, manager_count: %t47} :: object
57
+ %t51 = acc_load %acc41 :: integer
58
+ %t30 = make_object{name: %t27, total_payroll: %t38, manager_count: %t51} :: object
59
59
  yield %t30
60
60
  end_loop
61
61
  )
@@ -36,21 +36,21 @@
36
36
  %t27 = load_field departments_el_25["name"] :: string
37
37
  %acc33 = decl_acc :: integer
38
38
  %t34 = load_field departments_el_25["employees"] :: any
39
- %acc39 = decl_acc :: integer
40
- loop employees id=L6 in %t34 as el=%employees_el_6, idx=%employees_i_7
41
- %t35 = load_field employees_el_6["salary"] :: integer
42
- %acc33 = acc_add agg.sum(%acc33, %t35) :: integer
43
- %t41 = load_field employees_el_6["role"] :: string
44
- %t42 = const "manager" :: string
45
- %t43 = call core.eq(%t41, %t42) :: boolean
46
- %t44 = const 1 :: integer
47
- %t45 = const 0 :: integer
48
- %t46 = select %t43, %t44, %t45 :: integer
49
- %acc39 = acc_add agg.sum(%acc39, %t46) :: integer
39
+ %acc41 = decl_acc :: integer
40
+ loop employees id=L6 in %t34 as el=%t35, idx=%t36
41
+ %t37 = load_field t35["salary"] :: integer
42
+ %acc33 = acc_add agg.sum(%acc33, %t37) :: integer
43
+ %t45 = load_field t35["role"] :: string
44
+ %t46 = const "manager" :: string
45
+ %t47 = call core.eq(%t45, %t46) :: boolean
46
+ %t48 = const 1 :: integer
47
+ %t49 = const 0 :: integer
48
+ %t50 = select %t47, %t48, %t49 :: integer
49
+ %acc41 = acc_add agg.sum(%acc41, %t50) :: integer
50
50
  end_loop
51
- %t36 = acc_load %acc33 :: integer
52
- %t47 = acc_load %acc39 :: integer
53
- %t30 = make_object{name: %t27, total_payroll: %t36, manager_count: %t47} :: object
51
+ %t38 = acc_load %acc33 :: integer
52
+ %t51 = acc_load %acc41 :: integer
53
+ %t30 = make_object{name: %t27, total_payroll: %t38, manager_count: %t51} :: object
54
54
  yield %t30
55
55
  end_loop
56
56
  )
@@ -36,21 +36,21 @@
36
36
  %t27 = load_field departments_el_25["name"] :: string
37
37
  %acc33 = decl_acc :: integer
38
38
  %t34 = load_field departments_el_25["employees"] :: any
39
- %acc39 = decl_acc :: integer
40
- loop employees id=L6 in %t34 as el=%employees_el_6, idx=%employees_i_7
41
- %t35 = load_field employees_el_6["salary"] :: integer
42
- %acc33 = acc_add agg.sum(%acc33, %t35) :: integer
43
- %t41 = load_field employees_el_6["role"] :: string
44
- %t42 = const "manager" :: string
45
- %t43 = call core.eq(%t41, %t42) :: boolean
46
- %t44 = const 1 :: integer
47
- %t45 = const 0 :: integer
48
- %t46 = select %t43, %t44, %t45 :: integer
49
- %acc39 = acc_add agg.sum(%acc39, %t46) :: integer
39
+ %acc41 = decl_acc :: integer
40
+ loop employees id=L6 in %t34 as el=%t35, idx=%t36
41
+ %t37 = load_field t35["salary"] :: integer
42
+ %acc33 = acc_add agg.sum(%acc33, %t37) :: integer
43
+ %t45 = load_field t35["role"] :: string
44
+ %t46 = const "manager" :: string
45
+ %t47 = call core.eq(%t45, %t46) :: boolean
46
+ %t48 = const 1 :: integer
47
+ %t49 = const 0 :: integer
48
+ %t50 = select %t47, %t48, %t49 :: integer
49
+ %acc41 = acc_add agg.sum(%acc41, %t50) :: integer
50
50
  end_loop
51
- %t36 = acc_load %acc33 :: integer
52
- %t47 = acc_load %acc39 :: integer
53
- %t30 = make_object{name: %t27, total_payroll: %t36, manager_count: %t47} :: object
51
+ %t38 = acc_load %acc33 :: integer
52
+ %t51 = acc_load %acc41 :: integer
53
+ %t30 = make_object{name: %t27, total_payroll: %t38, manager_count: %t51} :: object
54
54
  yield %t30
55
55
  end_loop
56
56
  )
@@ -32,25 +32,25 @@
32
32
  )
33
33
  (Declaration department_summary
34
34
  %t24 = load_input "departments" :: array
35
- %t42 = const "manager" :: string
36
- %t44 = const 1 :: integer
37
- %t45 = const 0 :: integer
35
+ %t46 = const "manager" :: string
36
+ %t48 = const 1 :: integer
37
+ %t49 = const 0 :: integer
38
38
  loop departments id=L5 in %t24 as el=%departments_el_25, idx=%departments_i_26
39
39
  %t27 = load_field departments_el_25["name"] :: string
40
40
  %acc33 = decl_acc :: integer
41
41
  %t34 = load_field departments_el_25["employees"] :: any
42
- %acc39 = decl_acc :: integer
43
- loop employees id=L6 in %t34 as el=%employees_el_6, idx=%employees_i_7
44
- %t35 = load_field employees_el_6["salary"] :: integer
45
- %acc33 = acc_add agg.sum(%acc33, %t35) :: integer
46
- %t41 = load_field employees_el_6["role"] :: string
47
- %t43 = call core.eq(%t41, %t42) :: boolean
48
- %t46 = select %t43, %t44, %t45 :: integer
49
- %acc39 = acc_add agg.sum(%acc39, %t46) :: integer
42
+ %acc41 = decl_acc :: integer
43
+ loop employees id=L6 in %t34 as el=%t35, idx=%t36
44
+ %t37 = load_field t35["salary"] :: integer
45
+ %acc33 = acc_add agg.sum(%acc33, %t37) :: integer
46
+ %t45 = load_field t35["role"] :: string
47
+ %t47 = call core.eq(%t45, %t46) :: boolean
48
+ %t50 = select %t47, %t48, %t49 :: integer
49
+ %acc41 = acc_add agg.sum(%acc41, %t50) :: integer
50
50
  end_loop
51
- %t36 = acc_load %acc33 :: integer
52
- %t47 = acc_load %acc39 :: integer
53
- %t30 = make_object{name: %t27, total_payroll: %t36, manager_count: %t47} :: object
51
+ %t38 = acc_load %acc33 :: integer
52
+ %t51 = acc_load %acc41 :: integer
53
+ %t30 = make_object{name: %t27, total_payroll: %t38, manager_count: %t51} :: object
54
54
  yield %t30
55
55
  end_loop
56
56
  )