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,101 +3,164 @@
3
3
  module MilkTea
4
4
  class CBackend
5
5
  module AggregateUtils
6
- private
7
-
8
- def each_variant_arm_field_type
9
- @program.variants.each do |variant_decl|
10
- variant_decl.arms.each do |arm|
11
- arm.fields.each do |field|
12
- yield field.type
13
- end
14
- end
6
+ def each_variant_arm_field_type
7
+ @program.variants.each do |variant_decl|
8
+ variant_decl.arms.each do |arm|
9
+ arm.fields.each do |field|
10
+ yield field.type
15
11
  end
16
12
  end
13
+ end
14
+ end
17
15
 
18
- def sort_aggregate_decls(struct_decls, union_decls, variant_decls)
19
- aggregate_decls = struct_decls + union_decls + variant_decls
20
- by_c_name = aggregate_decls.each_with_object({}) do |aggregate_decl, declarations|
21
- declarations[aggregate_decl.linkage_name] = aggregate_decl
22
- end
23
- variant_decls.each do |variant_decl|
24
- variant_decl.arms.each do |arm|
25
- next if arm.fields.empty?
26
- by_c_name[arm.linkage_name] = variant_decl
27
- end
28
- end
29
- visiting = {}
30
- visited = {}
31
- sorted = []
32
-
33
- visit = lambda do |aggregate_decl|
34
- return if visited[aggregate_decl.linkage_name]
35
- raise CBackendError.new("cyclic aggregate dependency involving #{aggregate_decl.linkage_name}", line: 0, column: 0, path: @path) if visiting[aggregate_decl.linkage_name]
36
-
37
- visiting[aggregate_decl.linkage_name] = true
38
- aggregate_decl_dependencies(aggregate_decl).each do |dependency|
39
- next unless by_c_name.key?(dependency)
40
-
41
- visit.call(by_c_name.fetch(dependency))
42
- end
43
- visiting.delete(aggregate_decl.linkage_name)
44
- visited[aggregate_decl.linkage_name] = true
45
- sorted << aggregate_decl
46
- end
16
+ def sort_aggregate_decls(struct_decls, union_decls, variant_decls)
17
+ aggregate_decls = struct_decls + union_decls + variant_decls
18
+ by_c_name = aggregate_decls.each_with_object({}) do |aggregate_decl, declarations|
19
+ declarations[aggregate_decl.linkage_name] = aggregate_decl
20
+ end
21
+ variant_decls.each do |variant_decl|
22
+ variant_decl.arms.each do |arm|
23
+ next if arm.fields.empty?
24
+ by_c_name[arm.linkage_name] = variant_decl
25
+ end
26
+ end
27
+ visiting = {}
28
+ visited = {}
29
+ sorted = []
47
30
 
48
- aggregate_decls.each do |aggregate_decl|
49
- visit.call(aggregate_decl)
50
- end
31
+ visit = lambda do |aggregate_decl|
32
+ return if visited[aggregate_decl.linkage_name]
33
+ raise CBackendError.new("cyclic aggregate dependency involving #{aggregate_decl.linkage_name}", line: 0, column: 0, path: @path) if visiting[aggregate_decl.linkage_name]
34
+
35
+ visiting[aggregate_decl.linkage_name] = true
36
+ aggregate_decl_dependencies(aggregate_decl).each do |dependency|
37
+ next unless by_c_name.key?(dependency)
51
38
 
52
- sorted
39
+ visit.call(by_c_name.fetch(dependency))
53
40
  end
41
+ visiting.delete(aggregate_decl.linkage_name)
42
+ visited[aggregate_decl.linkage_name] = true
43
+ sorted << aggregate_decl
44
+ end
45
+
46
+ aggregate_decls.each do |aggregate_decl|
47
+ visit.call(aggregate_decl)
48
+ end
49
+
50
+ sorted
51
+ end
52
+
53
+ def aggregate_decl_dependencies(aggregate_decl)
54
+ own_name = aggregate_decl.linkage_name
55
+ deps = case aggregate_decl
56
+ when IR::StructDecl, IR::UnionDecl
57
+ aggregate_decl.fields.flat_map { |field| aggregate_type_dependencies(field.type) }
58
+ when IR::VariantDecl
59
+ aggregate_decl.arms.flat_map { |arm| arm.fields.flat_map { |field| aggregate_type_dependencies(field.type) } }
60
+ else
61
+ []
62
+ end
63
+
64
+ deps.uniq.reject do |dep|
65
+ next true if dep == own_name
66
+ next false unless aggregate_decl.is_a?(IR::VariantDecl)
67
+
68
+ (@cyclic_aggregate_pairs || Set.new).include?([own_name, dep])
69
+ end
70
+ end
71
+
72
+ def build_cyclic_aggregate_pairs(all_decls)
73
+ by_name = all_decls.each_with_object({}) { |d, h| h[d.linkage_name] = d }
74
+ value_refs = {}
75
+ all_decls.each { |d| value_refs[d.linkage_name] = Set.new }
54
76
 
55
- def aggregate_decl_dependencies(aggregate_decl)
56
- case aggregate_decl
57
- when IR::StructDecl, IR::UnionDecl
58
- aggregate_decl.fields.flat_map { |field| aggregate_type_dependencies(field.type) }.uniq
59
- when IR::VariantDecl
60
- own_name = aggregate_decl.linkage_name
61
- aggregate_decl.arms.flat_map { |arm| arm.fields.flat_map { |field| aggregate_type_dependencies(field.type) } }
62
- .uniq
63
- .reject { |dep| dep == own_name }
64
- else
65
- []
77
+ all_decls.each do |decl|
78
+ own = decl.linkage_name
79
+ fields = case decl
80
+ when IR::StructDecl, IR::UnionDecl then decl.fields
81
+ when IR::VariantDecl then decl.arms.flat_map(&:fields)
82
+ else []
83
+ end
84
+ fields.each do |f|
85
+ aggregate_type_dependencies(f.type).each do |dep|
86
+ value_refs[own] << dep if by_name.key?(dep) && dep != own
66
87
  end
67
88
  end
89
+ end
68
90
 
69
- def aggregate_type_dependencies(type)
70
- case type
71
- when Types::Nullable
72
- if c_backend_pointer_like_type?(type.base)
73
- aggregate_type_dependencies(type.base)
74
- else
75
- [nullable_opt_type_name(type)]
76
- end
77
- when Types::Task
78
- [task_type_name(type)]
79
- when Types::Proc
80
- [proc_type_name(type)]
81
- when Types::GenericInstance
82
- if pointer_type?(type)
83
- []
84
- elsif array_type?(type)
85
- aggregate_type_dependencies(array_element_type(type))
86
- elsif str_buffer_type?(type)
87
- [str_buffer_type_name(type)]
88
- else
89
- []
90
- end
91
- when Types::Function
92
- []
93
- when Types::Struct, Types::StructInstance, Types::Union, Types::Variant, Types::VariantInstance, Types::Event, Types::Subscription
94
- [named_type_c_name(type)]
95
- when Types::VariantArmPayload
96
- [named_type_c_name(type), named_type_c_name(type.variant_type)]
97
- else
98
- []
99
- end
91
+ pairs = Set.new
92
+ value_refs.each do |a, refs|
93
+ refs.each do |b|
94
+ pairs << [a, b] if aggregate_can_reach?(b, a, value_refs)
95
+ end
96
+ end
97
+ pairs
98
+ end
99
+
100
+ def aggregate_can_reach?(from, to, value_refs, visited = {})
101
+ return false if visited[from]
102
+ return true if from == to
103
+ return true if (value_refs[from] || Set.new).include?(to)
104
+
105
+ visited[from] = true
106
+ (value_refs[from] || Set.new).any? { |next_name| aggregate_can_reach?(next_name, to, value_refs, visited) }
107
+ end
108
+
109
+ def aggregate_field_creates_cycle?(field_type, outer_c)
110
+ resolved = resolved_aggregate_c_name(field_type)
111
+ return false unless resolved
112
+
113
+ return true if resolved == outer_c
114
+ return false unless @cyclic_aggregate_pairs
115
+
116
+ @cyclic_aggregate_pairs.include?([outer_c, resolved])
117
+ end
118
+
119
+ def resolved_aggregate_c_name(type)
120
+ case type
121
+ when Types::Variant, Types::VariantInstance, Types::Struct, Types::StructInstance, Types::Union
122
+ named_type_c_name(type)
123
+ when Types::Nullable
124
+ resolved_aggregate_c_name(type.base)
125
+ when Types::GenericInstance
126
+ if array_type?(type) || str_buffer_type?(type)
127
+ resolved_aggregate_c_name(array_element_type(type))
128
+ end
129
+ end
130
+ end
131
+
132
+ def aggregate_type_dependencies(type)
133
+ case type
134
+ when Types::Nullable
135
+ if c_backend_pointer_like_type?(type.base)
136
+ aggregate_type_dependencies(type.base)
137
+ else
138
+ [nullable_opt_type_name(type)]
139
+ end
140
+ when Types::Task
141
+ [task_type_name(type)]
142
+ when Types::Proc
143
+ [proc_type_name(type)]
144
+ when Types::GenericInstance
145
+ if pointer_type?(type)
146
+ []
147
+ elsif array_type?(type)
148
+ aggregate_type_dependencies(array_element_type(type))
149
+ elsif str_buffer_type?(type)
150
+ [str_buffer_type_name(type)]
151
+ else
152
+ []
100
153
  end
154
+ when Types::Function
155
+ []
156
+ when Types::Struct, Types::StructInstance, Types::Union, Types::Variant, Types::VariantInstance, Types::Event, Types::Subscription
157
+ [named_type_c_name(type)]
158
+ when Types::VariantArmPayload
159
+ [named_type_c_name(type), named_type_c_name(type.variant_type)]
160
+ else
161
+ []
162
+ end
163
+ end
101
164
  end
102
165
  end
103
166
  end