mt-lang 0.3.9 → 0.3.11
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/README.md +2 -0
- data/docs/language-design.md +1 -2
- data/docs/language-manual.md +12 -1
- 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 +109 -51
- 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 +5 -3
- 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 +7 -9
- data/lib/milk_tea/core/parser/expressions.rb +15 -10
- data/lib/milk_tea/core/parser/recovery.rb +0 -2
- data/lib/milk_tea/core/parser/statements.rb +8 -2
- data/lib/milk_tea/core/parser/types.rb +12 -14
- data/lib/milk_tea/core/parser.rb +0 -2
- 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 +14 -17
- 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 +106 -109
- 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 +1376 -1314
- 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/cli.rb +10 -4
- 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 +112 -54
- 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
|
@@ -19,14 +19,12 @@ module MilkTea
|
|
|
19
19
|
-std=gnu99
|
|
20
20
|
].freeze
|
|
21
21
|
|
|
22
|
-
|
|
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
|
|
@@ -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,24 +144,26 @@ 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)
|
|
140
|
-
|
|
141
|
-
|
|
153
|
+
VariantArm = Data.define(:name, :fields, :line, :column) do
|
|
154
|
+
def initialize(name:, fields:, line: nil, column: nil) = super
|
|
155
|
+
end
|
|
156
|
+
MatchArm = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :body, :line, :column) do
|
|
157
|
+
def initialize(pattern:, binding_name:, body:, binding_line: nil, binding_column: nil, line: nil, column: nil) = super
|
|
142
158
|
end
|
|
143
159
|
MatchStmt = Data.define(:expression, :arms, :inline, :line, :column, :length) do
|
|
144
160
|
def initialize(expression:, arms:, inline: false, line: nil, column: nil, length: nil) = super
|
|
145
161
|
end
|
|
146
|
-
MatchExprArm = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :value) do
|
|
147
|
-
def initialize(pattern:, binding_name:, value:, binding_line: nil, binding_column: nil) = super
|
|
162
|
+
MatchExprArm = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :value, :line, :column) do
|
|
163
|
+
def initialize(pattern:, binding_name:, value:, binding_line: nil, binding_column: nil, line: nil, column: nil) = super
|
|
148
164
|
end
|
|
149
|
-
WhenBranch = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :body) do
|
|
150
|
-
def initialize(pattern:, binding_name:, body:, binding_line: nil, binding_column: nil) = super
|
|
165
|
+
WhenBranch = Data.define(:pattern, :binding_name, :binding_line, :binding_column, :body, :line, :column) do
|
|
166
|
+
def initialize(pattern:, binding_name:, body:, binding_line: nil, binding_column: nil, line: nil, column: nil) = super
|
|
151
167
|
end
|
|
152
168
|
WhenStmt = Data.define(:discriminant, :branches, :else_body, :line, :column, :length) do
|
|
153
169
|
def initialize(discriminant:, branches:, else_body:, line: nil, column: nil, length: nil) = super
|
|
@@ -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(
|