mt-lang 0.3.23 → 0.3.25
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 -1
- data/lib/milk_tea/core/bindings/attribute_binding.rb +51 -49
- data/lib/milk_tea/core/bindings/function_binding.rb +3 -1
- data/lib/milk_tea/core/bindings/module_binding.rb +42 -40
- data/lib/milk_tea/core/bindings/value_binding.rb +16 -14
- data/lib/milk_tea/core/bindings.rb +4 -9
- data/lib/milk_tea/core/c_backend/control_flow_emission.rb +11 -11
- data/lib/milk_tea/core/c_backend/expressions.rb +11 -11
- data/lib/milk_tea/core/c_backend/feature_detection.rb +15 -19
- data/lib/milk_tea/core/c_backend/format_helpers.rb +1 -1
- data/lib/milk_tea/core/c_backend/reinterpret.rb +10 -10
- data/lib/milk_tea/core/c_backend/runtime_helpers.rb +1 -1
- data/lib/milk_tea/core/c_backend/statements.rb +20 -20
- data/lib/milk_tea/core/c_backend/type_declaration.rb +4 -4
- data/lib/milk_tea/core/c_backend/type_system.rb +2 -1
- data/lib/milk_tea/core/c_backend.rb +3 -3
- data/lib/milk_tea/core/compile_time.rb +41 -70
- data/lib/milk_tea/core/control_flow/builder.rb +3 -3
- data/lib/milk_tea/core/control_flow/constant_propagation.rb +1 -1
- data/lib/milk_tea/core/control_flow/graph.rb +1 -1
- data/lib/milk_tea/core/control_flow/termination.rb +1 -1
- data/lib/milk_tea/core/cst.rb +16 -0
- data/lib/milk_tea/core/flow_scope.rb +13 -0
- data/lib/milk_tea/core/lexer/character_classes.rb +2 -2
- data/lib/milk_tea/core/lexer/format_strings.rb +5 -5
- data/lib/milk_tea/core/lexer/heredocs.rb +6 -6
- data/lib/milk_tea/core/lexer/indentation.rb +4 -4
- data/lib/milk_tea/core/lexer/numbers.rb +1 -1
- data/lib/milk_tea/core/lexer/strings.rb +4 -4
- data/lib/milk_tea/core/lexer/symbols.rb +3 -3
- data/lib/milk_tea/core/lexer/trivia.rb +4 -4
- data/lib/milk_tea/core/lexer.rb +17 -17
- data/lib/milk_tea/core/lowering/async/analysis.rb +210 -208
- data/lib/milk_tea/core/lowering/async/async_lowering.rb +1406 -0
- data/lib/milk_tea/core/lowering/async/frame_builder.rb +615 -613
- data/lib/milk_tea/core/lowering/async/normalization.rb +410 -408
- data/lib/milk_tea/core/lowering/block.rb +982 -980
- data/lib/milk_tea/core/lowering/calls.rb +1360 -1358
- data/lib/milk_tea/core/lowering/declarations.rb +175 -173
- data/lib/milk_tea/core/lowering/dyn.rb +171 -169
- data/lib/milk_tea/core/lowering/events.rb +946 -944
- data/lib/milk_tea/core/lowering/expressions.rb +1514 -1512
- data/lib/milk_tea/core/lowering/foreign_cstr.rb +180 -178
- data/lib/milk_tea/core/lowering/functions.rb +186 -184
- data/lib/milk_tea/core/lowering/loops.rb +1004 -1002
- data/lib/milk_tea/core/lowering/lowering_context.rb +1 -1
- data/lib/milk_tea/core/lowering/proc.rb +355 -353
- data/lib/milk_tea/core/lowering/resolve.rb +2127 -2125
- data/lib/milk_tea/core/lowering/scans.rb +162 -168
- data/lib/milk_tea/core/lowering/str_buffer.rb +104 -102
- data/lib/milk_tea/core/lowering/utils.rb +965 -963
- data/lib/milk_tea/core/lowering.rb +22 -22
- data/lib/milk_tea/core/module_binder.rb +1 -1
- data/lib/milk_tea/core/module_loader.rb +2 -2
- data/lib/milk_tea/core/parser/attributes.rb +1 -1
- data/lib/milk_tea/core/parser/blocks.rb +2 -2
- data/lib/milk_tea/core/parser/declarations.rb +15 -15
- data/lib/milk_tea/core/parser/expressions.rb +20 -20
- data/lib/milk_tea/core/parser/recovery.rb +1 -1
- data/lib/milk_tea/core/parser/statements.rb +3 -3
- data/lib/milk_tea/core/parser/types.rb +4 -4
- data/lib/milk_tea/core/parser.rb +39 -21
- data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +6 -6
- data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +5 -5
- data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +2 -2
- data/lib/milk_tea/core/semantic_analyzer/calls.rb +1 -1
- data/lib/milk_tea/core/semantic_analyzer/expressions.rb +4 -4
- data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +37 -37
- data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +4 -4
- data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +4 -4
- data/lib/milk_tea/core/semantic_analyzer/generics.rb +4 -4
- data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +7 -7
- data/lib/milk_tea/core/semantic_analyzer/nullability.rb +59 -59
- data/lib/milk_tea/core/semantic_analyzer/statements.rb +3 -3
- data/lib/milk_tea/core/semantic_analyzer/top_level.rb +1 -1
- data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +12 -12
- data/lib/milk_tea/core/types/layout.rb +3 -1
- data/lib/milk_tea/core/types/visitor.rb +351 -349
- data/lib/milk_tea/core.rb +0 -2
- data/lib/milk_tea/tooling/linter/flow_rules.rb +3 -3
- metadata +4 -5
- data/lib/milk_tea/core/cst_builder.rb +0 -19
- data/lib/milk_tea/core/lowering/async/lowering.rb +0 -1404
- data/lib/milk_tea/core/token_stream.rb +0 -30
data/lib/milk_tea/core.rb
CHANGED
|
@@ -4,10 +4,8 @@ require_relative "base"
|
|
|
4
4
|
|
|
5
5
|
require_relative "core/keywords"
|
|
6
6
|
require_relative "core/token"
|
|
7
|
-
require_relative "core/token_stream"
|
|
8
7
|
require_relative "core/lexer"
|
|
9
8
|
require_relative "core/cst"
|
|
10
|
-
require_relative "core/cst_builder"
|
|
11
9
|
require_relative "core/ast"
|
|
12
10
|
require_relative "core/types"
|
|
13
11
|
require_relative "core/bindings"
|
|
@@ -137,7 +137,7 @@ module MilkTea
|
|
|
137
137
|
DeadAssignmentAnalysis.new(
|
|
138
138
|
graph:,
|
|
139
139
|
liveness:,
|
|
140
|
-
readable_bindings: graph.
|
|
140
|
+
readable_bindings: graph.all_read_binding_keys,
|
|
141
141
|
locally_declared:,
|
|
142
142
|
)
|
|
143
143
|
end
|
|
@@ -332,7 +332,7 @@ module MilkTea
|
|
|
332
332
|
case stmt
|
|
333
333
|
when AST::WhileStmt
|
|
334
334
|
body = stmt.body || []
|
|
335
|
-
if !body.empty? && ControlFlow::Termination.
|
|
335
|
+
if !body.empty? && ControlFlow::Termination.loop_body_always_terminates?(body)
|
|
336
336
|
@warnings << Warning.new(
|
|
337
337
|
path: @path,
|
|
338
338
|
line: stmt.line,
|
|
@@ -346,7 +346,7 @@ module MilkTea
|
|
|
346
346
|
walk_stmts_for_loop_check(body)
|
|
347
347
|
when AST::ForStmt
|
|
348
348
|
body = stmt.body || []
|
|
349
|
-
if !body.empty? && ControlFlow::Termination.
|
|
349
|
+
if !body.empty? && ControlFlow::Termination.loop_body_always_terminates?(body)
|
|
350
350
|
@warnings << Warning.new(
|
|
351
351
|
path: @path,
|
|
352
352
|
line: stmt.line,
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mt-lang
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.25
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Long (Teefan) Tran
|
|
@@ -214,7 +214,7 @@ files:
|
|
|
214
214
|
- lib/milk_tea/core/control_flow/reachability.rb
|
|
215
215
|
- lib/milk_tea/core/control_flow/termination.rb
|
|
216
216
|
- lib/milk_tea/core/cst.rb
|
|
217
|
-
- lib/milk_tea/core/
|
|
217
|
+
- lib/milk_tea/core/flow_scope.rb
|
|
218
218
|
- lib/milk_tea/core/intrinsics.rb
|
|
219
219
|
- lib/milk_tea/core/ir.rb
|
|
220
220
|
- lib/milk_tea/core/keywords.rb
|
|
@@ -231,8 +231,8 @@ files:
|
|
|
231
231
|
- lib/milk_tea/core/lowering.rb
|
|
232
232
|
- lib/milk_tea/core/lowering/artifacts.rb
|
|
233
233
|
- lib/milk_tea/core/lowering/async/analysis.rb
|
|
234
|
+
- lib/milk_tea/core/lowering/async/async_lowering.rb
|
|
234
235
|
- lib/milk_tea/core/lowering/async/frame_builder.rb
|
|
235
|
-
- lib/milk_tea/core/lowering/async/lowering.rb
|
|
236
236
|
- lib/milk_tea/core/lowering/async/normalization.rb
|
|
237
237
|
- lib/milk_tea/core/lowering/block.rb
|
|
238
238
|
- lib/milk_tea/core/lowering/calls.rb
|
|
@@ -284,7 +284,6 @@ files:
|
|
|
284
284
|
- lib/milk_tea/core/semantic_analyzer/type_compatibility.rb
|
|
285
285
|
- lib/milk_tea/core/semantic_analyzer/type_declaration.rb
|
|
286
286
|
- lib/milk_tea/core/token.rb
|
|
287
|
-
- lib/milk_tea/core/token_stream.rb
|
|
288
287
|
- lib/milk_tea/core/types.rb
|
|
289
288
|
- lib/milk_tea/core/types/layout.rb
|
|
290
289
|
- lib/milk_tea/core/types/predicates.rb
|
|
@@ -625,7 +624,7 @@ metadata:
|
|
|
625
624
|
homepage_uri: https://teefan.github.io/mt-lang/
|
|
626
625
|
source_code_uri: https://github.com/teefan/mt-lang
|
|
627
626
|
post_install_message: |
|
|
628
|
-
Milk Tea 0.3.
|
|
627
|
+
Milk Tea 0.3.25 installed!
|
|
629
628
|
|
|
630
629
|
System requirements:
|
|
631
630
|
- A C compiler (gcc or clang) must be available on PATH
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module MilkTea
|
|
4
|
-
class CSTBuilder
|
|
5
|
-
def self.build(source, path: nil)
|
|
6
|
-
new(source, path:).build
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def initialize(source, path: nil)
|
|
10
|
-
@source = source
|
|
11
|
-
@path = path
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def build
|
|
15
|
-
lexed = Lexer.lex_with_trivia(@source, path: @path)
|
|
16
|
-
CST::SourceFile.new(source: @source, tokens: lexed.tokens, trivia: lexed.trivia)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|