yoda-language-server 0.8.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +22 -27
  4. data/client/vscode/README.md +17 -2
  5. data/client/vscode/package-lock.json +908 -817
  6. data/client/vscode/package.json +17 -7
  7. data/client/vscode/src/check-versions.ts +49 -0
  8. data/client/vscode/src/config.ts +8 -1
  9. data/client/vscode/src/extension.ts +4 -3
  10. data/client/vscode/src/install-tools.ts +56 -16
  11. data/client/vscode/src/language-server.ts +5 -0
  12. data/client/vscode/src/test/runTest.ts +1 -1
  13. data/client/vscode/src/test/suite/hover.test.ts +13 -25
  14. data/client/vscode/src/test/suite/index.ts +1 -2
  15. data/client/vscode/src/utils.ts +11 -0
  16. data/images/hover-method.png +0 -0
  17. data/images/method-complete.png +0 -0
  18. data/lib/yoda/cli/analyze_deps.rb +46 -25
  19. data/lib/yoda/id_mask.rb +84 -0
  20. data/lib/yoda/instrument.rb +7 -0
  21. data/lib/yoda/model/descriptions/require_path_description.rb +45 -0
  22. data/lib/yoda/model/descriptions.rb +1 -0
  23. data/lib/yoda/model/node_signatures/node.rb +9 -1
  24. data/lib/yoda/model/values/literal_value.rb +3 -0
  25. data/lib/yoda/parsing/location.rb +9 -0
  26. data/lib/yoda/server/concurrent_writer.rb +1 -1
  27. data/lib/yoda/server/lifecycle_handler.rb +101 -78
  28. data/lib/yoda/server/notifier.rb +2 -55
  29. data/lib/yoda/services/loadable_path_resolver.rb +40 -0
  30. data/lib/yoda/services.rb +1 -0
  31. data/lib/yoda/store/actions/read_project_files.rb +9 -7
  32. data/lib/yoda/store/adapters/gdbm_adapter/namespace_accessor.rb +1 -1
  33. data/lib/yoda/store/adapters/memory_adapter.rb +1 -1
  34. data/lib/yoda/store/objects/libraries_status.rb +1 -1
  35. data/lib/yoda/store/objects/library/core.rb +8 -0
  36. data/lib/yoda/store/objects/library/gem.rb +14 -3
  37. data/lib/yoda/store/objects/library/path_resolvable.rb +29 -0
  38. data/lib/yoda/store/objects/library/std.rb +9 -0
  39. data/lib/yoda/store/objects/library.rb +1 -0
  40. data/lib/yoda/store/objects/patch.rb +1 -1
  41. data/lib/yoda/store/objects/patch_set.rb +2 -2
  42. data/lib/yoda/store/project/dependency.rb +22 -4
  43. data/lib/yoda/store/project/file_finder.rb +20 -0
  44. data/lib/yoda/store/project.rb +2 -0
  45. data/lib/yoda/store/registry/cache.rb +2 -2
  46. data/lib/yoda/store/registry/composer.rb +9 -7
  47. data/lib/yoda/store/registry/index.rb +14 -10
  48. data/lib/yoda/store/registry/library_registry.rb +3 -1
  49. data/lib/yoda/store/registry.rb +1 -1
  50. data/lib/yoda/typing/constant_resolver/code_query.rb +25 -0
  51. data/lib/yoda/typing/constant_resolver/query.rb +12 -1
  52. data/lib/yoda/typing/constant_resolver.rb +13 -8
  53. data/lib/yoda/typing/inferencer/load_resolver.rb +37 -0
  54. data/lib/yoda/typing/inferencer/tracer.rb +32 -0
  55. data/lib/yoda/typing/inferencer.rb +3 -2
  56. data/lib/yoda/typing/node_info.rb +5 -0
  57. data/lib/yoda/typing/tree/{defined.rb → ask_defined.rb} +3 -2
  58. data/lib/yoda/typing/tree/base.rb +65 -20
  59. data/lib/yoda/typing/tree/begin.rb +5 -5
  60. data/lib/yoda/typing/tree/block_call.rb +26 -0
  61. data/lib/yoda/typing/tree/case.rb +8 -19
  62. data/lib/yoda/typing/tree/class_tree.rb +10 -18
  63. data/lib/yoda/typing/tree/conditional_loop.rb +15 -0
  64. data/lib/yoda/typing/tree/constant.rb +19 -0
  65. data/lib/yoda/typing/tree/constant_assignment.rb +2 -2
  66. data/lib/yoda/typing/tree/ensure.rb +17 -0
  67. data/lib/yoda/typing/tree/for.rb +7 -0
  68. data/lib/yoda/typing/tree/hash_tree.rb +32 -0
  69. data/lib/yoda/typing/tree/if.rb +10 -5
  70. data/lib/yoda/typing/tree/interpolation_text.rb +21 -0
  71. data/lib/yoda/typing/tree/literal.rb +8 -36
  72. data/lib/yoda/typing/tree/literal_inferable.rb +48 -0
  73. data/lib/yoda/typing/tree/local_exit.rb +15 -0
  74. data/lib/yoda/typing/tree/logical_assignment.rb +5 -5
  75. data/lib/yoda/typing/tree/logical_operator.rb +6 -5
  76. data/lib/yoda/typing/tree/method_def.rb +41 -0
  77. data/lib/yoda/typing/tree/method_inferable.rb +51 -0
  78. data/lib/yoda/typing/tree/module_tree.rb +7 -20
  79. data/lib/yoda/typing/tree/multiple_assignment.rb +6 -10
  80. data/lib/yoda/typing/tree/namespace_inferable.rb +20 -0
  81. data/lib/yoda/typing/tree/rescue.rb +18 -0
  82. data/lib/yoda/typing/tree/rescue_clause.rb +42 -0
  83. data/lib/yoda/typing/tree/self.rb +2 -1
  84. data/lib/yoda/typing/tree/send.rb +8 -60
  85. data/lib/yoda/typing/tree/send_inferable.rb +89 -0
  86. data/lib/yoda/typing/tree/singleton_class_tree.rb +24 -0
  87. data/lib/yoda/typing/tree/singleton_method_def.rb +41 -0
  88. data/lib/yoda/typing/tree/super.rb +9 -2
  89. data/lib/yoda/typing/tree/variable.rb +5 -10
  90. data/lib/yoda/typing/tree/variable_assignment.rb +11 -8
  91. data/lib/yoda/typing/tree/yield.rb +9 -2
  92. data/lib/yoda/typing/tree.rb +55 -22
  93. data/lib/yoda/typing.rb +1 -0
  94. data/lib/yoda/version.rb +1 -1
  95. data/lib/yoda.rb +1 -0
  96. data/yoda-language-server.gemspec +1 -1
  97. metadata +35 -18
  98. data/lib/yoda/typing/inferencer/ast_traverser.rb +0 -408
  99. data/lib/yoda/typing/tree/block.rb +0 -12
  100. data/lib/yoda/typing/tree/const.rb +0 -12
  101. data/lib/yoda/typing/tree/escape.rb +0 -12
  102. data/lib/yoda/typing/tree/hash_body.rb +0 -36
  103. data/lib/yoda/typing/tree/literal_with_interpolation.rb +0 -21
  104. data/lib/yoda/typing/tree/method.rb +0 -43
  105. data/lib/yoda/typing/tree/rescue_body.rb +0 -12
  106. data/lib/yoda/typing/tree/singleton_method.rb +0 -47
  107. data/lib/yoda/typing/tree/while.rb +0 -12
@@ -0,0 +1,89 @@
1
+ module Yoda
2
+ module Typing
3
+ module Tree
4
+ module SendInferable
5
+ private
6
+
7
+ # @param send_node [AST::SendNode]
8
+ # @param block_param_node [AST::ParametersNode, nil]
9
+ # @param block_node [AST::Vnode, nil]
10
+ # @return [Types::Type]
11
+ def infer_send(send_node, block_param_node = nil, block_node = nil)
12
+ receiver_type = send_node.implicit_receiver? ? context.receiver : infer_child(send_node.receiver)
13
+ argument_map = infer_argument_nodes(send_node.arguments)
14
+ value_resolve_context = generator.value_resolve_context(self_type: receiver_type)
15
+
16
+ visibility = send_node.implicit_receiver? ? %i(private protected public) : %i(public)
17
+ # TODO: Support overloads
18
+ method_candidates = receiver_type.value.select_method(send_node.selector_name, visibility: visibility)
19
+ method_types = method_candidates.map(&:rbs_type).map { |type| value_resolve_context.wrap(type) }
20
+
21
+ if block_node
22
+ # TODO: Resolve type variables by matching argument_types with arguments
23
+ binds = Inferencer::ArgumentsBinder.new(generator: generator).bind(types: method_types, arguments: block_param_node.parameter)
24
+ new_context = context.derive_block_context(binds: binds)
25
+ infer_child(block_node, context: new_context)
26
+ end
27
+
28
+ Logger.trace("method_candidates: [#{method_candidates.join(', ')}]")
29
+ Logger.trace("receiver_type: #{receiver_type}")
30
+
31
+ bind_send(node: node, method_candidates: method_candidates, receiver_type: receiver_type)
32
+ resolve_require(method_candidates, argument_map)
33
+
34
+ if method_types.empty?
35
+ generator.unknown_type(reason: "method not found")
36
+ else
37
+ generator.union_type(*method_types.map { |method_type| value_resolve_context.wrap(method_type.type.return_type) })
38
+ end
39
+ end
40
+
41
+ # @param method_candidates [Array<Model::FunctionSignatures::Wrapper>]
42
+ # @param argument_map [{Symbol => Tree}]
43
+ def resolve_require(method_candidates, argument_map)
44
+ return unless method_candidates.any? { |method_candidate| method_candidate.name.to_s == "require" && method_candidate.namespace_path.to_s == "Kernel" }
45
+
46
+ first_argument_tree = argument_map[:arguments]&.first
47
+ return unless first_argument_tree
48
+
49
+ first_argument_type = first_argument_tree.type
50
+ strings = gather_literals(first_argument_type.value).select { |literal| literal.is_a?(String) }
51
+
52
+ require_paths = strings.map { |path| Inferencer::LoadResolver.new(context.environment.registry.project).resolve(path) }.compact
53
+ bind_require_paths(node: first_argument_tree.node, require_paths: require_paths)
54
+ end
55
+
56
+ # @param arguments [Array<AST::Vnode>]
57
+ # @return [{Symbol => Tree}]
58
+ def infer_argument_nodes(arguments)
59
+ arguments.each_with_object({}) do |node, obj|
60
+ case node.type
61
+ when :splat
62
+ # TODO
63
+ infer_child(node)
64
+ when :block_pass
65
+ obj[:block_argument] = build_child(node.children.first).tap(&:type)
66
+ else
67
+ obj[:arguments] ||= []
68
+ obj[:arguments].push(build_child(node).tap(&:type))
69
+ end
70
+ end
71
+ end
72
+
73
+ # @param value [Model::Values::Base]
74
+ # @return [Array<Object>]
75
+ def gather_literals(value)
76
+ if value.respond_to?(:literal)
77
+ [value.literal]
78
+ elsif value.respond_to?(:values)
79
+ value.values.flat_map { |v| gather_literals(v) }
80
+ elsif value.respond_to?(:value)
81
+ gather_literals(value.value)
82
+ else
83
+ []
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,24 @@
1
+ require 'yoda/typing/tree/namespace_inferable'
2
+
3
+ module Yoda
4
+ module Typing
5
+ module Tree
6
+ class SingletonClassTree < Base
7
+ include NamespaceInferable
8
+
9
+ # @!method node
10
+ # @return [AST::SingletonClassNode]
11
+
12
+ # @return [Types::Type]
13
+ def infer_type
14
+ receiver_type = infer_child(node.receiver)
15
+
16
+ new_context = context.derive_class_context(class_type: receiver_type.singleton_type)
17
+ infer_child(node.body, context: new_context)
18
+
19
+ generator.nil_type
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require 'yoda/typing/tree/method_inferable'
2
+
3
+ module Yoda
4
+ module Typing
5
+ module Tree
6
+ class SingletonMethodDef < Base
7
+ include MethodInferable
8
+
9
+ # @!method node
10
+ # @return [AST::DefSingletonNode]
11
+
12
+ # @return [Types::Base]
13
+ def infer_type
14
+ infer_method_type(receiver_type: receiver_type)
15
+ end
16
+
17
+ # @return [Symbol]
18
+ def node_name
19
+ node.name
20
+ end
21
+
22
+ # @return [AST::ParametersNode]
23
+ def parameters_node
24
+ node.parameters
25
+ end
26
+
27
+ # @return [Types::Type]
28
+ def body_node
29
+ node.body
30
+ end
31
+
32
+ # @return [Types::Type]
33
+ def receiver_type
34
+ @receiver_type ||= begin
35
+ infer_child(node.receiver)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,10 +1,17 @@
1
+ require 'yoda/typing/tree/literal_inferable'
2
+
1
3
  module Yoda
2
4
  module Typing
3
5
  module Tree
4
6
  class Super < Base
5
- def type
7
+ include LiteralInferable
8
+
9
+ # @!method node
10
+ # @return [AST::SpecialCallNode]
11
+
12
+ def infer_type
6
13
  # TODO
7
- generator.any_type
14
+ infer_literal(node)
8
15
  end
9
16
  end
10
17
  end
@@ -2,17 +2,12 @@ module Yoda
2
2
  module Typing
3
3
  module Tree
4
4
  class Variable < Base
5
- def type
6
- context.environment.resolve(node.children.first) || generator.any_type
7
- end
5
+ # @!method node
6
+ # @return [AST::VariableNode]
8
7
 
9
- # @param var [Symbol]
10
- # @param body_node [::AST::Node]
11
- # @return [Store::Types::Base]
12
- def process_bind(var, body_node)
13
- body_type = infer(body_node)
14
- context.environment.bind(var, body_type)
15
- body_type
8
+ # @return [Types::Type]
9
+ def infer_type
10
+ context.type_binding.resolve(node.name) || generator.any_type
16
11
  end
17
12
  end
18
13
  end
@@ -2,18 +2,21 @@ module Yoda
2
2
  module Typing
3
3
  module Tree
4
4
  class VariableAssignment < Base
5
- def process
6
- process_bind(node.children[0], node.children[1])
7
- end
5
+ # @!method node
6
+ # @return [AST::AssignmentNode]
8
7
 
9
- # @param var [Symbol]
10
- # @param body_node [::AST::Node]
11
8
  # @return [Store::Types::Base]
12
- def process_bind(var, body_node)
13
- body_type = infer(body_node)
14
- context.environment.bind(var, body_type)
9
+ def infer_type
10
+ context.type_binding.bind(node.assignee.name, body_type)
15
11
  body_type
16
12
  end
13
+
14
+ # @return [Types::Type]
15
+ def body_type
16
+ @body_type ||= begin
17
+ infer_child(node.content)
18
+ end
19
+ end
17
20
  end
18
21
  end
19
22
  end
@@ -1,10 +1,17 @@
1
+ require 'yoda/typing/tree/literal_inferable'
2
+
1
3
  module Yoda
2
4
  module Typing
3
5
  module Tree
4
6
  class Yield < Base
5
- def type
7
+ include LiteralInferable
8
+
9
+ # @!method node
10
+ # @return [AST::SpecialCallNode]
11
+
12
+ def infer_type
6
13
  # TODO
7
- generator.any_type
14
+ infer_literal(node)
8
15
  end
9
16
  end
10
17
  end
@@ -1,14 +1,41 @@
1
1
  module Yoda
2
2
  module Typing
3
3
  module Tree
4
- require 'yoda/typing/inferencer/arguments_binder'
5
- require 'yoda/typing/inferencer/contexts'
6
- require 'yoda/typing/inferencer/environment'
7
- require 'yoda/typing/inferencer/constant_resolver'
8
- require 'yoda/typing/inferencer/method_resolver'
9
- require 'yoda/typing/inferencer/method_definition_resolver'
10
- require 'yoda/typing/inferencer/object_resolver'
11
- require 'yoda/typing/inferencer/tracer'
4
+ require 'yoda/typing/tree/base'
5
+
6
+ require 'yoda/typing/tree/ask_defined'
7
+ require 'yoda/typing/tree/begin'
8
+ require 'yoda/typing/tree/block_call'
9
+ require 'yoda/typing/tree/case'
10
+ require 'yoda/typing/tree/class_tree'
11
+ require 'yoda/typing/tree/conditional_loop'
12
+ require 'yoda/typing/tree/constant_assignment'
13
+ require 'yoda/typing/tree/constant'
14
+ require 'yoda/typing/tree/ensure'
15
+ require 'yoda/typing/tree/for'
16
+ require 'yoda/typing/tree/hash_tree'
17
+ require 'yoda/typing/tree/if'
18
+ require 'yoda/typing/tree/interpolation_text'
19
+ require 'yoda/typing/tree/literal_inferable'
20
+ require 'yoda/typing/tree/literal'
21
+ require 'yoda/typing/tree/local_exit'
22
+ require 'yoda/typing/tree/logical_assignment'
23
+ require 'yoda/typing/tree/logical_operator'
24
+ require 'yoda/typing/tree/method_def'
25
+ require 'yoda/typing/tree/method_inferable'
26
+ require 'yoda/typing/tree/module_tree'
27
+ require 'yoda/typing/tree/multiple_assignment'
28
+ require 'yoda/typing/tree/namespace_inferable'
29
+ require 'yoda/typing/tree/rescue_clause'
30
+ require 'yoda/typing/tree/rescue'
31
+ require 'yoda/typing/tree/self'
32
+ require 'yoda/typing/tree/send'
33
+ require 'yoda/typing/tree/singleton_class_tree'
34
+ require 'yoda/typing/tree/singleton_method_def'
35
+ require 'yoda/typing/tree/super'
36
+ require 'yoda/typing/tree/variable_assignment'
37
+ require 'yoda/typing/tree/variable'
38
+ require 'yoda/typing/tree/yield'
12
39
 
13
40
  class << self
14
41
  # @param node [::AST::Node]
@@ -34,7 +61,7 @@ module Yoda
34
61
  when :if
35
62
  If
36
63
  when :while, :until, :while_post, :until_post
37
- While
64
+ ConditionalLoop
38
65
  when :for
39
66
  For
40
67
  when :case
@@ -44,35 +71,41 @@ module Yoda
44
71
  when :yield
45
72
  Yield
46
73
  when :return, :break, :next
47
- Escape
74
+ LocalExit
75
+ when :ensure
76
+ Ensure
77
+ when :rescue
78
+ Rescue
48
79
  when :resbody
49
- RescueBody
80
+ RescueClause
50
81
  when :csend, :send
51
82
  Send
52
83
  when :block
53
- Block
84
+ BlockCall
54
85
  when :const
55
- Const
86
+ Constant
56
87
  when :lvar, :cvar, :ivar, :gvar
57
88
  Variable
58
- when :begin, :kwbegin
89
+ when :begin, :kwbegin, :block
59
90
  Begin
60
91
  when :dstr, :dsym, :xstr
61
- LiteralWithInterpolation
92
+ InterpolationText
62
93
  when :def
63
- Method
94
+ MethodDef
64
95
  when :defs
65
- SingletonMethod
96
+ SingletonMethodDef
66
97
  when :hash
67
- HashBody
98
+ HashTree
68
99
  when :self
69
100
  Self
70
- when :defined
71
- Defined
72
- when :module
73
- ModuleTree
101
+ when :defined?
102
+ AskDefined
74
103
  when :class
75
104
  ClassTree
105
+ when :module
106
+ ModuleTree
107
+ when :sclass
108
+ SingletonClassTree
76
109
  else
77
110
  Literal
78
111
  end
data/lib/yoda/typing.rb CHANGED
@@ -7,6 +7,7 @@ module Yoda
7
7
  require 'yoda/typing/traces'
8
8
  require 'yoda/typing/lexical_scope'
9
9
  require 'yoda/typing/types'
10
+ require 'yoda/typing/tree'
10
11
  require 'yoda/typing/inferencer'
11
12
  require 'yoda/typing/node_info'
12
13
  end
data/lib/yoda/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yoda
2
- VERSION = "0.8.0"
2
+ VERSION = "0.10.1"
3
3
  end
data/lib/yoda.rb CHANGED
@@ -8,6 +8,7 @@ module Yoda
8
8
  require "yoda/ast"
9
9
  require "yoda/cli"
10
10
  require "yoda/errors"
11
+ require "yoda/id_mask"
11
12
  require "yoda/services"
12
13
  require "yoda/model"
13
14
  require "yoda/store"
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency 'rubyzip', '>= 1.0.0'
35
35
 
36
36
  spec.add_development_dependency "bundler"
37
- spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_development_dependency "rake"
38
38
  spec.add_development_dependency "rspec"
39
39
  spec.add_development_dependency "rspec-benchmark"
40
40
  spec.add_development_dependency "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yoda-language-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomoya Chiba
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2022-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -182,16 +182,16 @@ dependencies:
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - "~>"
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: '10.0'
187
+ version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - "~>"
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
- version: '10.0'
194
+ version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rspec
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -287,6 +287,7 @@ files:
287
287
  - ".github/workflows/test.yml"
288
288
  - ".gitignore"
289
289
  - ".rspec"
290
+ - CHANGELOG.md
290
291
  - Gemfile
291
292
  - LICENSE.txt
292
293
  - README.md
@@ -309,6 +310,7 @@ files:
309
310
  - client/vscode/README.md
310
311
  - client/vscode/package-lock.json
311
312
  - client/vscode/package.json
313
+ - client/vscode/src/check-versions.ts
312
314
  - client/vscode/src/config.ts
313
315
  - client/vscode/src/extension.ts
314
316
  - client/vscode/src/install-tools.ts
@@ -319,10 +321,13 @@ files:
319
321
  - client/vscode/src/test/suite/completion.test.ts
320
322
  - client/vscode/src/test/suite/hover.test.ts
321
323
  - client/vscode/src/test/suite/index.ts
324
+ - client/vscode/src/utils.ts
322
325
  - client/vscode/testFixture/completion.rb
323
326
  - client/vscode/tsconfig.json
324
327
  - client/vscode/vsc-extension-quickstart.md
325
328
  - exe/yoda
329
+ - images/hover-method.png
330
+ - images/method-complete.png
326
331
  - lib/yoda.rb
327
332
  - lib/yoda/ast.rb
328
333
  - lib/yoda/ast/array_node.rb
@@ -386,6 +391,7 @@ files:
386
391
  - lib/yoda/cli/infer.rb
387
392
  - lib/yoda/errors.rb
388
393
  - lib/yoda/has_services.rb
394
+ - lib/yoda/id_mask.rb
389
395
  - lib/yoda/instrument.rb
390
396
  - lib/yoda/logger.rb
391
397
  - lib/yoda/missing_delegatable.rb
@@ -396,6 +402,7 @@ files:
396
402
  - lib/yoda/model/descriptions/comment_token_description.rb
397
403
  - lib/yoda/model/descriptions/function_description.rb
398
404
  - lib/yoda/model/descriptions/node_description.rb
405
+ - lib/yoda/model/descriptions/require_path_description.rb
399
406
  - lib/yoda/model/descriptions/value_description.rb
400
407
  - lib/yoda/model/descriptions/variable_description.rb
401
408
  - lib/yoda/model/descriptions/word_description.rb
@@ -535,6 +542,7 @@ files:
535
542
  - lib/yoda/services/current_node_explain.rb
536
543
  - lib/yoda/services/current_node_explain/comment_signature.rb
537
544
  - lib/yoda/services/evaluator.rb
545
+ - lib/yoda/services/loadable_path_resolver.rb
538
546
  - lib/yoda/services/signature_discovery.rb
539
547
  - lib/yoda/store.rb
540
548
  - lib/yoda/store/actions.rb
@@ -562,6 +570,7 @@ files:
562
570
  - lib/yoda/store/objects/library.rb
563
571
  - lib/yoda/store/objects/library/core.rb
564
572
  - lib/yoda/store/objects/library/gem.rb
573
+ - lib/yoda/store/objects/library/path_resolvable.rb
565
574
  - lib/yoda/store/objects/library/std.rb
566
575
  - lib/yoda/store/objects/library/with_registry.rb
567
576
  - lib/yoda/store/objects/map.rb
@@ -611,6 +620,7 @@ files:
611
620
  - lib/yoda/typing.rb
612
621
  - lib/yoda/typing/constant_resolver.rb
613
622
  - lib/yoda/typing/constant_resolver/cbase_query.rb
623
+ - lib/yoda/typing/constant_resolver/code_query.rb
614
624
  - lib/yoda/typing/constant_resolver/member_query.rb
615
625
  - lib/yoda/typing/constant_resolver/node_tracer.rb
616
626
  - lib/yoda/typing/constant_resolver/query.rb
@@ -626,7 +636,7 @@ files:
626
636
  - lib/yoda/typing/inferencer.rb
627
637
  - lib/yoda/typing/inferencer/arguments.rb
628
638
  - lib/yoda/typing/inferencer/arguments_binder.rb
629
- - lib/yoda/typing/inferencer/ast_traverser.rb
639
+ - lib/yoda/typing/inferencer/load_resolver.rb
630
640
  - lib/yoda/typing/inferencer/method_resolver.rb
631
641
  - lib/yoda/typing/inferencer/object_resolver.rb
632
642
  - lib/yoda/typing/inferencer/parameter_binder.rb
@@ -640,33 +650,40 @@ files:
640
650
  - lib/yoda/typing/traces/normal.rb
641
651
  - lib/yoda/typing/traces/send.rb
642
652
  - lib/yoda/typing/tree.rb
653
+ - lib/yoda/typing/tree/ask_defined.rb
643
654
  - lib/yoda/typing/tree/base.rb
644
655
  - lib/yoda/typing/tree/begin.rb
645
- - lib/yoda/typing/tree/block.rb
656
+ - lib/yoda/typing/tree/block_call.rb
646
657
  - lib/yoda/typing/tree/case.rb
647
658
  - lib/yoda/typing/tree/class_tree.rb
648
- - lib/yoda/typing/tree/const.rb
659
+ - lib/yoda/typing/tree/conditional_loop.rb
660
+ - lib/yoda/typing/tree/constant.rb
649
661
  - lib/yoda/typing/tree/constant_assignment.rb
650
- - lib/yoda/typing/tree/defined.rb
651
- - lib/yoda/typing/tree/escape.rb
662
+ - lib/yoda/typing/tree/ensure.rb
652
663
  - lib/yoda/typing/tree/for.rb
653
- - lib/yoda/typing/tree/hash_body.rb
664
+ - lib/yoda/typing/tree/hash_tree.rb
654
665
  - lib/yoda/typing/tree/if.rb
666
+ - lib/yoda/typing/tree/interpolation_text.rb
655
667
  - lib/yoda/typing/tree/literal.rb
656
- - lib/yoda/typing/tree/literal_with_interpolation.rb
668
+ - lib/yoda/typing/tree/literal_inferable.rb
669
+ - lib/yoda/typing/tree/local_exit.rb
657
670
  - lib/yoda/typing/tree/logical_assignment.rb
658
671
  - lib/yoda/typing/tree/logical_operator.rb
659
- - lib/yoda/typing/tree/method.rb
672
+ - lib/yoda/typing/tree/method_def.rb
673
+ - lib/yoda/typing/tree/method_inferable.rb
660
674
  - lib/yoda/typing/tree/module_tree.rb
661
675
  - lib/yoda/typing/tree/multiple_assignment.rb
662
- - lib/yoda/typing/tree/rescue_body.rb
676
+ - lib/yoda/typing/tree/namespace_inferable.rb
677
+ - lib/yoda/typing/tree/rescue.rb
678
+ - lib/yoda/typing/tree/rescue_clause.rb
663
679
  - lib/yoda/typing/tree/self.rb
664
680
  - lib/yoda/typing/tree/send.rb
665
- - lib/yoda/typing/tree/singleton_method.rb
681
+ - lib/yoda/typing/tree/send_inferable.rb
682
+ - lib/yoda/typing/tree/singleton_class_tree.rb
683
+ - lib/yoda/typing/tree/singleton_method_def.rb
666
684
  - lib/yoda/typing/tree/super.rb
667
685
  - lib/yoda/typing/tree/variable.rb
668
686
  - lib/yoda/typing/tree/variable_assignment.rb
669
- - lib/yoda/typing/tree/while.rb
670
687
  - lib/yoda/typing/tree/yield.rb
671
688
  - lib/yoda/typing/types.rb
672
689
  - lib/yoda/typing/types/any.rb
@@ -710,7 +727,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
710
727
  - !ruby/object:Gem::Version
711
728
  version: '0'
712
729
  requirements: []
713
- rubygems_version: 3.2.22
730
+ rubygems_version: 3.2.32
714
731
  signing_key:
715
732
  specification_version: 4
716
733
  summary: Ruby completion engine