mt-lang 0.3.8 → 0.3.10

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/lib/milk_tea/base.rb +1 -2
  3. data/lib/milk_tea/bindings/bindgen/ast_parser.rb +0 -2
  4. data/lib/milk_tea/bindings/bindgen/declaration.rb +0 -2
  5. data/lib/milk_tea/bindings/bindgen/emitter.rb +0 -2
  6. data/lib/milk_tea/bindings/bindgen/overrides.rb +0 -2
  7. data/lib/milk_tea/bindings/bindgen/type_mapper.rb +51 -53
  8. data/lib/milk_tea/bindings/imported_bindings/generator.rb +7 -9
  9. data/lib/milk_tea/bindings/imported_bindings/method_source.rb +0 -2
  10. data/lib/milk_tea/bindings/imported_bindings/naming.rb +6 -8
  11. data/lib/milk_tea/bindings/imported_bindings.rb +0 -2
  12. data/lib/milk_tea/bindings/opengl_registry.rb +3 -7
  13. data/lib/milk_tea/bindings/steamworks.rb +12 -16
  14. data/lib/milk_tea/bindings/upstream_sources.rb +10 -14
  15. data/lib/milk_tea/bindings/vendored_box2d.rb +10 -12
  16. data/lib/milk_tea/bindings/vendored_cjson.rb +6 -8
  17. data/lib/milk_tea/bindings/vendored_flecs.rb +10 -12
  18. data/lib/milk_tea/bindings/vendored_glfw.rb +11 -13
  19. data/lib/milk_tea/bindings/vendored_libuv.rb +11 -13
  20. data/lib/milk_tea/bindings/vendored_pcre2.rb +11 -13
  21. data/lib/milk_tea/bindings/vendored_raylib.rb +6 -10
  22. data/lib/milk_tea/bindings/vendored_sdl3.rb +11 -13
  23. data/lib/milk_tea/bindings/vendored_steamworks.rb +1 -5
  24. data/lib/milk_tea/core/ast.rb +103 -45
  25. data/lib/milk_tea/core/async_runtime_installer.rb +0 -2
  26. data/lib/milk_tea/core/bindings/attribute_binding.rb +1 -3
  27. data/lib/milk_tea/core/c_backend/aggregate_utils.rb +147 -84
  28. data/lib/milk_tea/core/c_backend/control_flow_emission.rb +394 -396
  29. data/lib/milk_tea/core/c_backend/expressions.rb +489 -476
  30. data/lib/milk_tea/core/c_backend/feature_detection.rb +446 -437
  31. data/lib/milk_tea/core/c_backend/format_helpers.rb +0 -2
  32. data/lib/milk_tea/core/c_backend/reachability.rb +339 -341
  33. data/lib/milk_tea/core/c_backend/reinterpret.rb +231 -217
  34. data/lib/milk_tea/core/c_backend/runtime_helpers.rb +531 -526
  35. data/lib/milk_tea/core/c_backend/statements.rb +528 -530
  36. data/lib/milk_tea/core/c_backend/type_collectors.rb +1344 -1346
  37. data/lib/milk_tea/core/c_backend/type_declaration.rb +215 -213
  38. data/lib/milk_tea/core/c_backend/type_system.rb +347 -349
  39. data/lib/milk_tea/core/c_backend.rb +17 -9
  40. data/lib/milk_tea/core/compatibility_helpers.rb +0 -2
  41. data/lib/milk_tea/core/compile_time/const_eval.rb +7 -12
  42. data/lib/milk_tea/core/compile_time.rb +32 -38
  43. data/lib/milk_tea/core/control_flow/builder.rb +3 -5
  44. data/lib/milk_tea/core/control_flow/constant_propagation.rb +14 -17
  45. data/lib/milk_tea/core/control_flow/definite_assignment.rb +0 -1
  46. data/lib/milk_tea/core/ir.rb +10 -10
  47. data/lib/milk_tea/core/lexer/character_classes.rb +5 -7
  48. data/lib/milk_tea/core/lexer/format_strings.rb +7 -9
  49. data/lib/milk_tea/core/lexer/heredocs.rb +22 -22
  50. data/lib/milk_tea/core/lexer/indentation.rb +0 -2
  51. data/lib/milk_tea/core/lexer/numbers.rb +0 -2
  52. data/lib/milk_tea/core/lexer/recovery.rb +0 -2
  53. data/lib/milk_tea/core/lexer/strings.rb +0 -2
  54. data/lib/milk_tea/core/lexer/symbols.rb +0 -2
  55. data/lib/milk_tea/core/lexer/trivia.rb +0 -2
  56. data/lib/milk_tea/core/lexer.rb +0 -2
  57. data/lib/milk_tea/core/lowering/async/analysis.rb +0 -2
  58. data/lib/milk_tea/core/lowering/async/lowering.rb +1264 -1265
  59. data/lib/milk_tea/core/lowering/async/normalization.rb +0 -2
  60. data/lib/milk_tea/core/lowering/async.rb +627 -630
  61. data/lib/milk_tea/core/lowering/block.rb +413 -416
  62. data/lib/milk_tea/core/lowering/calls.rb +1381 -1384
  63. data/lib/milk_tea/core/lowering/declarations.rb +180 -183
  64. data/lib/milk_tea/core/lowering/dyn.rb +48 -50
  65. data/lib/milk_tea/core/lowering/events.rb +983 -985
  66. data/lib/milk_tea/core/lowering/expressions.rb +1513 -1518
  67. data/lib/milk_tea/core/lowering/foreign_cstr.rb +181 -184
  68. data/lib/milk_tea/core/lowering/functions.rb +185 -188
  69. data/lib/milk_tea/core/lowering/loops.rb +1028 -1031
  70. data/lib/milk_tea/core/lowering/proc.rb +363 -366
  71. data/lib/milk_tea/core/lowering/resolve.rb +2133 -2135
  72. data/lib/milk_tea/core/lowering/scans.rb +179 -181
  73. data/lib/milk_tea/core/lowering/str_buffer.rb +102 -105
  74. data/lib/milk_tea/core/lowering/utils.rb +1040 -1044
  75. data/lib/milk_tea/core/lowering.rb +5 -7
  76. data/lib/milk_tea/core/module_binder.rb +0 -2
  77. data/lib/milk_tea/core/module_loader/errors.rb +4 -2
  78. data/lib/milk_tea/core/module_loader.rb +113 -20
  79. data/lib/milk_tea/core/module_path_resolver.rb +0 -2
  80. data/lib/milk_tea/core/module_roots.rb +6 -8
  81. data/lib/milk_tea/core/parser/attributes.rb +0 -2
  82. data/lib/milk_tea/core/parser/blocks.rb +0 -2
  83. data/lib/milk_tea/core/parser/declarations.rb +0 -2
  84. data/lib/milk_tea/core/parser/expressions.rb +31 -14
  85. data/lib/milk_tea/core/parser/recovery.rb +0 -2
  86. data/lib/milk_tea/core/parser/statements.rb +0 -2
  87. data/lib/milk_tea/core/parser/types.rb +8 -10
  88. data/lib/milk_tea/core/parser.rb +1 -3
  89. data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +31 -33
  90. data/lib/milk_tea/core/pretty_printer/base_formatter.rb +0 -2
  91. data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +0 -2
  92. data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +0 -2
  93. data/lib/milk_tea/core/semantic_analyzer/attributes.rb +14 -16
  94. data/lib/milk_tea/core/semantic_analyzer/calls.rb +0 -2
  95. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +1 -14
  96. data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +18 -21
  97. data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +0 -3
  98. data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +12 -15
  99. data/lib/milk_tea/core/semantic_analyzer/generics.rb +57 -59
  100. data/lib/milk_tea/core/semantic_analyzer/interface_conformance.rb +0 -2
  101. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +5 -9
  102. data/lib/milk_tea/core/semantic_analyzer/nullability.rb +0 -3
  103. data/lib/milk_tea/core/semantic_analyzer/statements.rb +35 -40
  104. data/lib/milk_tea/core/semantic_analyzer/top_level.rb +10 -12
  105. data/lib/milk_tea/core/semantic_analyzer/type_compatibility.rb +0 -6
  106. data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +102 -105
  107. data/lib/milk_tea/core/semantic_analyzer.rb +17 -8
  108. data/lib/milk_tea/core/types/layout.rb +21 -22
  109. data/lib/milk_tea/core/types/predicates.rb +0 -2
  110. data/lib/milk_tea/core/types/registry.rb +16 -18
  111. data/lib/milk_tea/core/types/visitor.rb +0 -4
  112. data/lib/milk_tea/dap/backends/lldb_dap.rb +0 -2
  113. data/lib/milk_tea/dap/protocol.rb +1 -1
  114. data/lib/milk_tea/dap/server/breakpoints.rb +0 -2
  115. data/lib/milk_tea/dap/server/debug_map.rb +0 -2
  116. data/lib/milk_tea/dap/server/handlers.rb +0 -2
  117. data/lib/milk_tea/dap/server/launch.rb +0 -2
  118. data/lib/milk_tea/dap/server/lldb_backend.rb +8 -10
  119. data/lib/milk_tea/dap/server/pause_diagnostics.rb +14 -16
  120. data/lib/milk_tea/dap/server/utilities.rb +0 -2
  121. data/lib/milk_tea/dap/server/wire.rb +0 -2
  122. data/lib/milk_tea/dap/server.rb +0 -2
  123. data/lib/milk_tea/lsp/diagnostics.rb +16 -16
  124. data/lib/milk_tea/lsp/server/call_hierarchy.rb +11 -12
  125. data/lib/milk_tea/lsp/server/code_actions.rb +355 -357
  126. data/lib/milk_tea/lsp/server/code_lens.rb +23 -25
  127. data/lib/milk_tea/lsp/server/completion.rb +873 -875
  128. data/lib/milk_tea/lsp/server/configuration.rb +129 -131
  129. data/lib/milk_tea/lsp/server/debug_info.rb +0 -2
  130. data/lib/milk_tea/lsp/server/definition.rb +564 -565
  131. data/lib/milk_tea/lsp/server/diagnostics_scheduling.rb +191 -193
  132. data/lib/milk_tea/lsp/server/execute_command.rb +0 -2
  133. data/lib/milk_tea/lsp/server/folding_range.rb +0 -4
  134. data/lib/milk_tea/lsp/server/formatting.rb +478 -480
  135. data/lib/milk_tea/lsp/server/hover.rb +1282 -1284
  136. data/lib/milk_tea/lsp/server/inlay_hints.rb +179 -181
  137. data/lib/milk_tea/lsp/server/lifecycle.rb +192 -194
  138. data/lib/milk_tea/lsp/server/linked_editing_range.rb +0 -2
  139. data/lib/milk_tea/lsp/server/on_type_formatting.rb +0 -2
  140. data/lib/milk_tea/lsp/server/progress.rb +0 -2
  141. data/lib/milk_tea/lsp/server/references.rb +316 -318
  142. data/lib/milk_tea/lsp/server/rename.rb +445 -447
  143. data/lib/milk_tea/lsp/server/selection_range.rb +0 -4
  144. data/lib/milk_tea/lsp/server/semantic_tokens.rb +1318 -1320
  145. data/lib/milk_tea/lsp/server/signature_help.rb +146 -148
  146. data/lib/milk_tea/lsp/server/text_documents.rb +99 -101
  147. data/lib/milk_tea/lsp/server/type_hierarchy.rb +2 -4
  148. data/lib/milk_tea/lsp/server/utilities.rb +397 -399
  149. data/lib/milk_tea/lsp/server.rb +0 -3
  150. data/lib/milk_tea/lsp/workspace/analysis.rb +40 -42
  151. data/lib/milk_tea/lsp/workspace/dependency_graph.rb +4 -10
  152. data/lib/milk_tea/lsp/workspace/utilities.rb +19 -19
  153. data/lib/milk_tea/packages/atomic_write.rb +4 -5
  154. data/lib/milk_tea/packages/dependency_solver.rb +15 -15
  155. data/lib/milk_tea/packages/lock.rb +4 -4
  156. data/lib/milk_tea/packages/manager_cli.rb +1 -1
  157. data/lib/milk_tea/packages/manifest.rb +3 -3
  158. data/lib/milk_tea/packages/registry_store.rb +4 -6
  159. data/lib/milk_tea/packages/services.rb +16 -16
  160. data/lib/milk_tea/packages/source_cache.rb +4 -6
  161. data/lib/milk_tea/packages/source_resolver.rb +44 -44
  162. data/lib/milk_tea/packages/version.rb +8 -8
  163. data/lib/milk_tea/tooling/build.rb +3 -7
  164. data/lib/milk_tea/tooling/build_cache.rb +0 -2
  165. data/lib/milk_tea/tooling/debug_info_formatter.rb +31 -33
  166. data/lib/milk_tea/tooling/debug_map.rb +8 -10
  167. data/lib/milk_tea/tooling/docs_app.rb +0 -2
  168. data/lib/milk_tea/tooling/linter/doc_tags.rb +25 -27
  169. data/lib/milk_tea/tooling/linter/fix_engine.rb +87 -24
  170. data/lib/milk_tea/tooling/linter/flow_rules.rb +44 -46
  171. data/lib/milk_tea/tooling/linter/imports_platform.rb +14 -16
  172. data/lib/milk_tea/tooling/linter/release_rules.rb +3 -5
  173. data/lib/milk_tea/tooling/linter/reserved_names.rb +23 -25
  174. data/lib/milk_tea/tooling/linter/rules.rb +87 -89
  175. data/lib/milk_tea/tooling/linter/source_helpers.rb +40 -42
  176. data/lib/milk_tea/tooling/linter/trailing_comma.rb +17 -19
  177. data/lib/milk_tea/tooling/linter/visitors.rb +162 -50
  178. data/lib/milk_tea/tooling/linter.rb +0 -2
  179. data/lib/milk_tea/tooling/project_scaffold.rb +0 -2
  180. data/lib/milk_tea/tooling/run.rb +0 -2
  181. data/lib/milk_tea/tooling/toolchain_cli.rb +0 -2
  182. data/std/cli.mt +13 -32
  183. data/std/color.mt +28 -28
  184. data/std/encoding.mt +4 -4
  185. data/std/graph.mt +1 -2
  186. data/std/hash.mt +14 -14
  187. data/std/http/server.mt +3 -3
  188. data/std/input.mt +1 -1
  189. data/std/json.mt +1 -1
  190. data/std/linear_algebra.mt +6 -6
  191. data/std/net/mux.mt +1 -1
  192. data/std/noise.mt +23 -23
  193. data/std/parse.mt +2 -2
  194. data/std/process.mt +3 -4
  195. data/std/sparse_set.mt +1 -1
  196. data/std/steering.mt +5 -5
  197. data/std/str.mt +1 -1
  198. data/std/tween.mt +4 -4
  199. data/std/utility.mt +3 -3
  200. metadata +2 -2
@@ -3,18 +3,16 @@
3
3
  module MilkTea
4
4
  class Linter
5
5
  module LinterSourceHelpers
6
- private
7
-
8
6
  def emit_line_too_long_warnings
9
7
  return unless @max_line_length.positive?
10
8
  return if @source.empty?
11
-
9
+
12
10
  @source_lines.each_with_index do |line, index|
13
11
  next if line.empty?
14
12
  next if external_or_foreign_function_header_line?(line)
15
13
  next unless line.length > @max_line_length
16
14
  next unless Formatter.wrappable_long_line_candidate_text?(line)
17
-
15
+
18
16
  fix = Formatter.build_long_line_wrap_fix(
19
17
  @source,
20
18
  index,
@@ -43,11 +41,11 @@ module MilkTea
43
41
  def emit_event_capacity_warnings(source_file)
44
42
  each_event_declaration(source_file) do |event_decl, owner_name|
45
43
  next unless event_decl.capacity >= EVENT_STACK_SNAPSHOT_WARNING_THRESHOLD
46
-
44
+
47
45
  warn_large_event_capacity(event_decl, owner_name:)
48
46
  end
49
47
  end
50
-
48
+
51
49
  def each_event_declaration(source_file)
52
50
  source_file.declarations.each do |declaration|
53
51
  case declaration
@@ -71,60 +69,60 @@ module MilkTea
71
69
  end
72
70
  def profile_phase(name)
73
71
  return yield unless @profile
74
-
72
+
75
73
  @profile.measure(name) { yield }
76
74
  end
77
75
  def param_line(param, fallback: nil)
78
- line = param.respond_to?(:line) ? param.line : nil
76
+ line = param.line
79
77
  line || fallback
80
78
  end
81
-
79
+
82
80
  def param_column(param)
83
- param.respond_to?(:column) ? param.column : nil
81
+ param.column
84
82
  end
85
-
83
+
86
84
  def declaration_column(declaration)
87
- declaration.respond_to?(:column) ? declaration.column : nil
85
+ declaration.column
88
86
  end
89
87
  def source_line_text(line)
90
88
  return nil unless line && line >= 1 && line <= @source_lines.length
91
-
89
+
92
90
  @source_lines[line - 1]
93
91
  end
94
-
92
+
95
93
  def source_code_line(line)
96
94
  text = source_line_text(line)
97
95
  return nil unless text
98
-
96
+
99
97
  text.rstrip
100
98
  end
101
-
99
+
102
100
  def source_statement_span(line)
103
101
  text = source_code_line(line)
104
102
  return nil unless text
105
-
103
+
106
104
  start_index = text.index(/\S/)
107
105
  return nil unless start_index
108
-
106
+
109
107
  [start_index + 1, text.length - start_index]
110
108
  end
111
109
  def source_condition_span(line, keyword_pattern:)
112
110
  text = source_code_line(line)
113
111
  return nil unless text
114
-
112
+
115
113
  match = text.match(/\A\s*(?:#{keyword_pattern})\s+(.*?)\s*:/)
116
114
  return nil unless match
117
-
115
+
118
116
  condition = match[1].rstrip
119
117
  return nil if condition.empty?
120
-
118
+
121
119
  [match.begin(1) + 1, condition.length]
122
120
  end
123
121
  def expression_line(expr)
124
122
  return nil unless expr
125
-
126
- return expr.line if expr.respond_to?(:line) && expr.line
127
-
123
+
124
+ return expr.line if expr.line
125
+
128
126
  case expr
129
127
  when AST::BinaryOp
130
128
  expression_line(expr.left) || expression_line(expr.right)
@@ -156,14 +154,14 @@ module MilkTea
156
154
  nil
157
155
  end
158
156
  end
159
-
157
+
160
158
  def expression_column(expr)
161
159
  return nil unless expr
162
-
163
- if expr.respond_to?(:column) && expr.column
160
+
161
+ if expr.column
164
162
  return expr.column
165
163
  end
166
-
164
+
167
165
  case expr
168
166
  when AST::BinaryOp
169
167
  expression_column(expr.left) || expression_column(expr.right)
@@ -191,10 +189,10 @@ module MilkTea
191
189
  nil
192
190
  end
193
191
  end
194
-
192
+
195
193
  def expression_length(expr)
196
194
  return nil unless expr
197
-
195
+
198
196
  case expr
199
197
  when AST::Identifier
200
198
  expr.name.length
@@ -225,14 +223,14 @@ module MilkTea
225
223
  1
226
224
  end
227
225
  end
228
-
226
+
229
227
  def statement_column(statement)
230
228
  return nil unless statement
231
-
232
- if statement.respond_to?(:column) && statement.column
229
+
230
+ if statement.column
233
231
  return statement.column
234
232
  end
235
-
233
+
236
234
  case statement
237
235
  when AST::IfStmt
238
236
  statement.branches.first&.column || statement.else_column
@@ -250,14 +248,14 @@ module MilkTea
250
248
  nil
251
249
  end
252
250
  end
253
-
251
+
254
252
  def statement_length(statement)
255
253
  return nil unless statement
256
-
254
+
257
255
  if statement.respond_to?(:length) && statement.length
258
256
  return statement.length
259
257
  end
260
-
258
+
261
259
  case statement
262
260
  when AST::LocalDecl, AST::ForStmt
263
261
  statement.name.length
@@ -277,7 +275,7 @@ module MilkTea
277
275
  nil
278
276
  end
279
277
  end
280
-
278
+
281
279
  def condition_span(expr, line:, keyword_pattern:)
282
280
  source_span = source_condition_span(line, keyword_pattern:)
283
281
  if source_span
@@ -286,7 +284,7 @@ module MilkTea
286
284
  [expression_line(expr) || line, expression_column(expr), expression_length(expr)]
287
285
  end
288
286
  end
289
-
287
+
290
288
  def condition_symbol_name(expr)
291
289
  case expr
292
290
  when AST::Identifier
@@ -344,10 +342,10 @@ module MilkTea
344
342
  statement.body.each { |s| each_statement_expression(s, &block) }
345
343
  end
346
344
  end
347
-
345
+
348
346
  def walk_expression_tree(expression, &block)
349
347
  return unless expression
350
-
348
+
351
349
  yield expression
352
350
  case expression
353
351
  when AST::MemberAccess
@@ -386,7 +384,7 @@ module MilkTea
386
384
  end
387
385
  def walk_statement_lists(stmts, &block)
388
386
  return if stmts.nil? || stmts.empty?
389
-
387
+
390
388
  yield stmts
391
389
  stmts.each do |statement|
392
390
  case statement
@@ -3,17 +3,15 @@
3
3
  module MilkTea
4
4
  class Linter
5
5
  module LinterTrailingComma
6
- private
7
-
8
6
  def emit_trailing_list_comma_warnings(source_file)
9
7
  return if @tokens.nil? || @tokens.empty?
10
-
8
+
11
9
  warned_sites = Set.new
12
10
  each_call_argument_list_candidate(source_file) do |call_expression, symbol_name|
13
11
  site = trailing_call_argument_comma_site(call_expression)
14
12
  next unless site
15
13
  next if warned_sites.include?(site)
16
-
14
+
17
15
  warned_sites << site
18
16
  @warnings << Warning.new(
19
17
  path: @path,
@@ -27,7 +25,7 @@ module MilkTea
27
25
  )
28
26
  end
29
27
  end
30
-
28
+
31
29
  def each_call_argument_list_candidate(source_file, &block)
32
30
  source_file.declarations.each do |declaration|
33
31
  case declaration
@@ -40,29 +38,29 @@ module MilkTea
40
38
  end
41
39
  end
42
40
  end
43
-
41
+
44
42
  def each_call_in_statement_list(stmts, &block)
45
43
  walk_statement_lists(stmts) do |statement_list|
46
44
  statement_list.each do |statement|
47
45
  each_statement_expression(statement) do |expression|
48
46
  next unless expression.is_a?(AST::Call)
49
47
  next if expression.arguments.nil? || expression.arguments.empty?
50
-
48
+
51
49
  block.call(expression, call_symbol_name(expression.callee))
52
50
  end
53
51
  end
54
52
  end
55
53
  end
56
-
54
+
57
55
  def each_call_in_expression(expression, &block)
58
56
  walk_expression_tree(expression) do |node|
59
57
  next unless node.is_a?(AST::Call)
60
58
  next if node.arguments.nil? || node.arguments.empty?
61
-
59
+
62
60
  block.call(node, call_symbol_name(node.callee))
63
61
  end
64
62
  end
65
-
63
+
66
64
  def call_symbol_name(callee)
67
65
  case callee
68
66
  when AST::Identifier
@@ -75,18 +73,18 @@ module MilkTea
75
73
  nil
76
74
  end
77
75
  end
78
-
76
+
79
77
  def trailing_call_argument_comma_site(call_expression)
80
78
  return nil unless call_expression.is_a?(AST::Call)
81
79
  return nil if call_expression.arguments.nil? || call_expression.arguments.empty?
82
-
80
+
83
81
  callee_line = expression_line(call_expression.callee)
84
82
  callee_column = expression_column(call_expression.callee)
85
83
  return nil unless callee_line && callee_column
86
-
84
+
87
85
  callee_token_idx = @token_index_by_location[[callee_line, callee_column]]
88
86
  return nil unless callee_token_idx
89
-
87
+
90
88
  lparen_idx = nil
91
89
  cursor = callee_token_idx
92
90
  while cursor < @tokens.length
@@ -96,16 +94,16 @@ module MilkTea
96
94
  break
97
95
  end
98
96
  break if token.type == :newline && token.line > callee_line
99
-
97
+
100
98
  cursor += 1
101
99
  end
102
100
  return nil unless lparen_idx
103
-
101
+
104
102
  paren_depth = 0
105
103
  bracket_depth = 0
106
104
  comma_token = nil
107
105
  cursor = lparen_idx + 1
108
-
106
+
109
107
  while cursor < @tokens.length
110
108
  token = @tokens[cursor]
111
109
  case token.type
@@ -114,7 +112,7 @@ module MilkTea
114
112
  when :rparen
115
113
  if paren_depth.zero? && bracket_depth.zero?
116
114
  return [comma_token.line, comma_token.column] if comma_token
117
-
115
+
118
116
  return nil
119
117
  end
120
118
  paren_depth -= 1 if paren_depth.positive?
@@ -131,7 +129,7 @@ module MilkTea
131
129
  end
132
130
  cursor += 1
133
131
  end
134
-
132
+
135
133
  nil
136
134
  end
137
135
  end