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.
- checksums.yaml +4 -4
- data/lib/milk_tea/base.rb +1 -2
- data/lib/milk_tea/bindings/bindgen/ast_parser.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/declaration.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/emitter.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/overrides.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/type_mapper.rb +51 -53
- data/lib/milk_tea/bindings/imported_bindings/generator.rb +7 -9
- data/lib/milk_tea/bindings/imported_bindings/method_source.rb +0 -2
- data/lib/milk_tea/bindings/imported_bindings/naming.rb +6 -8
- data/lib/milk_tea/bindings/imported_bindings.rb +0 -2
- data/lib/milk_tea/bindings/opengl_registry.rb +3 -7
- data/lib/milk_tea/bindings/steamworks.rb +12 -16
- data/lib/milk_tea/bindings/upstream_sources.rb +10 -14
- data/lib/milk_tea/bindings/vendored_box2d.rb +10 -12
- data/lib/milk_tea/bindings/vendored_cjson.rb +6 -8
- data/lib/milk_tea/bindings/vendored_flecs.rb +10 -12
- data/lib/milk_tea/bindings/vendored_glfw.rb +11 -13
- data/lib/milk_tea/bindings/vendored_libuv.rb +11 -13
- data/lib/milk_tea/bindings/vendored_pcre2.rb +11 -13
- data/lib/milk_tea/bindings/vendored_raylib.rb +6 -10
- data/lib/milk_tea/bindings/vendored_sdl3.rb +11 -13
- data/lib/milk_tea/bindings/vendored_steamworks.rb +1 -5
- data/lib/milk_tea/core/ast.rb +103 -45
- data/lib/milk_tea/core/async_runtime_installer.rb +0 -2
- data/lib/milk_tea/core/bindings/attribute_binding.rb +1 -3
- data/lib/milk_tea/core/c_backend/aggregate_utils.rb +147 -84
- data/lib/milk_tea/core/c_backend/control_flow_emission.rb +394 -396
- data/lib/milk_tea/core/c_backend/expressions.rb +489 -476
- data/lib/milk_tea/core/c_backend/feature_detection.rb +446 -437
- data/lib/milk_tea/core/c_backend/format_helpers.rb +0 -2
- data/lib/milk_tea/core/c_backend/reachability.rb +339 -341
- data/lib/milk_tea/core/c_backend/reinterpret.rb +231 -217
- data/lib/milk_tea/core/c_backend/runtime_helpers.rb +531 -526
- data/lib/milk_tea/core/c_backend/statements.rb +528 -530
- data/lib/milk_tea/core/c_backend/type_collectors.rb +1344 -1346
- data/lib/milk_tea/core/c_backend/type_declaration.rb +215 -213
- data/lib/milk_tea/core/c_backend/type_system.rb +347 -349
- data/lib/milk_tea/core/c_backend.rb +17 -9
- data/lib/milk_tea/core/compatibility_helpers.rb +0 -2
- data/lib/milk_tea/core/compile_time/const_eval.rb +7 -12
- data/lib/milk_tea/core/compile_time.rb +32 -38
- data/lib/milk_tea/core/control_flow/builder.rb +3 -5
- data/lib/milk_tea/core/control_flow/constant_propagation.rb +14 -17
- data/lib/milk_tea/core/control_flow/definite_assignment.rb +0 -1
- data/lib/milk_tea/core/ir.rb +10 -10
- data/lib/milk_tea/core/lexer/character_classes.rb +5 -7
- data/lib/milk_tea/core/lexer/format_strings.rb +7 -9
- data/lib/milk_tea/core/lexer/heredocs.rb +22 -22
- data/lib/milk_tea/core/lexer/indentation.rb +0 -2
- data/lib/milk_tea/core/lexer/numbers.rb +0 -2
- data/lib/milk_tea/core/lexer/recovery.rb +0 -2
- data/lib/milk_tea/core/lexer/strings.rb +0 -2
- data/lib/milk_tea/core/lexer/symbols.rb +0 -2
- data/lib/milk_tea/core/lexer/trivia.rb +0 -2
- data/lib/milk_tea/core/lexer.rb +0 -2
- data/lib/milk_tea/core/lowering/async/analysis.rb +0 -2
- data/lib/milk_tea/core/lowering/async/lowering.rb +1264 -1265
- data/lib/milk_tea/core/lowering/async/normalization.rb +0 -2
- data/lib/milk_tea/core/lowering/async.rb +627 -630
- data/lib/milk_tea/core/lowering/block.rb +413 -416
- data/lib/milk_tea/core/lowering/calls.rb +1381 -1384
- data/lib/milk_tea/core/lowering/declarations.rb +180 -183
- data/lib/milk_tea/core/lowering/dyn.rb +48 -50
- data/lib/milk_tea/core/lowering/events.rb +983 -985
- data/lib/milk_tea/core/lowering/expressions.rb +1513 -1518
- data/lib/milk_tea/core/lowering/foreign_cstr.rb +181 -184
- data/lib/milk_tea/core/lowering/functions.rb +185 -188
- data/lib/milk_tea/core/lowering/loops.rb +1028 -1031
- data/lib/milk_tea/core/lowering/proc.rb +363 -366
- data/lib/milk_tea/core/lowering/resolve.rb +2133 -2135
- data/lib/milk_tea/core/lowering/scans.rb +179 -181
- data/lib/milk_tea/core/lowering/str_buffer.rb +102 -105
- data/lib/milk_tea/core/lowering/utils.rb +1040 -1044
- data/lib/milk_tea/core/lowering.rb +5 -7
- data/lib/milk_tea/core/module_binder.rb +0 -2
- data/lib/milk_tea/core/module_loader/errors.rb +4 -2
- data/lib/milk_tea/core/module_loader.rb +113 -20
- data/lib/milk_tea/core/module_path_resolver.rb +0 -2
- data/lib/milk_tea/core/module_roots.rb +6 -8
- data/lib/milk_tea/core/parser/attributes.rb +0 -2
- data/lib/milk_tea/core/parser/blocks.rb +0 -2
- data/lib/milk_tea/core/parser/declarations.rb +0 -2
- data/lib/milk_tea/core/parser/expressions.rb +31 -14
- data/lib/milk_tea/core/parser/recovery.rb +0 -2
- data/lib/milk_tea/core/parser/statements.rb +0 -2
- data/lib/milk_tea/core/parser/types.rb +8 -10
- data/lib/milk_tea/core/parser.rb +1 -3
- data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +31 -33
- data/lib/milk_tea/core/pretty_printer/base_formatter.rb +0 -2
- data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/attributes.rb +14 -16
- data/lib/milk_tea/core/semantic_analyzer/calls.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/expressions.rb +1 -14
- data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +18 -21
- data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +0 -3
- data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +12 -15
- data/lib/milk_tea/core/semantic_analyzer/generics.rb +57 -59
- data/lib/milk_tea/core/semantic_analyzer/interface_conformance.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +5 -9
- data/lib/milk_tea/core/semantic_analyzer/nullability.rb +0 -3
- data/lib/milk_tea/core/semantic_analyzer/statements.rb +35 -40
- data/lib/milk_tea/core/semantic_analyzer/top_level.rb +10 -12
- data/lib/milk_tea/core/semantic_analyzer/type_compatibility.rb +0 -6
- data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +102 -105
- data/lib/milk_tea/core/semantic_analyzer.rb +17 -8
- data/lib/milk_tea/core/types/layout.rb +21 -22
- data/lib/milk_tea/core/types/predicates.rb +0 -2
- data/lib/milk_tea/core/types/registry.rb +16 -18
- data/lib/milk_tea/core/types/visitor.rb +0 -4
- data/lib/milk_tea/dap/backends/lldb_dap.rb +0 -2
- data/lib/milk_tea/dap/protocol.rb +1 -1
- data/lib/milk_tea/dap/server/breakpoints.rb +0 -2
- data/lib/milk_tea/dap/server/debug_map.rb +0 -2
- data/lib/milk_tea/dap/server/handlers.rb +0 -2
- data/lib/milk_tea/dap/server/launch.rb +0 -2
- data/lib/milk_tea/dap/server/lldb_backend.rb +8 -10
- data/lib/milk_tea/dap/server/pause_diagnostics.rb +14 -16
- data/lib/milk_tea/dap/server/utilities.rb +0 -2
- data/lib/milk_tea/dap/server/wire.rb +0 -2
- data/lib/milk_tea/dap/server.rb +0 -2
- data/lib/milk_tea/lsp/diagnostics.rb +16 -16
- data/lib/milk_tea/lsp/server/call_hierarchy.rb +11 -12
- data/lib/milk_tea/lsp/server/code_actions.rb +355 -357
- data/lib/milk_tea/lsp/server/code_lens.rb +23 -25
- data/lib/milk_tea/lsp/server/completion.rb +873 -875
- data/lib/milk_tea/lsp/server/configuration.rb +129 -131
- data/lib/milk_tea/lsp/server/debug_info.rb +0 -2
- data/lib/milk_tea/lsp/server/definition.rb +564 -565
- data/lib/milk_tea/lsp/server/diagnostics_scheduling.rb +191 -193
- data/lib/milk_tea/lsp/server/execute_command.rb +0 -2
- data/lib/milk_tea/lsp/server/folding_range.rb +0 -4
- data/lib/milk_tea/lsp/server/formatting.rb +478 -480
- data/lib/milk_tea/lsp/server/hover.rb +1282 -1284
- data/lib/milk_tea/lsp/server/inlay_hints.rb +179 -181
- data/lib/milk_tea/lsp/server/lifecycle.rb +192 -194
- data/lib/milk_tea/lsp/server/linked_editing_range.rb +0 -2
- data/lib/milk_tea/lsp/server/on_type_formatting.rb +0 -2
- data/lib/milk_tea/lsp/server/progress.rb +0 -2
- data/lib/milk_tea/lsp/server/references.rb +316 -318
- data/lib/milk_tea/lsp/server/rename.rb +445 -447
- data/lib/milk_tea/lsp/server/selection_range.rb +0 -4
- data/lib/milk_tea/lsp/server/semantic_tokens.rb +1318 -1320
- data/lib/milk_tea/lsp/server/signature_help.rb +146 -148
- data/lib/milk_tea/lsp/server/text_documents.rb +99 -101
- data/lib/milk_tea/lsp/server/type_hierarchy.rb +2 -4
- data/lib/milk_tea/lsp/server/utilities.rb +397 -399
- data/lib/milk_tea/lsp/server.rb +0 -3
- data/lib/milk_tea/lsp/workspace/analysis.rb +40 -42
- data/lib/milk_tea/lsp/workspace/dependency_graph.rb +4 -10
- data/lib/milk_tea/lsp/workspace/utilities.rb +19 -19
- data/lib/milk_tea/packages/atomic_write.rb +4 -5
- data/lib/milk_tea/packages/dependency_solver.rb +15 -15
- data/lib/milk_tea/packages/lock.rb +4 -4
- data/lib/milk_tea/packages/manager_cli.rb +1 -1
- data/lib/milk_tea/packages/manifest.rb +3 -3
- data/lib/milk_tea/packages/registry_store.rb +4 -6
- data/lib/milk_tea/packages/services.rb +16 -16
- data/lib/milk_tea/packages/source_cache.rb +4 -6
- data/lib/milk_tea/packages/source_resolver.rb +44 -44
- data/lib/milk_tea/packages/version.rb +8 -8
- data/lib/milk_tea/tooling/build.rb +3 -7
- data/lib/milk_tea/tooling/build_cache.rb +0 -2
- data/lib/milk_tea/tooling/debug_info_formatter.rb +31 -33
- data/lib/milk_tea/tooling/debug_map.rb +8 -10
- data/lib/milk_tea/tooling/docs_app.rb +0 -2
- data/lib/milk_tea/tooling/linter/doc_tags.rb +25 -27
- data/lib/milk_tea/tooling/linter/fix_engine.rb +87 -24
- data/lib/milk_tea/tooling/linter/flow_rules.rb +44 -46
- data/lib/milk_tea/tooling/linter/imports_platform.rb +14 -16
- data/lib/milk_tea/tooling/linter/release_rules.rb +3 -5
- data/lib/milk_tea/tooling/linter/reserved_names.rb +23 -25
- data/lib/milk_tea/tooling/linter/rules.rb +87 -89
- data/lib/milk_tea/tooling/linter/source_helpers.rb +40 -42
- data/lib/milk_tea/tooling/linter/trailing_comma.rb +17 -19
- data/lib/milk_tea/tooling/linter/visitors.rb +162 -50
- data/lib/milk_tea/tooling/linter.rb +0 -2
- data/lib/milk_tea/tooling/project_scaffold.rb +0 -2
- data/lib/milk_tea/tooling/run.rb +0 -2
- data/lib/milk_tea/tooling/toolchain_cli.rb +0 -2
- data/std/cli.mt +13 -32
- data/std/color.mt +28 -28
- data/std/encoding.mt +4 -4
- data/std/graph.mt +1 -2
- data/std/hash.mt +14 -14
- data/std/http/server.mt +3 -3
- data/std/input.mt +1 -1
- data/std/json.mt +1 -1
- data/std/linear_algebra.mt +6 -6
- data/std/net/mux.mt +1 -1
- data/std/noise.mt +23 -23
- data/std/parse.mt +2 -2
- data/std/process.mt +3 -4
- data/std/sparse_set.mt +1 -1
- data/std/steering.mt +5 -5
- data/std/str.mt +1 -1
- data/std/tween.mt +4 -4
- data/std/utility.mt +3 -3
- metadata +2 -2
|
@@ -14,14 +14,12 @@ module MilkTea
|
|
|
14
14
|
-DGLFW_BUILD_DOCS=OFF
|
|
15
15
|
].freeze
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def source(root: MilkTea.root)
|
|
17
|
+
def self.source(root: MilkTea.root)
|
|
20
18
|
UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
|
|
21
19
|
raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
|
|
22
20
|
end
|
|
23
21
|
|
|
24
|
-
def library(root: MilkTea.root)
|
|
22
|
+
def self.library(root: MilkTea.root)
|
|
25
23
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
26
24
|
@libraries ||= {}
|
|
27
25
|
@libraries[resolved_root.to_s] ||= VendoredCLibrary::CMake.new(
|
|
@@ -37,39 +35,39 @@ module MilkTea
|
|
|
37
35
|
)
|
|
38
36
|
end
|
|
39
37
|
|
|
40
|
-
def source_root(root: MilkTea.root)
|
|
38
|
+
def self.source_root(root: MilkTea.root)
|
|
41
39
|
source(root:).checkout_root
|
|
42
40
|
end
|
|
43
41
|
|
|
44
|
-
def include_root(root: MilkTea.root)
|
|
42
|
+
def self.include_root(root: MilkTea.root)
|
|
45
43
|
source_root(root:).join("include")
|
|
46
44
|
end
|
|
47
45
|
|
|
48
|
-
def header_root(root: MilkTea.root)
|
|
46
|
+
def self.header_root(root: MilkTea.root)
|
|
49
47
|
include_root(root:).join("GLFW")
|
|
50
48
|
end
|
|
51
49
|
|
|
52
|
-
def build_root(root: MilkTea.root)
|
|
50
|
+
def self.build_root(root: MilkTea.root)
|
|
53
51
|
MilkTea.writable_root_for(root).join("tmp/vendored-glfw")
|
|
54
52
|
end
|
|
55
53
|
|
|
56
|
-
def install_root(root: MilkTea.root)
|
|
54
|
+
def self.install_root(root: MilkTea.root)
|
|
57
55
|
MilkTea.writable_root_for(root).join("tmp/vendored-glfw-prefix")
|
|
58
56
|
end
|
|
59
57
|
|
|
60
|
-
def archive_path(root: MilkTea.root)
|
|
58
|
+
def self.archive_path(root: MilkTea.root)
|
|
61
59
|
install_root(root:).join("lib/libglfw3.a")
|
|
62
60
|
end
|
|
63
61
|
|
|
64
|
-
def include_flags(root: MilkTea.root)
|
|
62
|
+
def self.include_flags(root: MilkTea.root)
|
|
65
63
|
library(root:).include_flags
|
|
66
64
|
end
|
|
67
65
|
|
|
68
|
-
def link_flags(root: MilkTea.root)
|
|
66
|
+
def self.link_flags(root: MilkTea.root)
|
|
69
67
|
library(root:).link_flags
|
|
70
68
|
end
|
|
71
69
|
|
|
72
|
-
def prepare!(root: MilkTea.root, **kwargs)
|
|
70
|
+
def self.prepare!(root: MilkTea.root, **kwargs)
|
|
73
71
|
source(root:).bootstrap!
|
|
74
72
|
library(root:).prepare!(**kwargs)
|
|
75
73
|
end
|
|
@@ -12,14 +12,12 @@ module MilkTea
|
|
|
12
12
|
-DBUILD_TESTING=OFF
|
|
13
13
|
].freeze
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def source(root: MilkTea.root)
|
|
15
|
+
def self.source(root: MilkTea.root)
|
|
18
16
|
UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
|
|
19
17
|
raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
|
|
20
18
|
end
|
|
21
19
|
|
|
22
|
-
def library(root: MilkTea.root)
|
|
20
|
+
def self.library(root: MilkTea.root)
|
|
23
21
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
24
22
|
@libraries ||= {}
|
|
25
23
|
@libraries[resolved_root.to_s] ||= VendoredCLibrary::CMake.new(
|
|
@@ -35,39 +33,39 @@ module MilkTea
|
|
|
35
33
|
)
|
|
36
34
|
end
|
|
37
35
|
|
|
38
|
-
def source_root(root: MilkTea.root)
|
|
36
|
+
def self.source_root(root: MilkTea.root)
|
|
39
37
|
source(root:).checkout_root
|
|
40
38
|
end
|
|
41
39
|
|
|
42
|
-
def include_root(root: MilkTea.root)
|
|
40
|
+
def self.include_root(root: MilkTea.root)
|
|
43
41
|
source_root(root:).join("include")
|
|
44
42
|
end
|
|
45
43
|
|
|
46
|
-
def header_path(root: MilkTea.root)
|
|
44
|
+
def self.header_path(root: MilkTea.root)
|
|
47
45
|
include_root(root:).join("uv.h")
|
|
48
46
|
end
|
|
49
47
|
|
|
50
|
-
def build_root(root: MilkTea.root)
|
|
48
|
+
def self.build_root(root: MilkTea.root)
|
|
51
49
|
MilkTea.writable_root_for(root).join("tmp/vendored-libuv")
|
|
52
50
|
end
|
|
53
51
|
|
|
54
|
-
def install_root(root: MilkTea.root)
|
|
52
|
+
def self.install_root(root: MilkTea.root)
|
|
55
53
|
MilkTea.writable_root_for(root).join("tmp/vendored-libuv-prefix")
|
|
56
54
|
end
|
|
57
55
|
|
|
58
|
-
def archive_path(root: MilkTea.root)
|
|
56
|
+
def self.archive_path(root: MilkTea.root)
|
|
59
57
|
install_root(root:).join("lib/libuv.a")
|
|
60
58
|
end
|
|
61
59
|
|
|
62
|
-
def include_flags(root: MilkTea.root)
|
|
60
|
+
def self.include_flags(root: MilkTea.root)
|
|
63
61
|
library(root:).include_flags
|
|
64
62
|
end
|
|
65
63
|
|
|
66
|
-
def link_flags(root: MilkTea.root)
|
|
64
|
+
def self.link_flags(root: MilkTea.root)
|
|
67
65
|
library(root:).link_flags
|
|
68
66
|
end
|
|
69
67
|
|
|
70
|
-
def prepare!(root: MilkTea.root, **kwargs)
|
|
68
|
+
def self.prepare!(root: MilkTea.root, **kwargs)
|
|
71
69
|
source(root:).bootstrap!
|
|
72
70
|
library(root:).prepare!(**kwargs)
|
|
73
71
|
end
|
|
@@ -21,14 +21,12 @@ module MilkTea
|
|
|
21
21
|
-lm
|
|
22
22
|
].freeze
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def source(root: MilkTea.root)
|
|
24
|
+
def self.source(root: MilkTea.root)
|
|
27
25
|
UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
|
|
28
26
|
raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
|
|
29
27
|
end
|
|
30
28
|
|
|
31
|
-
def library(root: MilkTea.root)
|
|
29
|
+
def self.library(root: MilkTea.root)
|
|
32
30
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
33
31
|
@libraries ||= {}
|
|
34
32
|
@libraries[resolved_root.to_s] ||= VendoredCLibrary::CMake.new(
|
|
@@ -44,39 +42,39 @@ module MilkTea
|
|
|
44
42
|
)
|
|
45
43
|
end
|
|
46
44
|
|
|
47
|
-
def source_root(root: MilkTea.root)
|
|
45
|
+
def self.source_root(root: MilkTea.root)
|
|
48
46
|
source(root:).checkout_root
|
|
49
47
|
end
|
|
50
48
|
|
|
51
|
-
def include_root(root: MilkTea.root)
|
|
49
|
+
def self.include_root(root: MilkTea.root)
|
|
52
50
|
install_root(root:).join("include")
|
|
53
51
|
end
|
|
54
52
|
|
|
55
|
-
def header_path(root: MilkTea.root)
|
|
53
|
+
def self.header_path(root: MilkTea.root)
|
|
56
54
|
include_root(root:).join("pcre2.h")
|
|
57
55
|
end
|
|
58
56
|
|
|
59
|
-
def build_root(root: MilkTea.root)
|
|
57
|
+
def self.build_root(root: MilkTea.root)
|
|
60
58
|
MilkTea.writable_root_for(root).join("tmp/vendored-pcre2")
|
|
61
59
|
end
|
|
62
60
|
|
|
63
|
-
def install_root(root: MilkTea.root)
|
|
61
|
+
def self.install_root(root: MilkTea.root)
|
|
64
62
|
MilkTea.writable_root_for(root).join("tmp/vendored-pcre2-prefix")
|
|
65
63
|
end
|
|
66
64
|
|
|
67
|
-
def archive_path(root: MilkTea.root)
|
|
65
|
+
def self.archive_path(root: MilkTea.root)
|
|
68
66
|
install_root(root:).join("lib/libpcre2-8.a")
|
|
69
67
|
end
|
|
70
68
|
|
|
71
|
-
def include_flags(root: MilkTea.root)
|
|
69
|
+
def self.include_flags(root: MilkTea.root)
|
|
72
70
|
library(root:).include_flags
|
|
73
71
|
end
|
|
74
72
|
|
|
75
|
-
def link_flags(root: MilkTea.root)
|
|
73
|
+
def self.link_flags(root: MilkTea.root)
|
|
76
74
|
library(root:).link_flags
|
|
77
75
|
end
|
|
78
76
|
|
|
79
|
-
def prepare!(root: MilkTea.root, **kwargs)
|
|
77
|
+
def self.prepare!(root: MilkTea.root, **kwargs)
|
|
80
78
|
source(root:).bootstrap!
|
|
81
79
|
library(root:).prepare!(**kwargs)
|
|
82
80
|
end
|
|
@@ -92,39 +92,35 @@ module MilkTea
|
|
|
92
92
|
archive_for(platform).prepare!(env:, cc:, platform:)
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
private
|
|
96
|
-
|
|
97
95
|
def archive_for(platform)
|
|
98
96
|
platform == :wasm ? @wasm_archive : @desktop_archive
|
|
99
97
|
end
|
|
100
98
|
end
|
|
101
99
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
def library(root: MilkTea.root)
|
|
100
|
+
def self.library(root: MilkTea.root)
|
|
105
101
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
106
102
|
@libraries ||= {}
|
|
107
103
|
@libraries[resolved_root.to_s] ||= AdaptiveArchive.new(root: resolved_root)
|
|
108
104
|
end
|
|
109
105
|
|
|
110
|
-
def source_root(root: MilkTea.root)
|
|
106
|
+
def self.source_root(root: MilkTea.root)
|
|
111
107
|
MilkTea.writable_root_for(root).join("third_party/raylib-upstream/src")
|
|
112
108
|
end
|
|
113
109
|
|
|
114
|
-
def build_root(root: MilkTea.root, platform: nil)
|
|
110
|
+
def self.build_root(root: MilkTea.root, platform: nil)
|
|
115
111
|
suffix = platform == :wasm ? "tmp/vendored-raylib-web" : "tmp/vendored-raylib-opengl43"
|
|
116
112
|
MilkTea.writable_root_for(root).join(suffix)
|
|
117
113
|
end
|
|
118
114
|
|
|
119
|
-
def archive_path(root: MilkTea.root, platform: nil)
|
|
115
|
+
def self.archive_path(root: MilkTea.root, platform: nil)
|
|
120
116
|
build_root(root:, platform:).join("libraylib.a")
|
|
121
117
|
end
|
|
122
118
|
|
|
123
|
-
def link_flags(root: MilkTea.root, platform: nil)
|
|
119
|
+
def self.link_flags(root: MilkTea.root, platform: nil)
|
|
124
120
|
library(root:).link_flags(platform:)
|
|
125
121
|
end
|
|
126
122
|
|
|
127
|
-
def prepare!(root: MilkTea.root, platform: nil, **kwargs)
|
|
123
|
+
def self.prepare!(root: MilkTea.root, platform: nil, **kwargs)
|
|
128
124
|
library(root:).prepare!(platform:, **kwargs)
|
|
129
125
|
end
|
|
130
126
|
end
|
|
@@ -15,14 +15,12 @@ module MilkTea
|
|
|
15
15
|
-DSDL_EXAMPLES=OFF
|
|
16
16
|
].freeze
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def source(root: MilkTea.root)
|
|
18
|
+
def self.source(root: MilkTea.root)
|
|
21
19
|
UpstreamSources.default_sources(root:).find { |entry| entry.name == SOURCE_NAME } ||
|
|
22
20
|
raise(Error, "missing upstream source definition for #{SOURCE_NAME}")
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
def library(root: MilkTea.root)
|
|
23
|
+
def self.library(root: MilkTea.root)
|
|
26
24
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
27
25
|
@libraries ||= {}
|
|
28
26
|
@libraries[resolved_root.to_s] ||= VendoredCLibrary::CMake.new(
|
|
@@ -38,39 +36,39 @@ module MilkTea
|
|
|
38
36
|
)
|
|
39
37
|
end
|
|
40
38
|
|
|
41
|
-
def source_root(root: MilkTea.root)
|
|
39
|
+
def self.source_root(root: MilkTea.root)
|
|
42
40
|
source(root:).checkout_root
|
|
43
41
|
end
|
|
44
42
|
|
|
45
|
-
def include_root(root: MilkTea.root)
|
|
43
|
+
def self.include_root(root: MilkTea.root)
|
|
46
44
|
source_root(root:).join("include")
|
|
47
45
|
end
|
|
48
46
|
|
|
49
|
-
def header_root(root: MilkTea.root)
|
|
47
|
+
def self.header_root(root: MilkTea.root)
|
|
50
48
|
include_root(root:).join("SDL3")
|
|
51
49
|
end
|
|
52
50
|
|
|
53
|
-
def build_root(root: MilkTea.root)
|
|
51
|
+
def self.build_root(root: MilkTea.root)
|
|
54
52
|
MilkTea.writable_root_for(root).join("tmp/vendored-sdl3")
|
|
55
53
|
end
|
|
56
54
|
|
|
57
|
-
def install_root(root: MilkTea.root)
|
|
55
|
+
def self.install_root(root: MilkTea.root)
|
|
58
56
|
MilkTea.writable_root_for(root).join("tmp/vendored-sdl3-prefix")
|
|
59
57
|
end
|
|
60
58
|
|
|
61
|
-
def archive_path(root: MilkTea.root)
|
|
59
|
+
def self.archive_path(root: MilkTea.root)
|
|
62
60
|
install_root(root:).join("lib/libSDL3.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
|
|
@@ -6,9 +6,7 @@ module MilkTea
|
|
|
6
6
|
module VendoredSteamworks
|
|
7
7
|
Error = VendoredCLibrary::Error
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def library(root: MilkTea.root)
|
|
9
|
+
def self.library(root: MilkTea.root)
|
|
12
10
|
resolved_root = Pathname.new(File.expand_path(root.to_s))
|
|
13
11
|
@libraries ||= {}
|
|
14
12
|
@libraries[resolved_root.to_s] ||= Library.new(root: resolved_root)
|
|
@@ -51,8 +49,6 @@ module MilkTea
|
|
|
51
49
|
raise tool_not_found(e)
|
|
52
50
|
end
|
|
53
51
|
|
|
54
|
-
private
|
|
55
|
-
|
|
56
52
|
def copy_if_present(path)
|
|
57
53
|
return unless path && File.file?(path)
|
|
58
54
|
|
data/lib/milk_tea/core/ast.rb
CHANGED
|
@@ -9,8 +9,8 @@ module MilkTea
|
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
TypeParamConstraint = Data.define(:kind, :interface_ref) do
|
|
13
|
-
def initialize(kind:, interface_ref: nil) = super
|
|
12
|
+
TypeParamConstraint = Data.define(:kind, :interface_ref, :line, :column) do
|
|
13
|
+
def initialize(kind:, interface_ref: nil, line: nil, column: nil) = super
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
TypeParam = Data.define(:name, :constraints, :line, :column, :length) do
|
|
@@ -19,7 +19,9 @@ module MilkTea
|
|
|
19
19
|
ValueTypeParam = Data.define(:name, :type, :line, :column, :length) do
|
|
20
20
|
def initialize(name:, type:, line: nil, column: nil, length: nil) = super
|
|
21
21
|
end
|
|
22
|
-
TypeArgument = Data.define(:value)
|
|
22
|
+
TypeArgument = Data.define(:value, :line, :column) do
|
|
23
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
24
|
+
end
|
|
23
25
|
class TypeRef < Data.define(:name, :arguments, :nullable, :lifetime, :line, :column, :length)
|
|
24
26
|
def initialize(name:, arguments:, nullable:, lifetime: nil, line: nil, column: nil, length: nil) = super
|
|
25
27
|
|
|
@@ -40,23 +42,33 @@ module MilkTea
|
|
|
40
42
|
nullable ? "#{text}?" : text
|
|
41
43
|
end
|
|
42
44
|
end
|
|
43
|
-
FunctionType = Data.define(:params, :return_type)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
FunctionType = Data.define(:params, :return_type, :line, :column) do
|
|
46
|
+
def initialize(params:, return_type:, line: nil, column: nil) = super
|
|
47
|
+
end
|
|
48
|
+
ProcType = Data.define(:params, :return_type, :line, :column) do
|
|
49
|
+
def initialize(params:, return_type:, line: nil, column: nil) = super
|
|
50
|
+
end
|
|
51
|
+
TupleType = Data.define(:element_types, :nullable, :line, :column) do
|
|
52
|
+
def initialize(element_types:, nullable: false, line: nil, column: nil) = super
|
|
47
53
|
end
|
|
48
54
|
DynType = Data.define(:interface, :nullable, :line, :column, :length) do
|
|
49
55
|
def initialize(interface:, nullable: false, line: nil, column: nil, length: nil) = super
|
|
50
56
|
end
|
|
51
|
-
SourceFile = Data.define(:module_name, :module_kind, :imports, :directives, :declarations, :line, :node_ids, :node_path_ids) do
|
|
52
|
-
def initialize(module_name:, module_kind:, imports:, directives:, declarations:, line: nil, node_ids: {}, node_path_ids: {}) = super
|
|
57
|
+
SourceFile = Data.define(:module_name, :module_kind, :imports, :directives, :declarations, :line, :column, :node_ids, :node_path_ids) do
|
|
58
|
+
def initialize(module_name:, module_kind:, imports:, directives:, declarations:, line: nil, column: nil, node_ids: {}, node_path_ids: {}) = super
|
|
53
59
|
end
|
|
54
60
|
Import = Data.define(:path, :alias_name, :line, :column, :length) do
|
|
55
61
|
def initialize(path:, alias_name:, line: nil, column: nil, length: nil) = super
|
|
56
62
|
end
|
|
57
|
-
LinkDirective = Data.define(:value)
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
LinkDirective = Data.define(:value, :line, :column) do
|
|
64
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
65
|
+
end
|
|
66
|
+
IncludeDirective = Data.define(:value, :line, :column) do
|
|
67
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
68
|
+
end
|
|
69
|
+
CompilerFlagDirective = Data.define(:value, :line, :column) do
|
|
70
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
71
|
+
end
|
|
60
72
|
ConstDecl = Data.define(:name, :type, :value, :block_body, :visibility, :attributes, :line, :column) do
|
|
61
73
|
def initialize(name:, type:, value:, block_body: nil, visibility:, attributes: [], line: nil, column: nil) = super
|
|
62
74
|
end
|
|
@@ -111,16 +123,18 @@ module MilkTea
|
|
|
111
123
|
MethodDef = Data.define(:name, :type_params, :params, :return_type, :body, :kind, :visibility, :async, :attributes, :line, :column) do
|
|
112
124
|
def initialize(name:, type_params:, params:, return_type:, body:, kind:, visibility:, async:, attributes: [], line: nil, column: nil) = super
|
|
113
125
|
end
|
|
114
|
-
ExternFunctionDecl = Data.define(:name, :type_params, :params, :return_type, :variadic, :attributes, :line, :mapping) do
|
|
115
|
-
def initialize(name:, type_params:, params:, return_type:, variadic:, attributes: [], line: nil, mapping: nil) = super
|
|
126
|
+
ExternFunctionDecl = Data.define(:name, :type_params, :params, :return_type, :variadic, :attributes, :line, :column, :mapping) do
|
|
127
|
+
def initialize(name:, type_params:, params:, return_type:, variadic:, attributes: [], line: nil, column: nil, mapping: nil) = super
|
|
116
128
|
end
|
|
117
|
-
ForeignFunctionDecl = Data.define(:name, :type_params, :params, :return_type, :variadic, :mapping, :visibility, :attributes, :line) do
|
|
118
|
-
def initialize(name:, type_params:, params:, return_type:, variadic:, mapping:, visibility:, attributes: [], line: nil) = super
|
|
129
|
+
ForeignFunctionDecl = Data.define(:name, :type_params, :params, :return_type, :variadic, :mapping, :visibility, :attributes, :line, :column) do
|
|
130
|
+
def initialize(name:, type_params:, params:, return_type:, variadic:, mapping:, visibility:, attributes: [], line: nil, column: nil) = super
|
|
119
131
|
end
|
|
120
132
|
Param = Data.define(:name, :type, :line, :column, :default_value) do
|
|
121
133
|
def initialize(name:, type:, line: nil, column: nil, default_value: nil) = super
|
|
122
134
|
end
|
|
123
|
-
ForeignParam = Data.define(:name, :type, :mode, :boundary_type)
|
|
135
|
+
ForeignParam = Data.define(:name, :type, :mode, :boundary_type, :line, :column) do
|
|
136
|
+
def initialize(name:, type:, mode:, boundary_type:, line: nil, column: nil) = super
|
|
137
|
+
end
|
|
124
138
|
LocalDecl = Data.define(:kind, :name, :type, :value, :else_binding, :else_body, :line, :column, :recovered_else, :destructure_bindings, :destructure_type_name) do
|
|
125
139
|
def initialize(kind:, name:, type:, value:, else_binding: nil, else_body: nil, line: nil, column: nil, recovered_else: false, destructure_bindings: nil, destructure_type_name: nil) = super
|
|
126
140
|
end
|
|
@@ -130,13 +144,15 @@ module MilkTea
|
|
|
130
144
|
IfBranch = Data.define(:condition, :body, :line, :column, :length) do
|
|
131
145
|
def initialize(condition:, body:, line: nil, column: nil, length: nil) = super
|
|
132
146
|
end
|
|
133
|
-
IfStmt = Data.define(:branches, :else_body, :inline, :line, :else_line, :else_column) do
|
|
134
|
-
def initialize(branches:, else_body:, inline: false, line: nil, else_line: nil, else_column: nil) = super
|
|
147
|
+
IfStmt = Data.define(:branches, :else_body, :inline, :line, :column, :else_line, :else_column) do
|
|
148
|
+
def initialize(branches:, else_body:, inline: false, line: nil, column: nil, else_line: nil, else_column: nil) = super
|
|
135
149
|
end
|
|
136
150
|
VariantDecl = Data.define(:name, :type_params, :arms, :visibility, :attributes, :line, :column) do
|
|
137
151
|
def initialize(name:, type_params:, arms:, visibility:, attributes: [], line: nil, column: nil) = super
|
|
138
152
|
end
|
|
139
|
-
VariantArm = Data.define(:name, :fields)
|
|
153
|
+
VariantArm = Data.define(:name, :fields, :line, :column) do
|
|
154
|
+
def initialize(name:, fields:, line: nil, column: nil) = super
|
|
155
|
+
end
|
|
140
156
|
MatchArm = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :body) do
|
|
141
157
|
def initialize(pattern:, binding_name:, body:, binding_line: nil, binding_column: nil) = super
|
|
142
158
|
end
|
|
@@ -155,8 +171,8 @@ module MilkTea
|
|
|
155
171
|
UnsafeStmt = Data.define(:body, :line, :column, :length) do
|
|
156
172
|
def initialize(body:, line: nil, column: nil, length: nil) = super
|
|
157
173
|
end
|
|
158
|
-
StaticAssert = Data.define(:condition, :message, :line) do
|
|
159
|
-
def initialize(condition:, message:, line: nil) = super
|
|
174
|
+
StaticAssert = Data.define(:condition, :message, :line, :column) do
|
|
175
|
+
def initialize(condition:, message:, line: nil, column: nil) = super
|
|
160
176
|
end
|
|
161
177
|
EmitStmt = Data.define(:declaration, :line, :column) do
|
|
162
178
|
def initialize(declaration:, line: nil, column: nil) = super
|
|
@@ -208,8 +224,8 @@ module MilkTea
|
|
|
208
224
|
ErrorExpr = Data.define(:line, :column, :length, :message) do
|
|
209
225
|
def initialize(line: nil, column: nil, length: nil, message: nil) = super
|
|
210
226
|
end
|
|
211
|
-
ExpressionStmt = Data.define(:expression, :line) do
|
|
212
|
-
def initialize(expression:, line: nil) = super
|
|
227
|
+
ExpressionStmt = Data.define(:expression, :line, :column) do
|
|
228
|
+
def initialize(expression:, line: nil, column: nil) = super
|
|
213
229
|
end
|
|
214
230
|
|
|
215
231
|
Identifier = Data.define(:name, :line, :column) do
|
|
@@ -218,36 +234,78 @@ module MilkTea
|
|
|
218
234
|
MemberAccess = Data.define(:receiver, :member, :line, :column) do
|
|
219
235
|
def initialize(receiver:, member:, line: nil, column: nil) = super
|
|
220
236
|
end
|
|
221
|
-
IndexAccess = Data.define(:receiver, :index)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
237
|
+
IndexAccess = Data.define(:receiver, :index, :line, :column) do
|
|
238
|
+
def initialize(receiver:, index:, line: nil, column: nil) = super
|
|
239
|
+
end
|
|
240
|
+
Specialization = Data.define(:callee, :arguments, :line, :column) do
|
|
241
|
+
def initialize(callee:, arguments:, line: nil, column: nil) = super
|
|
242
|
+
end
|
|
243
|
+
Call = Data.define(:callee, :arguments, :line, :column) do
|
|
244
|
+
def initialize(callee:, arguments:, line: nil, column: nil) = super
|
|
245
|
+
end
|
|
246
|
+
Argument = Data.define(:name, :value, :line, :column) do
|
|
247
|
+
def initialize(name:, value:, line: nil, column: nil) = super
|
|
248
|
+
end
|
|
249
|
+
UnaryOp = Data.define(:operator, :operand, :line, :column) do
|
|
250
|
+
def initialize(operator:, operand:, line: nil, column: nil) = super
|
|
251
|
+
end
|
|
252
|
+
BinaryOp = Data.define(:operator, :left, :right, :line, :column) do
|
|
253
|
+
def initialize(operator:, left:, right:, line: nil, column: nil) = super
|
|
254
|
+
end
|
|
255
|
+
RangeExpr = Data.define(:start_expr, :end_expr, :line, :column) do
|
|
256
|
+
def initialize(start_expr:, end_expr:, line: nil, column: nil) = super
|
|
257
|
+
end
|
|
258
|
+
ExpressionList = Data.define(:elements, :line, :column) do
|
|
259
|
+
def initialize(elements:, line: nil, column: nil) = super
|
|
260
|
+
end
|
|
261
|
+
IfExpr = Data.define(:condition, :then_expression, :else_expression, :line, :column) do
|
|
262
|
+
def initialize(condition:, then_expression:, else_expression:, line: nil, column: nil) = super
|
|
263
|
+
end
|
|
230
264
|
MatchExpr = Data.define(:expression, :arms, :line, :column, :length, :desugared_from_is) do
|
|
231
265
|
def initialize(expression:, arms:, line: nil, column: nil, length: nil, desugared_from_is: false) = super
|
|
232
266
|
end
|
|
233
267
|
UnsafeExpr = Data.define(:expression, :line, :column, :length) do
|
|
234
268
|
def initialize(expression:, line: nil, column: nil, length: nil) = super
|
|
235
269
|
end
|
|
236
|
-
ProcExpr = Data.define(:params, :return_type, :body)
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
270
|
+
ProcExpr = Data.define(:params, :return_type, :body, :line, :column) do
|
|
271
|
+
def initialize(params:, return_type:, body:, line: nil, column: nil) = super
|
|
272
|
+
end
|
|
273
|
+
AwaitExpr = Data.define(:expression, :line, :column) do
|
|
274
|
+
def initialize(expression:, line: nil, column: nil) = super
|
|
275
|
+
end
|
|
276
|
+
SizeofExpr = Data.define(:type, :line, :column) do
|
|
277
|
+
def initialize(type:, line: nil, column: nil) = super
|
|
278
|
+
end
|
|
279
|
+
AlignofExpr = Data.define(:type, :line, :column) do
|
|
280
|
+
def initialize(type:, line: nil, column: nil) = super
|
|
281
|
+
end
|
|
282
|
+
OffsetofExpr = Data.define(:type, :field, :line, :column) do
|
|
283
|
+
def initialize(type:, field:, line: nil, column: nil) = super
|
|
284
|
+
end
|
|
285
|
+
IntegerLiteral = Data.define(:lexeme, :value, :line, :column) do
|
|
286
|
+
def initialize(lexeme:, value:, line: nil, column: nil) = super
|
|
287
|
+
end
|
|
288
|
+
FloatLiteral = Data.define(:lexeme, :value, :line, :column) do
|
|
289
|
+
def initialize(lexeme:, value:, line: nil, column: nil) = super
|
|
290
|
+
end
|
|
291
|
+
StringLiteral = Data.define(:lexeme, :value, :cstring, :line, :column) do
|
|
292
|
+
def initialize(lexeme:, value:, cstring: false, line: nil, column: nil) = super
|
|
293
|
+
end
|
|
294
|
+
FormatString = Data.define(:parts, :line, :column) do
|
|
295
|
+
def initialize(parts:, line: nil, column: nil) = super
|
|
296
|
+
end
|
|
297
|
+
FormatTextPart = Data.define(:value, :line, :column) do
|
|
298
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
299
|
+
end
|
|
300
|
+
FormatExprPart = Data.define(:expression, :format_spec, :line, :column) do
|
|
301
|
+
def initialize(expression:, format_spec: nil, line: nil, column: nil) = super
|
|
302
|
+
end
|
|
247
303
|
CharLiteral = Data.define(:lexeme, :value, :line, :column) do
|
|
248
304
|
def initialize(lexeme:, value:, line: nil, column: nil) = super
|
|
249
305
|
end
|
|
250
|
-
BooleanLiteral = Data.define(:value)
|
|
306
|
+
BooleanLiteral = Data.define(:value, :line, :column) do
|
|
307
|
+
def initialize(value:, line: nil, column: nil) = super
|
|
308
|
+
end
|
|
251
309
|
NullLiteral = Data.define(:type, :line, :column) do
|
|
252
310
|
def initialize(type:, line: nil, column: nil) = super
|
|
253
311
|
end
|
|
@@ -4,9 +4,7 @@ module MilkTea
|
|
|
4
4
|
AttributeBinding = Data.define(:name, :targets, :params, :module_name, :builtin, :ast)
|
|
5
5
|
BUILTIN_ATTRIBUTE_NAMES = %w[packed align deprecated test expect_fatal].freeze
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def builtin_attribute_binding(name, types)
|
|
7
|
+
def self.builtin_attribute_binding(name, types)
|
|
10
8
|
case name
|
|
11
9
|
when "packed"
|
|
12
10
|
AttributeBinding.new(
|