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
@@ -255,9 +255,6 @@ module MilkTea
255
255
  raise
256
256
  end
257
257
 
258
-
259
- private
260
-
261
258
  include ServerCallHierarchy
262
259
  include ServerCodeActions
263
260
  include ServerCodeLens
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module LSP
5
5
  class Workspace
6
6
  module WorkspaceAnalysis
7
- private
8
-
9
7
  # ── Compilation helpers ─────────────────────────────────────────────────
10
8
 
11
9
  def lex_document(uri)
@@ -127,46 +125,46 @@ module MilkTea
127
125
  def analyze_document(uri)
128
126
  path = uri_to_path(uri)
129
127
  snapshot = if path && File.file?(path)
130
- parse_result = MilkTea::Parser.parse_collecting_errors(get_content(uri), path: uri)
131
- ast = parse_result.ast
132
- return @last_good_tooling_snapshot_cache[uri] if ast.nil?
133
-
134
- @ast_cache[uri] = ast
135
-
136
- resolution = DependencyResolution.resolve(path, mode: @dependency_resolution_mode)
137
- return nil unless resolution.ok?
138
-
139
- effective_platform = effective_platform_for_path(path)
140
- ensure_root_platform_compatible!(path, effective_platform)
141
-
142
- loader = MilkTea::ModuleLoader.new(
143
- module_roots: module_roots_for_path(path, locked: resolution.locked),
144
- package_graph: package_graph_for_path(path, locked: resolution.locked),
145
- shared_cache: @shared_module_cache,
146
- source_overrides: file_backed_source_overrides,
147
- platform: effective_platform,
148
- )
149
- ast = with_inferred_module_name(ast, loader:, path:)
150
- import_resolution = loader.imported_modules_for_ast_collecting_errors(ast, importer_path: path)
151
- MilkTea::SemanticAnalyzer.tooling_snapshot(
152
- ast,
153
- imported_modules: import_resolution.modules,
154
- allow_missing_imports: true,
155
- path: path,
156
- )
157
- else
158
- ast = get_ast(uri)
159
- return @last_good_tooling_snapshot_cache[uri] if ast.nil?
160
-
161
- result = MilkTea::SemanticAnalyzer.check_collecting_errors(ast, path:)
162
- facts = result[:analysis]
163
- MilkTea::SemanticAnalyzer::ToolingSnapshot.new(facts:, diagnostics: (Array(result[:errors]).map { |e| e.to_diagnostic(path:) } || []).freeze)
164
- end
165
- if snapshot&.facts
166
- @last_good_tooling_snapshot_cache[uri] = snapshot
167
- @last_good_facts_cache[uri] = snapshot.facts
168
- @document_module_names[uri] = snapshot.facts.module_name
169
- end
128
+ parse_result = MilkTea::Parser.parse_collecting_errors(get_content(uri), path: uri)
129
+ ast = parse_result.ast
130
+ return @last_good_tooling_snapshot_cache[uri] if ast.nil?
131
+
132
+ @ast_cache[uri] = ast
133
+
134
+ resolution = DependencyResolution.resolve(path, mode: @dependency_resolution_mode)
135
+ return nil unless resolution.ok?
136
+
137
+ effective_platform = effective_platform_for_path(path)
138
+ ensure_root_platform_compatible!(path, effective_platform)
139
+
140
+ loader = MilkTea::ModuleLoader.new(
141
+ module_roots: module_roots_for_path(path, locked: resolution.locked),
142
+ package_graph: package_graph_for_path(path, locked: resolution.locked),
143
+ shared_cache: @shared_module_cache,
144
+ source_overrides: file_backed_source_overrides,
145
+ platform: effective_platform,
146
+ )
147
+ ast = with_inferred_module_name(ast, loader:, path:)
148
+ import_resolution = loader.imported_modules_for_ast_collecting_errors(ast, importer_path: path)
149
+ MilkTea::SemanticAnalyzer.tooling_snapshot(
150
+ ast,
151
+ imported_modules: import_resolution.modules,
152
+ allow_missing_imports: true,
153
+ path: path,
154
+ )
155
+ else
156
+ ast = get_ast(uri)
157
+ return @last_good_tooling_snapshot_cache[uri] if ast.nil?
158
+
159
+ result = MilkTea::SemanticAnalyzer.check_collecting_errors(ast, path:)
160
+ facts = result[:analysis]
161
+ MilkTea::SemanticAnalyzer::ToolingSnapshot.new(facts:, diagnostics: (Array(result[:errors]).map { |e| e.to_diagnostic(path:) } || []).freeze)
162
+ end
163
+ if snapshot&.facts
164
+ @last_good_tooling_snapshot_cache[uri] = snapshot
165
+ @last_good_facts_cache[uri] = snapshot.facts
166
+ @document_module_names[uri] = snapshot.facts.module_name
167
+ end
170
168
  snapshot
171
169
  rescue MilkTea::LexError, MilkTea::SemanticError, ModuleLoadError, PackageLockError
172
170
  @last_good_tooling_snapshot_cache[uri]
@@ -100,8 +100,6 @@ module MilkTea
100
100
  end
101
101
  end
102
102
 
103
- private
104
-
105
103
  def clear_dependency_index
106
104
  @dependency_module_name_by_uri.clear
107
105
  @dependency_imports_by_uri.clear
@@ -111,10 +109,10 @@ module MilkTea
111
109
 
112
110
  def update_dependency_index(uri, facts)
113
111
  imported_module_names = if facts
114
- facts.imports.each_value.filter_map(&:name).to_set
115
- else
116
- dependency_index_imports_for(uri)
117
- end
112
+ facts.imports.each_value.filter_map(&:name).to_set
113
+ else
114
+ dependency_index_imports_for(uri)
115
+ end
118
116
 
119
117
  if imported_module_names&.empty?
120
118
  imported_module_names = dependency_index_imports_for(uri) || Set.new
@@ -246,15 +244,11 @@ module MilkTea
246
244
  open_document_uris
247
245
  end
248
246
 
249
- public
250
-
251
247
  def reverse_import_dependents_for(module_name)
252
248
  ensure_full_reverse_import_index
253
249
  @reverse_import_dependents[module_name]
254
250
  end
255
251
 
256
- private
257
-
258
252
  def ensure_full_reverse_import_index
259
253
  return if @full_reverse_index_built
260
254
 
@@ -265,21 +265,21 @@ module MilkTea
265
265
  next unless id_tok.type == :identifier
266
266
 
267
267
  kind = case kw_tok.type
268
- when :function then 'function'
269
- when :struct then 'struct'
270
- when :union then 'union'
271
- when :enum then 'enum'
272
- when :flags then 'flags'
273
- when :variant then 'variant'
274
- when :type then 'type_alias'
275
- when :const then 'constant'
276
- when :let then 'variable'
277
- when :var then 'variable'
278
- when :event then 'event'
279
- when :extending then 'struct'
280
- when :opaque then 'struct'
281
- when :interface then 'interface'
282
- end
268
+ when :function then 'function'
269
+ when :struct then 'struct'
270
+ when :union then 'union'
271
+ when :enum then 'enum'
272
+ when :flags then 'flags'
273
+ when :variant then 'variant'
274
+ when :type then 'type_alias'
275
+ when :const then 'constant'
276
+ when :let then 'variable'
277
+ when :var then 'variable'
278
+ when :event then 'event'
279
+ when :extending then 'struct'
280
+ when :opaque then 'struct'
281
+ when :interface then 'interface'
282
+ end
283
283
 
284
284
  symbols << {
285
285
  name: id_tok.lexeme,
@@ -447,10 +447,10 @@ module MilkTea
447
447
  clamped_line = [[line.to_i, 0].max, lines.length - 1].min
448
448
 
449
449
  preceding = if clamped_line.zero?
450
- ''
451
- else
452
- lines[0...clamped_line].join("\n") + "\n"
453
- end
450
+ ''
451
+ else
452
+ lines[0...clamped_line].join("\n") + "\n"
453
+ end
454
454
 
455
455
  line_text = lines[clamped_line] || ''
456
456
  target_units = [char.to_i, 0].max
@@ -5,15 +5,14 @@ require "tempfile"
5
5
 
6
6
  module MilkTea
7
7
  module PackageAtomicWrite
8
- module_function
9
8
 
10
- def write(path, content, binmode: false)
9
+ def self.write(path, content, binmode: false)
11
10
  open(path, binmode:) do |file|
12
11
  file.write(content)
13
12
  end
14
13
  end
15
14
 
16
- def open(path, binmode: false)
15
+ def self.open(path, binmode: false)
17
16
  expanded_path = File.expand_path(path)
18
17
  directory = File.dirname(expanded_path)
19
18
 
@@ -35,13 +34,13 @@ module MilkTea
35
34
  expanded_path
36
35
  end
37
36
 
38
- def replace(source_path, destination_path)
37
+ def self.replace(source_path, destination_path)
39
38
  File.rename(source_path, destination_path)
40
39
  rescue Errno::EACCES, Errno::EEXIST, Errno::EPERM
41
40
  replace_via_backup(source_path, destination_path)
42
41
  end
43
42
 
44
- def replace_via_backup(source_path, destination_path)
43
+ def self.replace_via_backup(source_path, destination_path)
45
44
  backup_path = "#{destination_path}.bak.#{$$}.#{Thread.current.object_id}"
46
45
 
47
46
  File.rename(destination_path, backup_path) if File.exist?(destination_path)
@@ -171,21 +171,21 @@ module MilkTea
171
171
 
172
172
  versions.each_with_object({}) do |(key, version), locked|
173
173
  normalized_key = case key
174
- when PackageSourceResolver::RegistryDependencyKey
175
- PackageSourceResolver.registry_dependency_key(
176
- parent_source_key: key.parent_source_key,
177
- dependency_name: key.dependency_name,
178
- )
179
- when Array
180
- if key.length != 2
181
- raise PackageDependencySolverError,
182
- "registry dependency key must contain parent manifest path and dependency name"
183
- end
184
-
185
- PackageSourceResolver.registry_dependency_key(parent_source_key: key[0], dependency_name: key[1])
186
- else
187
- key.to_s
188
- end
174
+ when PackageSourceResolver::RegistryDependencyKey
175
+ PackageSourceResolver.registry_dependency_key(
176
+ parent_source_key: key.parent_source_key,
177
+ dependency_name: key.dependency_name,
178
+ )
179
+ when Array
180
+ if key.length != 2
181
+ raise PackageDependencySolverError,
182
+ "registry dependency key must contain parent manifest path and dependency name"
183
+ end
184
+
185
+ PackageSourceResolver.registry_dependency_key(parent_source_key: key[0], dependency_name: key[1])
186
+ else
187
+ key.to_s
188
+ end
189
189
 
190
190
  locked[normalized_key] = version.to_s
191
191
  end
@@ -137,10 +137,10 @@ module MilkTea
137
137
  end
138
138
 
139
139
  root_package_id = if schema_version == 1
140
- root_package_name
141
- else
142
- required_string(config, "root_package_id", lock_path)
143
- end
140
+ root_package_name
141
+ else
142
+ required_string(config, "root_package_id", lock_path)
143
+ end
144
144
 
145
145
  [root_manifest, lock_path, root_package_name, root_package_id, schema_version, packages]
146
146
  end
@@ -341,7 +341,7 @@ module MilkTea
341
341
  end
342
342
  selected_ids = Set.new
343
343
  queue = locked_packages.select { |package| requested_names.include?(package.package_name) }
344
- .map(&:instance_id)
344
+ .map(&:instance_id)
345
345
 
346
346
  until queue.empty?
347
347
  package_id = queue.shift
@@ -135,9 +135,9 @@ module MilkTea
135
135
  end
136
136
 
137
137
  duplicate_basenames = asset_paths.group_by { |asset_path| File.basename(asset_path) }
138
- .select { |_basename, paths| paths.length > 1 }
139
- .keys
140
- .sort
138
+ .select { |_basename, paths| paths.length > 1 }
139
+ .keys
140
+ .sort
141
141
  return asset_paths if duplicate_basenames.empty?
142
142
 
143
143
  raise PackageManifestError, "build.assets entries must have unique basenames: #{duplicate_basenames.join(", ")}"
@@ -21,10 +21,10 @@ module MilkTea
21
21
 
22
22
  xdg_data_home = env.fetch("XDG_DATA_HOME", "").to_s.strip
23
23
  base_root = if xdg_data_home.empty?
24
- File.join(home || Dir.home, ".local", "share")
25
- else
26
- File.expand_path(xdg_data_home)
27
- end
24
+ File.join(home || Dir.home, ".local", "share")
25
+ else
26
+ File.expand_path(xdg_data_home)
27
+ end
28
28
 
29
29
  File.join(base_root, "milk_tea", "registry")
30
30
  end
@@ -155,8 +155,6 @@ module MilkTea
155
155
  self.class.http_url?(@upstream_root)
156
156
  end
157
157
 
158
- private
159
-
160
158
  def extract_package_version(package_or_identity, version)
161
159
  if package_or_identity.respond_to?(:package_name) && package_or_identity.respond_to?(:version)
162
160
  [package_or_identity.package_name, package_or_identity.version]
@@ -20,22 +20,22 @@ module MilkTea
20
20
 
21
21
  def source_resolver(mode)
22
22
  @source_resolvers[mode] ||= case mode
23
- when :reject
24
- PackageSourceResolver.new(source_cache: source_cache)
25
- when :cache
26
- PackageSourceResolver.new(
27
- source_cache: source_cache,
28
- remote_resolution: :cache,
29
- )
30
- when :materialize
31
- PackageSourceResolver.new(
32
- source_cache: source_cache,
33
- remote_resolution: :materialize,
34
- source_fetcher: source_fetcher,
35
- )
36
- else
37
- raise ArgumentError, "unknown dependency source resolution mode #{mode.inspect}"
38
- end
23
+ when :reject
24
+ PackageSourceResolver.new(source_cache: source_cache)
25
+ when :cache
26
+ PackageSourceResolver.new(
27
+ source_cache: source_cache,
28
+ remote_resolution: :cache,
29
+ )
30
+ when :materialize
31
+ PackageSourceResolver.new(
32
+ source_cache: source_cache,
33
+ remote_resolution: :materialize,
34
+ source_fetcher: source_fetcher,
35
+ )
36
+ else
37
+ raise ArgumentError, "unknown dependency source resolution mode #{mode.inspect}"
38
+ end
39
39
  end
40
40
  end
41
41
  end
@@ -7,10 +7,10 @@ module MilkTea
7
7
  def self.default_root(env: ENV, home: nil)
8
8
  xdg_cache_home = env.fetch("XDG_CACHE_HOME", "").to_s.strip
9
9
  base_root = if xdg_cache_home.empty?
10
- File.join(home || Dir.home, ".cache")
11
- else
12
- File.expand_path(xdg_cache_home)
13
- end
10
+ File.join(home || Dir.home, ".cache")
11
+ else
12
+ File.expand_path(xdg_cache_home)
13
+ end
14
14
 
15
15
  File.join(base_root, "milk_tea", "package_sources")
16
16
  end
@@ -58,8 +58,6 @@ module MilkTea
58
58
  File.file?(manifest_path_for(source_or_identity))
59
59
  end
60
60
 
61
- private
62
-
63
61
  def extract_identity(source_or_identity)
64
62
  if source_or_identity.respond_to?(:identity)
65
63
  source_or_identity.identity
@@ -284,22 +284,22 @@ module MilkTea
284
284
  def resolve_cache_backed_dependency(identity, dependency:, parent_manifest:)
285
285
  context_label = "dependency #{dependency.name} in #{parent_manifest.manifest_path}"
286
286
  source = case @remote_resolution
287
- when :reject
288
- raise PackageSourceResolverError,
289
- "#{context_label} uses #{identity.kind} resolution, but live dependency resolution only supports local path dependencies; run mtc deps lock and then use --locked or --frozen"
290
- when :cache
291
- source_for_identity(identity, context_label)
292
- when :materialize
293
- unless @source_fetcher
294
- raise PackageSourceResolverError,
295
- "#{context_label} requested #{identity.kind} materialization without a package source fetcher"
296
- end
297
-
298
- @source_fetcher.materialize_identity(package_name: dependency.name, identity:)
299
- source_for_identity(identity, context_label)
300
- else
301
- raise PackageSourceResolverError, "unknown remote resolution mode #{@remote_resolution.inspect}"
302
- end
287
+ when :reject
288
+ raise PackageSourceResolverError,
289
+ "#{context_label} uses #{identity.kind} resolution, but live dependency resolution only supports local path dependencies; run mtc deps lock and then use --locked or --frozen"
290
+ when :cache
291
+ source_for_identity(identity, context_label)
292
+ when :materialize
293
+ unless @source_fetcher
294
+ raise PackageSourceResolverError,
295
+ "#{context_label} requested #{identity.kind} materialization without a package source fetcher"
296
+ end
297
+
298
+ @source_fetcher.materialize_identity(package_name: dependency.name, identity:)
299
+ source_for_identity(identity, context_label)
300
+ else
301
+ raise PackageSourceResolverError, "unknown remote resolution mode #{@remote_resolution.inspect}"
302
+ end
303
303
 
304
304
  manifest = PackageManifest.load(source.local_root)
305
305
  if manifest.package_name != dependency.name
@@ -334,16 +334,16 @@ module MilkTea
334
334
 
335
335
  def source_for_identity(identity, context_label)
336
336
  local_root = if identity.is_a?(PathIdentity)
337
- identity.path
338
- else
339
- manifest_path = @source_cache.manifest_path_for(identity)
340
- unless File.file?(manifest_path)
341
- raise PackageSourceResolverError,
342
- "package source_kind #{identity.kind.inspect} in #{context_label} is not materialized in the source cache: expected #{manifest_path}"
343
- end
337
+ identity.path
338
+ else
339
+ manifest_path = @source_cache.manifest_path_for(identity)
340
+ unless File.file?(manifest_path)
341
+ raise PackageSourceResolverError,
342
+ "package source_kind #{identity.kind.inspect} in #{context_label} is not materialized in the source cache: expected #{manifest_path}"
343
+ end
344
344
 
345
- @source_cache.materialized_root_for(identity)
346
- end
345
+ @source_cache.materialized_root_for(identity)
346
+ end
347
347
 
348
348
  Source.new(
349
349
  identity:,
@@ -353,10 +353,10 @@ module MilkTea
353
353
 
354
354
  def registry_dependency_parent_source_key(parent_manifest:, parent_source:)
355
355
  identity = if parent_source
356
- parent_source.identity
357
- else
358
- source_for_manifest(parent_manifest).identity
359
- end
356
+ parent_source.identity
357
+ else
358
+ source_for_manifest(parent_manifest).identity
359
+ end
360
360
 
361
361
  self.class.source_key_for_identity(identity)
362
362
  end
@@ -366,21 +366,21 @@ module MilkTea
366
366
 
367
367
  versions.each_with_object({}) do |(key, version), resolved|
368
368
  normalized_key = case key
369
- when RegistryDependencyKey
370
- self.class.registry_dependency_key(
371
- parent_source_key: key.parent_source_key,
372
- dependency_name: key.dependency_name,
373
- )
374
- when Array
375
- if key.length != 2
376
- raise PackageSourceResolverError,
377
- "registry dependency key must contain parent manifest path and dependency name"
378
- end
379
-
380
- self.class.registry_dependency_key(parent_source_key: key[0], dependency_name: key[1])
381
- else
382
- key.to_s
383
- end
369
+ when RegistryDependencyKey
370
+ self.class.registry_dependency_key(
371
+ parent_source_key: key.parent_source_key,
372
+ dependency_name: key.dependency_name,
373
+ )
374
+ when Array
375
+ if key.length != 2
376
+ raise PackageSourceResolverError,
377
+ "registry dependency key must contain parent manifest path and dependency name"
378
+ end
379
+
380
+ self.class.registry_dependency_key(parent_source_key: key[0], dependency_name: key[1])
381
+ else
382
+ key.to_s
383
+ end
384
384
 
385
385
  resolved[normalized_key] = version.to_s
386
386
  end
@@ -63,14 +63,14 @@ module MilkTea
63
63
 
64
64
  def to_s
65
65
  prefix = case operator
66
- when :eq then "="
67
- when :gt then ">"
68
- when :gte then ">="
69
- when :lt then "<"
70
- when :lte then "<="
71
- else
72
- raise PackageVersionError, "unsupported package version operator #{operator.inspect}"
73
- end
66
+ when :eq then "="
67
+ when :gt then ">"
68
+ when :gte then ">="
69
+ when :lt then "<"
70
+ when :lte then "<="
71
+ else
72
+ raise PackageVersionError, "unsupported package version operator #{operator.inspect}"
73
+ end
74
74
 
75
75
  "#{prefix}#{version}"
76
76
  end
@@ -120,20 +120,18 @@ module MilkTea
120
120
  )
121
121
  end.freeze
122
122
  end
123
- private_class_method :frontend_modules
124
123
 
125
124
  def self.default_raw_bindings(root: MilkTea.root)
126
125
  require_relative "../bindings"
127
126
 
128
127
  RawBindings.default_registry(root:)
129
128
  end
130
- private_class_method :default_raw_bindings
131
129
 
132
130
  def initialize(path, output_path:, cc:, keep_c_path:, raw_bindings:, module_roots: nil, package_graph: nil, frontend: nil, debug: false, profile: nil, platform: nil, bundle: false, archive: false, no_cache: false, sanitize: false, kind: :executable, debug_guards: nil)
133
131
  @kind = case kind
134
- when :executable, :static, :shared then kind
135
- else raise BuildError, "unknown build kind #{kind}; expected executable|static|shared"
136
- end
132
+ when :executable, :static, :shared then kind
133
+ else raise BuildError, "unknown build kind #{kind}; expected executable|static|shared"
134
+ end
137
135
  @explicit_output_path = !output_path.nil?
138
136
  resolved_source = use_package_build_for?(path)
139
137
  if resolved_source
@@ -244,8 +242,6 @@ module MilkTea
244
242
  end
245
243
  end
246
244
 
247
- private
248
-
249
245
  def build_static_library
250
246
  cache = @no_cache ? nil : BuildCache.new(root: MilkTea.root)
251
247
  emit_line_directives = line_directives_required?
@@ -197,8 +197,6 @@ module MilkTea
197
197
  @shared_analysis_cache ||= {}
198
198
  end
199
199
 
200
- private
201
-
202
200
  def program_dir(key)
203
201
  File.join(@cache_root, "programs", key[0, 2], key)
204
202
  end