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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/lib/milk_tea/base.rb +1 -1
  3. data/lib/milk_tea/core/bindings/attribute_binding.rb +51 -49
  4. data/lib/milk_tea/core/bindings/function_binding.rb +3 -1
  5. data/lib/milk_tea/core/bindings/module_binding.rb +42 -40
  6. data/lib/milk_tea/core/bindings/value_binding.rb +16 -14
  7. data/lib/milk_tea/core/bindings.rb +4 -9
  8. data/lib/milk_tea/core/c_backend/control_flow_emission.rb +11 -11
  9. data/lib/milk_tea/core/c_backend/expressions.rb +11 -11
  10. data/lib/milk_tea/core/c_backend/feature_detection.rb +15 -19
  11. data/lib/milk_tea/core/c_backend/format_helpers.rb +1 -1
  12. data/lib/milk_tea/core/c_backend/reinterpret.rb +10 -10
  13. data/lib/milk_tea/core/c_backend/runtime_helpers.rb +1 -1
  14. data/lib/milk_tea/core/c_backend/statements.rb +20 -20
  15. data/lib/milk_tea/core/c_backend/type_declaration.rb +4 -4
  16. data/lib/milk_tea/core/c_backend/type_system.rb +2 -1
  17. data/lib/milk_tea/core/c_backend.rb +3 -3
  18. data/lib/milk_tea/core/compile_time.rb +41 -70
  19. data/lib/milk_tea/core/control_flow/builder.rb +3 -3
  20. data/lib/milk_tea/core/control_flow/constant_propagation.rb +1 -1
  21. data/lib/milk_tea/core/control_flow/graph.rb +1 -1
  22. data/lib/milk_tea/core/control_flow/termination.rb +1 -1
  23. data/lib/milk_tea/core/cst.rb +16 -0
  24. data/lib/milk_tea/core/flow_scope.rb +13 -0
  25. data/lib/milk_tea/core/lexer/character_classes.rb +2 -2
  26. data/lib/milk_tea/core/lexer/format_strings.rb +5 -5
  27. data/lib/milk_tea/core/lexer/heredocs.rb +6 -6
  28. data/lib/milk_tea/core/lexer/indentation.rb +4 -4
  29. data/lib/milk_tea/core/lexer/numbers.rb +1 -1
  30. data/lib/milk_tea/core/lexer/strings.rb +4 -4
  31. data/lib/milk_tea/core/lexer/symbols.rb +3 -3
  32. data/lib/milk_tea/core/lexer/trivia.rb +4 -4
  33. data/lib/milk_tea/core/lexer.rb +17 -17
  34. data/lib/milk_tea/core/lowering/async/analysis.rb +210 -208
  35. data/lib/milk_tea/core/lowering/async/async_lowering.rb +1406 -0
  36. data/lib/milk_tea/core/lowering/async/frame_builder.rb +615 -613
  37. data/lib/milk_tea/core/lowering/async/normalization.rb +410 -408
  38. data/lib/milk_tea/core/lowering/block.rb +982 -980
  39. data/lib/milk_tea/core/lowering/calls.rb +1360 -1358
  40. data/lib/milk_tea/core/lowering/declarations.rb +175 -173
  41. data/lib/milk_tea/core/lowering/dyn.rb +171 -169
  42. data/lib/milk_tea/core/lowering/events.rb +946 -944
  43. data/lib/milk_tea/core/lowering/expressions.rb +1514 -1512
  44. data/lib/milk_tea/core/lowering/foreign_cstr.rb +180 -178
  45. data/lib/milk_tea/core/lowering/functions.rb +186 -184
  46. data/lib/milk_tea/core/lowering/loops.rb +1004 -1002
  47. data/lib/milk_tea/core/lowering/lowering_context.rb +1 -1
  48. data/lib/milk_tea/core/lowering/proc.rb +355 -353
  49. data/lib/milk_tea/core/lowering/resolve.rb +2127 -2125
  50. data/lib/milk_tea/core/lowering/scans.rb +162 -168
  51. data/lib/milk_tea/core/lowering/str_buffer.rb +104 -102
  52. data/lib/milk_tea/core/lowering/utils.rb +965 -963
  53. data/lib/milk_tea/core/lowering.rb +22 -22
  54. data/lib/milk_tea/core/module_binder.rb +1 -1
  55. data/lib/milk_tea/core/module_loader.rb +2 -2
  56. data/lib/milk_tea/core/parser/attributes.rb +1 -1
  57. data/lib/milk_tea/core/parser/blocks.rb +2 -2
  58. data/lib/milk_tea/core/parser/declarations.rb +15 -15
  59. data/lib/milk_tea/core/parser/expressions.rb +20 -20
  60. data/lib/milk_tea/core/parser/recovery.rb +1 -1
  61. data/lib/milk_tea/core/parser/statements.rb +3 -3
  62. data/lib/milk_tea/core/parser/types.rb +4 -4
  63. data/lib/milk_tea/core/parser.rb +39 -21
  64. data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +6 -6
  65. data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +5 -5
  66. data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +2 -2
  67. data/lib/milk_tea/core/semantic_analyzer/calls.rb +1 -1
  68. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +4 -4
  69. data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +37 -37
  70. data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +4 -4
  71. data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +4 -4
  72. data/lib/milk_tea/core/semantic_analyzer/generics.rb +4 -4
  73. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +7 -7
  74. data/lib/milk_tea/core/semantic_analyzer/nullability.rb +59 -59
  75. data/lib/milk_tea/core/semantic_analyzer/statements.rb +3 -3
  76. data/lib/milk_tea/core/semantic_analyzer/top_level.rb +1 -1
  77. data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +12 -12
  78. data/lib/milk_tea/core/types/layout.rb +3 -1
  79. data/lib/milk_tea/core/types/visitor.rb +351 -349
  80. data/lib/milk_tea/core.rb +0 -2
  81. data/lib/milk_tea/tooling/linter/flow_rules.rb +3 -3
  82. metadata +4 -5
  83. data/lib/milk_tea/core/cst_builder.rb +0 -19
  84. data/lib/milk_tea/core/lowering/async/lowering.rb +0 -1404
  85. 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.read_bindings,
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.loop_body_always_exits?(body)
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.loop_body_always_exits?(body)
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.23
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/cst_builder.rb
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.23 installed!
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