mt-lang 0.3.9 → 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 +8 -9
  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 +0 -2
  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 +112 -54
  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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61a19112e2810978ecf1ce56b1d1d1290a26bcb933b9e89857ffca77d1323392
4
- data.tar.gz: f68d1016a49c1cf195b5d24c430e4bbccde2c1ad9c7b82523b9e51d9f899d2b6
3
+ metadata.gz: 0eb8fe30acd589069404d9a88cba70713a36937acf80299123b7a9b5a909b5da
4
+ data.tar.gz: 3f7a0240fcfc10f0617e94fdb6d28abe40c1ffbc6bfaa12e87235f4440ffaef6
5
5
  SHA512:
6
- metadata.gz: d7ffd6ea3d812428f451bbf304662a36a05986eb7ff2ec9a207364be7f37f81d84379e40325a155fd9565885d648503c73ab34fb1e851adbb1d5e53b193d696c
7
- data.tar.gz: caa0c4acb4264740d58d857214ff68c3b726bf9a08d5f894ddc25466066e898567fd45c3b1c0e0634902be9a993acec7f1006b146af811ec0b918c778f60b234
6
+ metadata.gz: f9623980449010f1a2895f715153948845edb191cb0164b9e48b615527d6d2aa0809abae016c07fa85197628e2baf190ca08adc2c14b31934b22465b9ca01f45
7
+ data.tar.gz: 543375cd1021947da13d214f8aacf379d565a6e840564dc9e9233bd7673200d967318c1ef7ca209000182c78fa98c141c2ceddcd9ca1c91d5b221d0caac9d03b
data/lib/milk_tea/base.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require "pathname"
4
4
 
5
5
  module MilkTea
6
- VERSION = "0.3.9"
6
+ VERSION = "0.3.10"
7
7
 
8
8
  def self.root
9
9
  @root ||= Pathname.new(File.expand_path("../..", __dir__))
@@ -23,7 +23,6 @@ module MilkTea
23
23
  def self.installed_as_gem?
24
24
  root.to_s.match?(%r{/gems/mt-lang-})
25
25
  end
26
- private_class_method :installed_as_gem?
27
26
 
28
27
  def self.writable_root_for(root)
29
28
  resolved = Pathname.new(File.expand_path(root.to_s))
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module Bindgen
5
5
  class Generator
6
6
  module GeneratorAstParser
7
- private
8
-
9
7
  def dump_ast
10
8
  Tempfile.create(["milk-tea-bindgen", ".c"]) do |translation_unit|
11
9
  @translation_unit_path = translation_unit.path
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module Bindgen
5
5
  class Generator
6
6
  module GeneratorDeclaration
7
- private
8
-
9
7
  def select_record_declarations(nodes)
10
8
  selected = {}
11
9
  type_aliases = []
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module Bindgen
5
5
  class Generator
6
6
  module GeneratorEmitter
7
- private
8
-
9
7
  def emitted_name(raw_name)
10
8
  return raw_name unless @strip_leading_underscores
11
9
 
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module Bindgen
5
5
  class Generator
6
6
  module GeneratorOverrides
7
- private
8
-
9
7
  def function_param_type_override(function_name, param_name)
10
8
  @function_param_type_overrides.dig(function_name, param_name)
11
9
  end
@@ -4,64 +4,62 @@ module MilkTea
4
4
  module Bindgen
5
5
  class Generator
6
6
  module GeneratorTypeMapper
7
- private
8
-
9
7
  def map_c_type(qual_type, context:)
10
8
  normalized = normalize_c_type(qual_type)
11
9
  raise BindgenError, "missing C type for #{context}" if normalized.empty?
12
10
  normalized, nullability = extract_top_level_nullability(normalized)
13
11
  mapped_type = if array_type?(normalized)
14
- map_array_type(normalized, context:)
15
- elsif function_pointer_type?(normalized)
16
- map_function_pointer_type(normalized, context:)
17
- else
18
- pointer_candidate = strip_pointer_suffix_qualifiers(normalized)
19
- if pointer_type?(pointer_candidate)
20
- if va_list_pointer?(pointer_candidate)
21
- synthesize_typedef_dependency("va_list")
22
- "va_list"
23
- elsif c_string_pointer?(pointer_candidate)
24
- "cstr"
25
- else
26
- pointee = pointer_candidate.sub(/\s*\*\z/, "")
27
- pointer_name = top_level_const_qualified?(pointee) ? "const_ptr" : "ptr"
28
- "#{pointer_name}[#{map_c_type(pointee, context:)}]"
29
- end
30
- else
31
- unqualified = strip_qualifiers(normalized)
32
- if unqualified == "__va_list_tag" || unqualified == "struct __va_list_tag"
33
- synthesize_typedef_dependency("__va_list_tag")
34
- "__va_list_tag"
35
- elsif standard_typedef_primitive(unqualified)
36
- standard_typedef_primitive(unqualified)
37
- elsif PRIMITIVE_TYPE_MAP.key?(unqualified)
38
- PRIMITIVE_TYPE_MAP.fetch(unqualified)
39
- elsif @type_overrides.key?(unqualified)
40
- @type_overrides.fetch(unqualified)
41
- elsif unqualified.start_with?("long") || unqualified.start_with?("unsigned long") || unqualified.start_with?("signed long")
42
- map_long_type(unqualified, context:)
43
- elsif unqualified.start_with?("struct ") || unqualified.start_with?("union ") || unqualified.start_with?("enum ")
44
- tag_name = unqualified.split.last
45
- @type_overrides.fetch(tag_name) do
46
- if unqualified.start_with?("struct ")
47
- record_name_for(unqualified)
48
- elsif unqualified.start_with?("union ")
49
- record_name_for(unqualified)
50
- else
51
- enum_name_for(unqualified)
52
- end
53
- end
54
- elsif unqualified.match?(/\A[A-Za-z_][A-Za-z0-9_]*\z/)
55
- if known_generated_type_name?(unqualified, @visible_typedef_names)
56
- visible_type_name(unqualified)
57
- else
58
- raise BindgenError, "unknown referenced C type #{unqualified.inspect} for #{context}"
59
- end
60
- else
61
- raise BindgenError, "unsupported C type #{qual_type.inspect} for #{context}"
62
- end
63
- end
64
- end
12
+ map_array_type(normalized, context:)
13
+ elsif function_pointer_type?(normalized)
14
+ map_function_pointer_type(normalized, context:)
15
+ else
16
+ pointer_candidate = strip_pointer_suffix_qualifiers(normalized)
17
+ if pointer_type?(pointer_candidate)
18
+ if va_list_pointer?(pointer_candidate)
19
+ synthesize_typedef_dependency("va_list")
20
+ "va_list"
21
+ elsif c_string_pointer?(pointer_candidate)
22
+ "cstr"
23
+ else
24
+ pointee = pointer_candidate.sub(/\s*\*\z/, "")
25
+ pointer_name = top_level_const_qualified?(pointee) ? "const_ptr" : "ptr"
26
+ "#{pointer_name}[#{map_c_type(pointee, context:)}]"
27
+ end
28
+ else
29
+ unqualified = strip_qualifiers(normalized)
30
+ if unqualified == "__va_list_tag" || unqualified == "struct __va_list_tag"
31
+ synthesize_typedef_dependency("__va_list_tag")
32
+ "__va_list_tag"
33
+ elsif standard_typedef_primitive(unqualified)
34
+ standard_typedef_primitive(unqualified)
35
+ elsif PRIMITIVE_TYPE_MAP.key?(unqualified)
36
+ PRIMITIVE_TYPE_MAP.fetch(unqualified)
37
+ elsif @type_overrides.key?(unqualified)
38
+ @type_overrides.fetch(unqualified)
39
+ elsif unqualified.start_with?("long") || unqualified.start_with?("unsigned long") || unqualified.start_with?("signed long")
40
+ map_long_type(unqualified, context:)
41
+ elsif unqualified.start_with?("struct ") || unqualified.start_with?("union ") || unqualified.start_with?("enum ")
42
+ tag_name = unqualified.split.last
43
+ @type_overrides.fetch(tag_name) do
44
+ if unqualified.start_with?("struct ")
45
+ record_name_for(unqualified)
46
+ elsif unqualified.start_with?("union ")
47
+ record_name_for(unqualified)
48
+ else
49
+ enum_name_for(unqualified)
50
+ end
51
+ end
52
+ elsif unqualified.match?(/\A[A-Za-z_][A-Za-z0-9_]*\z/)
53
+ if known_generated_type_name?(unqualified, @visible_typedef_names)
54
+ visible_type_name(unqualified)
55
+ else
56
+ raise BindgenError, "unknown referenced C type #{unqualified.inspect} for #{context}"
57
+ end
58
+ else
59
+ raise BindgenError, "unsupported C type #{qual_type.inspect} for #{context}"
60
+ end
61
+ end
62
+ end
65
63
 
66
64
  apply_nullability(mapped_type, nullability)
67
65
  end
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module ImportedBindings
5
5
  class Generator
6
6
  module GeneratorPolicy
7
- private
8
-
9
7
  def load_policy
10
8
  JSON.parse(File.read(@policy_path))
11
9
  rescue Errno::ENOENT
@@ -914,13 +912,13 @@ module MilkTea
914
912
  signature = +""
915
913
  signature << "public " if visibility == :public
916
914
  signature << case kind
917
- when :static
918
- "static function "
919
- when :editable
920
- "editable function "
921
- else
922
- "function "
923
- end
915
+ when :static
916
+ "static function "
917
+ when :editable
918
+ "editable function "
919
+ else
920
+ "function "
921
+ end
924
922
  signature << name
925
923
  signature << render_type_params(type_params)
926
924
  signature << "(#{params.join(', ')}) -> #{return_type}:"
@@ -4,8 +4,6 @@ module MilkTea
4
4
  module ImportedBindings
5
5
  class Generator
6
6
  module GeneratorMethodSource
7
- private
8
-
9
7
  def load_method_sources(method_specs)
10
8
  method_specs.each_with_object({}) do |spec, sources|
11
9
  next unless spec[:module_name]
@@ -85,8 +85,6 @@ module MilkTea
85
85
  uniform
86
86
  ].freeze
87
87
 
88
- private
89
-
90
88
  def normalize_opengl_snake_case(name)
91
89
  tokens = name.to_s.split("_").reject(&:empty?)
92
90
  normalized = []
@@ -175,12 +173,12 @@ module MilkTea
175
173
 
176
174
  def normalize_opengl_terminal_suffix(name, raw_name)
177
175
  normalized = if name.end_with?("indexedfv")
178
- "#{name.delete_suffix('indexedfv')}indexed_float_values"
179
- elsif name.end_with?("indexedf")
180
- "#{name.delete_suffix('indexedf')}indexed_float"
181
- else
182
- name
183
- end
176
+ "#{name.delete_suffix('indexedfv')}indexed_float_values"
177
+ elsif name.end_with?("indexedf")
178
+ "#{name.delete_suffix('indexedf')}indexed_float"
179
+ else
180
+ name
181
+ end
184
182
 
185
183
  raw_text = raw_name.to_s
186
184
  if raw_text.end_with?("i") && normalized.end_with?("i")
@@ -205,8 +205,6 @@ module MilkTea
205
205
  Formatter.format_source(source, path: generated_module_path, mode: :tidy)
206
206
  end
207
207
 
208
- private
209
-
210
208
  include GeneratorPolicy
211
209
  include GeneratorMethodSource
212
210
  include GeneratorNaming
@@ -23,18 +23,16 @@ module MilkTea
23
23
  FeatureEntry = Data.define(:name, :api, :number, :blocks)
24
24
  ExtensionEntry = Data.define(:name, :supported, :blocks)
25
25
 
26
- module_function
27
-
28
- def helper_header_path(root: MilkTea.root)
26
+ def self.helper_header_path(root: MilkTea.root)
29
27
  root.join("std/c/#{HELPER_HEADER_BASENAME}")
30
28
  end
31
29
 
32
- def source(root: MilkTea.root)
30
+ def self.source(root: MilkTea.root)
33
31
  UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
34
32
  raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
35
33
  end
36
34
 
37
- def prepare!(root: MilkTea.root, api: DEFAULT_API, version: DEFAULT_VERSION, profile: DEFAULT_PROFILE, extensions: [])
35
+ def self.prepare!(root: MilkTea.root, api: DEFAULT_API, version: DEFAULT_VERSION, profile: DEFAULT_PROFILE, extensions: [])
38
36
  registry_source = source(root:)
39
37
  registry_source.bootstrap!
40
38
 
@@ -90,8 +88,6 @@ module MilkTea
90
88
  )
91
89
  end
92
90
 
93
- private
94
-
95
91
  def parse_registry
96
92
  document = REXML::Document.new(@xml_source)
97
93
  root = document.root
@@ -38,26 +38,24 @@ module MilkTea
38
38
  windows: "steam_api64.dll",
39
39
  }.freeze
40
40
 
41
- module_function
42
-
43
- def helper_header_path(root: MilkTea.root)
41
+ def self.helper_header_path(root: MilkTea.root)
44
42
  root.join("std/c/#{HELPER_HEADER_BASENAME}")
45
43
  end
46
44
 
47
- def source(root: MilkTea.root)
45
+ def self.source(root: MilkTea.root)
48
46
  UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
49
47
  raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
50
48
  end
51
49
 
52
- def host_platform
50
+ def self.host_platform
53
51
  MilkTea.host_platform
54
52
  end
55
53
 
56
- def default_link_libraries(platform: host_platform)
54
+ def self.default_link_libraries(platform: host_platform)
57
55
  [LINK_LIBRARY_NAME_BY_PLATFORM.fetch(platform)]
58
56
  end
59
57
 
60
- def sdk_root(root: MilkTea.root, env: ENV, bootstrap: false)
58
+ def self.sdk_root(root: MilkTea.root, env: ENV, bootstrap: false)
61
59
  candidates = []
62
60
  env_root = env[SDK_ROOT_ENV_VAR]
63
61
  candidates << canonical_sdk_root(env_root) if env_root && !env_root.empty?
@@ -76,7 +74,7 @@ module MilkTea
76
74
  candidates.find { |path| sdk_layout_present?(path) }
77
75
  end
78
76
 
79
- def api_json_path(root: MilkTea.root, env: ENV, bootstrap: false)
77
+ def self.api_json_path(root: MilkTea.root, env: ENV, bootstrap: false)
80
78
  explicit_path = env[API_JSON_ENV_VAR]
81
79
  if explicit_path && !explicit_path.empty?
82
80
  candidate = Pathname.new(File.expand_path(explicit_path))
@@ -94,7 +92,7 @@ module MilkTea
94
92
  raise Error, "Steamworks metadata not found under #{resolved_sdk_root}"
95
93
  end
96
94
 
97
- def redistributable_directory(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
95
+ def self.redistributable_directory(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
98
96
  resolved_sdk_root = sdk_root(root:, env:, bootstrap:)
99
97
  return unless resolved_sdk_root
100
98
 
@@ -104,7 +102,7 @@ module MilkTea
104
102
  nil
105
103
  end
106
104
 
107
- def import_library_path(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
105
+ def self.import_library_path(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
108
106
  directory = redistributable_directory(root:, env:, platform:, bootstrap:)
109
107
  return unless directory
110
108
 
@@ -114,7 +112,7 @@ module MilkTea
114
112
  nil
115
113
  end
116
114
 
117
- def runtime_library_path(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
115
+ def self.runtime_library_path(root: MilkTea.root, env: ENV, platform: host_platform, bootstrap: false)
118
116
  directory = redistributable_directory(root:, env:, platform:, bootstrap:)
119
117
  return unless directory
120
118
 
@@ -124,7 +122,7 @@ module MilkTea
124
122
  nil
125
123
  end
126
124
 
127
- def prepare!(root: MilkTea.root, env: ENV)
125
+ def self.prepare!(root: MilkTea.root, env: ENV)
128
126
  path = helper_header_path(root:)
129
127
  existing = File.exist?(path)
130
128
  json_path = api_json_path(root:, env:, bootstrap: !existing)
@@ -139,7 +137,7 @@ module MilkTea
139
137
  path.to_s
140
138
  end
141
139
 
142
- def canonical_sdk_root(path)
140
+ def self.canonical_sdk_root(path)
143
141
  root = Pathname.new(File.expand_path(path.to_s))
144
142
  sdk_child = root.join("sdk")
145
143
  return sdk_child if sdk_layout_present?(sdk_child)
@@ -148,7 +146,7 @@ module MilkTea
148
146
  end
149
147
  private_class_method :canonical_sdk_root
150
148
 
151
- def sdk_layout_present?(root)
149
+ def self.sdk_layout_present?(root)
152
150
  File.file?(root.join(API_JSON_RELATIVE_PATH))
153
151
  end
154
152
  private_class_method :sdk_layout_present?
@@ -280,8 +278,6 @@ module MilkTea
280
278
  lines.join("\n") + "\n"
281
279
  end
282
280
 
283
- private
284
-
285
281
  def metadata
286
282
  @metadata ||= JSON.parse(@json_source)
287
283
  rescue JSON::ParserError => e
@@ -38,8 +38,6 @@ module MilkTea
38
38
  end
39
39
  end
40
40
 
41
- private
42
-
43
41
  def run_git!(*args)
44
42
  stdout, stderr, status = Open3.capture3("git", *args)
45
43
  return if status.success?
@@ -51,13 +49,11 @@ module MilkTea
51
49
  end
52
50
  end
53
51
 
54
- module_function
55
-
56
- def revisions_path(root: MilkTea.root)
52
+ def self.revisions_path(root: MilkTea.root)
57
53
  Pathname.new(File.expand_path(root.to_s)).join(CONFIG_DIR, REVISIONS_FILE)
58
54
  end
59
55
 
60
- def load_version_overrides(root: MilkTea.root)
56
+ def self.load_version_overrides(root: MilkTea.root)
61
57
  path = revisions_path(root:)
62
58
  return {} unless File.file?(path)
63
59
 
@@ -78,7 +74,7 @@ module MilkTea
78
74
  overrides
79
75
  end
80
76
 
81
- def load_sentinel_overrides(root: MilkTea.root)
77
+ def self.load_sentinel_overrides(root: MilkTea.root)
82
78
  path = revisions_path(root:)
83
79
  return {} unless File.file?(path)
84
80
 
@@ -95,7 +91,7 @@ module MilkTea
95
91
  overrides
96
92
  end
97
93
 
98
- def write_version_override(name, revision, root: MilkTea.root)
94
+ def self.write_version_override(name, revision, root: MilkTea.root)
99
95
  path = revisions_path(root:)
100
96
  data = File.file?(path) ? (YAML.safe_load(File.read(path)) || {}) : {}
101
97
  existing = data[name.to_s]
@@ -108,7 +104,7 @@ module MilkTea
108
104
  File.write(path, data.to_yaml)
109
105
  end
110
106
 
111
- def remove_version_override(name, root: MilkTea.root)
107
+ def self.remove_version_override(name, root: MilkTea.root)
112
108
  path = revisions_path(root:)
113
109
  return unless File.file?(path)
114
110
 
@@ -121,7 +117,7 @@ module MilkTea
121
117
  end
122
118
  end
123
119
 
124
- def resolve_ref(repository_url, ref)
120
+ def self.resolve_ref(repository_url, ref)
125
121
  return ref if ref.match?(/\A[0-9a-f]{40}\z/i)
126
122
 
127
123
  output, status = Open3.capture2("git", "ls-remote", "--refs", repository_url, ref.to_s)
@@ -140,11 +136,11 @@ module MilkTea
140
136
  lines.first.split(/\s+/, 2).first
141
137
  end
142
138
 
143
- def find_source(name, root: MilkTea.root)
139
+ def self.find_source(name, root: MilkTea.root)
144
140
  default_sources(root:).find { |source| source.name == name.to_s }
145
141
  end
146
142
 
147
- def default_sources(root: MilkTea.root)
143
+ def self.default_sources(root: MilkTea.root)
148
144
  data = MilkTea.writable_root_for(root)
149
145
  sources = [
150
146
  Source.new(
@@ -338,11 +334,11 @@ module MilkTea
338
334
  sources
339
335
  end
340
336
 
341
- def bootstrap_all!(root: MilkTea.root)
337
+ def self.bootstrap_all!(root: MilkTea.root)
342
338
  default_sources(root:).map(&:bootstrap!)
343
339
  end
344
340
 
345
- def bootstrap_one(name, root: MilkTea.root)
341
+ def self.bootstrap_one(name, root: MilkTea.root)
346
342
  source = find_source(name, root:)
347
343
  raise Error, "unknown upstream source: #{name}" unless source
348
344
 
@@ -22,9 +22,7 @@ module MilkTea
22
22
  -lm
23
23
  ].freeze
24
24
 
25
- module_function
26
-
27
- def library(root: MilkTea.root)
25
+ def self.library(root: MilkTea.root)
28
26
  resolved_root = Pathname.new(File.expand_path(root.to_s))
29
27
  @libraries ||= {}
30
28
  @libraries[resolved_root.to_s] ||= VendoredCLibrary::CMake.new(
@@ -40,39 +38,39 @@ module MilkTea
40
38
  )
41
39
  end
42
40
 
43
- def source_root(root: MilkTea.root)
41
+ def self.source_root(root: MilkTea.root)
44
42
  MilkTea.writable_root_for(root).join("third_party/box2d-upstream")
45
43
  end
46
44
 
47
- def include_root(root: MilkTea.root)
45
+ def self.include_root(root: MilkTea.root)
48
46
  source_root(root:).join("include")
49
47
  end
50
48
 
51
- def header_root(root: MilkTea.root)
49
+ def self.header_root(root: MilkTea.root)
52
50
  include_root(root:).join("box2d")
53
51
  end
54
52
 
55
- def build_root(root: MilkTea.root)
53
+ def self.build_root(root: MilkTea.root)
56
54
  MilkTea.writable_root_for(root).join("tmp/vendored-box2d")
57
55
  end
58
56
 
59
- def install_root(root: MilkTea.root)
57
+ def self.install_root(root: MilkTea.root)
60
58
  MilkTea.writable_root_for(root).join("tmp/vendored-box2d-prefix")
61
59
  end
62
60
 
63
- def archive_path(root: MilkTea.root)
61
+ def self.archive_path(root: MilkTea.root)
64
62
  install_root(root:).join("lib/libbox2d.a")
65
63
  end
66
64
 
67
- def include_flags(root: MilkTea.root)
65
+ def self.include_flags(root: MilkTea.root)
68
66
  library(root:).include_flags
69
67
  end
70
68
 
71
- def link_flags(root: MilkTea.root)
69
+ def self.link_flags(root: MilkTea.root)
72
70
  library(root:).link_flags
73
71
  end
74
72
 
75
- def prepare!(root: MilkTea.root, **kwargs)
73
+ def self.prepare!(root: MilkTea.root, **kwargs)
76
74
  library(root:).prepare!(**kwargs)
77
75
  end
78
76
  end
@@ -12,9 +12,7 @@ module MilkTea
12
12
  -lm
13
13
  ].freeze
14
14
 
15
- module_function
16
-
17
- def library(root: MilkTea.root)
15
+ def self.library(root: MilkTea.root)
18
16
  resolved_root = Pathname.new(File.expand_path(root.to_s))
19
17
  @libraries ||= {}
20
18
  @libraries[resolved_root.to_s] ||= VendoredCLibrary::Archive.new(
@@ -29,23 +27,23 @@ module MilkTea
29
27
  )
30
28
  end
31
29
 
32
- def source_root(root: MilkTea.root)
30
+ def self.source_root(root: MilkTea.root)
33
31
  MilkTea.writable_root_for(root).join("third_party/cjson-upstream")
34
32
  end
35
33
 
36
- def build_root(root: MilkTea.root)
34
+ def self.build_root(root: MilkTea.root)
37
35
  MilkTea.writable_root_for(root).join("tmp/vendored-cjson")
38
36
  end
39
37
 
40
- def archive_path(root: MilkTea.root)
38
+ def self.archive_path(root: MilkTea.root)
41
39
  build_root(root:).join("libcjson.a")
42
40
  end
43
41
 
44
- def link_flags(root: MilkTea.root)
42
+ def self.link_flags(root: MilkTea.root)
45
43
  library(root:).link_flags
46
44
  end
47
45
 
48
- def prepare!(root: MilkTea.root, **kwargs)
46
+ def self.prepare!(root: MilkTea.root, **kwargs)
49
47
  library(root:).prepare!(**kwargs)
50
48
  end
51
49
  end
@@ -19,14 +19,12 @@ module MilkTea
19
19
  -std=gnu99
20
20
  ].freeze
21
21
 
22
- module_function
23
-
24
- def source(root: MilkTea.root)
22
+ def self.source(root: MilkTea.root)
25
23
  UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
26
24
  raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
27
25
  end
28
26
 
29
- def library(root: MilkTea.root)
27
+ def self.library(root: MilkTea.root)
30
28
  resolved_root = Pathname.new(File.expand_path(root.to_s))
31
29
  @libraries ||= {}
32
30
  @libraries[resolved_root.to_s] ||= VendoredCLibrary::Archive.new(
@@ -42,35 +40,35 @@ module MilkTea
42
40
  )
43
41
  end
44
42
 
45
- def source_root(root: MilkTea.root)
43
+ def self.source_root(root: MilkTea.root)
46
44
  source(root:).checkout_root
47
45
  end
48
46
 
49
- def include_root(root: MilkTea.root)
47
+ def self.include_root(root: MilkTea.root)
50
48
  source_root(root:).join("distr")
51
49
  end
52
50
 
53
- def header_path(root: MilkTea.root)
51
+ def self.header_path(root: MilkTea.root)
54
52
  include_root(root:).join("flecs.h")
55
53
  end
56
54
 
57
- def build_root(root: MilkTea.root)
55
+ def self.build_root(root: MilkTea.root)
58
56
  MilkTea.writable_root_for(root).join("tmp/vendored-flecs")
59
57
  end
60
58
 
61
- def archive_path(root: MilkTea.root)
59
+ def self.archive_path(root: MilkTea.root)
62
60
  build_root(root:).join("libflecs.a")
63
61
  end
64
62
 
65
- def include_flags(root: MilkTea.root)
63
+ def self.include_flags(root: MilkTea.root)
66
64
  library(root:).include_flags
67
65
  end
68
66
 
69
- def link_flags(root: MilkTea.root)
67
+ def self.link_flags(root: MilkTea.root)
70
68
  library(root:).link_flags
71
69
  end
72
70
 
73
- def prepare!(root: MilkTea.root, **kwargs)
71
+ def self.prepare!(root: MilkTea.root, **kwargs)
74
72
  source(root:).bootstrap!
75
73
  library(root:).prepare!(**kwargs)
76
74
  end