mt-lang 0.3.38 → 0.3.40

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/docs/lsp-performance.md +347 -0
  3. data/lib/milk_tea/base.rb +1 -1
  4. data/lib/milk_tea/core/ast.rb +2 -2
  5. data/lib/milk_tea/core/bindings/attribute_binding.rb +1 -6
  6. data/lib/milk_tea/core/bindings/module_binding.rb +1 -1
  7. data/lib/milk_tea/core/intrinsics.rb +23 -1
  8. data/lib/milk_tea/core/lowering/functions.rb +3 -0
  9. data/lib/milk_tea/core/lowering/resolve.rb +4 -65
  10. data/lib/milk_tea/core/lowering/utils.rb +0 -17
  11. data/lib/milk_tea/core/lowering.rb +1 -2
  12. data/lib/milk_tea/core/module_binder.rb +4 -15
  13. data/lib/milk_tea/core/module_loader.rb +0 -2
  14. data/lib/milk_tea/core/parser/declarations.rb +24 -17
  15. data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +2 -111
  16. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +1 -2
  17. data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +26 -17
  18. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +26 -42
  19. data/lib/milk_tea/core/semantic_analyzer/type_compatibility.rb +0 -59
  20. data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +0 -2
  21. data/lib/milk_tea/core/types/predicates.rb +57 -0
  22. data/lib/milk_tea/core/types.rb +0 -4
  23. data/lib/milk_tea/lsp/diagnostics.rb +15 -5
  24. data/lib/milk_tea/lsp/server/code_actions.rb +0 -4
  25. data/lib/milk_tea/lsp/server/completion.rb +100 -77
  26. data/lib/milk_tea/lsp/server/diagnostics_scheduling.rb +4 -6
  27. data/lib/milk_tea/lsp/server/formatting.rb +13 -3
  28. data/lib/milk_tea/lsp/server/hover.rb +321 -41
  29. data/lib/milk_tea/lsp/server/lifecycle.rb +12 -0
  30. data/lib/milk_tea/lsp/server/references.rb +3 -1
  31. data/lib/milk_tea/lsp/server/semantic_tokens.rb +55 -16
  32. data/lib/milk_tea/lsp/server/text_documents.rb +2 -2
  33. data/lib/milk_tea/lsp/server/type_hierarchy.rb +2 -2
  34. data/lib/milk_tea/lsp/server/utilities.rb +4 -0
  35. data/lib/milk_tea/lsp/server.rb +9 -0
  36. data/lib/milk_tea/lsp/workspace/analysis.rb +14 -3
  37. data/lib/milk_tea/lsp/workspace/caches.rb +17 -1
  38. data/lib/milk_tea/lsp/workspace/collection.rb +4 -0
  39. data/lib/milk_tea/lsp/workspace/module_index.rb +134 -0
  40. data/lib/milk_tea/lsp/workspace/store.rb +9 -4
  41. data/lib/milk_tea/lsp/workspace.rb +8 -0
  42. data/lib/milk_tea/tooling/formatter.rb +2 -3
  43. data/lib/milk_tea/tooling/linter/fix_engine.rb +46 -0
  44. data/lib/milk_tea/tooling/linter/rules.rb +32 -0
  45. data/lib/milk_tea/tooling/linter.rb +4 -0
  46. data/lib/milk_tea/tooling.rb +0 -1
  47. metadata +4 -3
  48. data/lib/milk_tea/tooling/cst_formatter.rb +0 -13
@@ -35,6 +35,7 @@ module MilkTea
35
35
  owning-release-double
36
36
  prefer-conditional-expression
37
37
  prefer-inline-if
38
+ prefer-inline-methods
38
39
  prefer-is-variant
39
40
  prefer-let
40
41
  prefer-let-else
@@ -69,6 +70,7 @@ module MilkTea
69
70
  redundant-ignored-match-binding
70
71
  prefer-let-else
71
72
  prefer-var-else
73
+ prefer-inline-methods
72
74
  redundant-bool-compare
73
75
  redundant-cast
74
76
  redundant-else
@@ -95,6 +97,7 @@ module MilkTea
95
97
  "redundant-type-annotation" => "Remove redundant type annotation",
96
98
  "prefer-let-else" => "Rewrite as let-else",
97
99
  "prefer-var-else" => "Rewrite as var-else",
100
+ "prefer-inline-methods" => "Inline methods into struct",
98
101
  "trailing-list-comma" => "Remove trailing list comma",
99
102
  }.freeze
100
103
  EVENT_STACK_SNAPSHOT_WARNING_THRESHOLD = 128
@@ -771,6 +774,7 @@ module MilkTea
771
774
  profile_phase("rule.doc_tag") { emit_doc_tag_warnings(ast) } if full_tier?
772
775
  profile_phase("rule.event_capacity") { emit_event_capacity_warnings(ast) }
773
776
  profile_phase("rule.trailing_list_comma") { emit_trailing_list_comma_warnings(ast) }
777
+ profile_phase("rule.prefer_inline_methods") { emit_prefer_inline_methods_warnings(ast) }
774
778
  profile_phase("rule.line_too_long") { emit_line_too_long_warnings }
775
779
  @warnings
776
780
  end
@@ -11,7 +11,6 @@ require_relative "tooling/sexpr_dumper"
11
11
  require_relative "tooling/sexpr_parser"
12
12
  require_relative "tooling/build"
13
13
  require_relative "tooling/run"
14
- require_relative "tooling/cst_formatter"
15
14
  require_relative "tooling/error_formatter"
16
15
  require_relative "tooling/formatter"
17
16
  require_relative "tooling/linter"
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.38
4
+ version: 0.3.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Long (Teefan) Tran
@@ -149,6 +149,7 @@ files:
149
149
  - docs/index.html
150
150
  - docs/language-design.md
151
151
  - docs/language-manual.md
152
+ - docs/lsp-performance.md
152
153
  - lib/milk_tea.rb
153
154
  - lib/milk_tea/base.rb
154
155
  - lib/milk_tea/bindings.rb
@@ -338,6 +339,7 @@ files:
338
339
  - lib/milk_tea/lsp/workspace/collection.rb
339
340
  - lib/milk_tea/lsp/workspace/definition_index.rb
340
341
  - lib/milk_tea/lsp/workspace/dependency_graph.rb
342
+ - lib/milk_tea/lsp/workspace/module_index.rb
341
343
  - lib/milk_tea/lsp/workspace/store.rb
342
344
  - lib/milk_tea/lsp/workspace/utilities.rb
343
345
  - lib/milk_tea/packages.rb
@@ -383,7 +385,6 @@ files:
383
385
  - lib/milk_tea/tooling/cli/commands/snapshot.rb
384
386
  - lib/milk_tea/tooling/cli/commands/test.rb
385
387
  - lib/milk_tea/tooling/cli/commands/toolchain.rb
386
- - lib/milk_tea/tooling/cst_formatter.rb
387
388
  - lib/milk_tea/tooling/debug_info_formatter.rb
388
389
  - lib/milk_tea/tooling/debug_map.rb
389
390
  - lib/milk_tea/tooling/docs_app.rb
@@ -624,7 +625,7 @@ metadata:
624
625
  homepage_uri: https://teefan.github.io/mt-lang/
625
626
  source_code_uri: https://github.com/teefan/mt-lang
626
627
  post_install_message: |
627
- Milk Tea 0.3.38 installed!
628
+ Milk Tea 0.3.40 installed!
628
629
 
629
630
  System requirements:
630
631
  - A C compiler (gcc or clang) must be available on PATH
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module MilkTea
4
- class CSTFormatter
5
- def self.format(cst)
6
- cst.reconstruct
7
- end
8
-
9
- def self.format_normalized(cst)
10
- cst.reconstruct_normalized
11
- end
12
- end
13
- end