yoda-language-server 0.9.0 → 0.10.0
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/CHANGELOG.md +5 -0
- data/client/vscode/package-lock.json +6 -6
- data/client/vscode/src/check-versions.ts +5 -11
- data/client/vscode/src/install-tools.ts +1 -1
- data/lib/yoda/cli/analyze_deps.rb +46 -25
- data/lib/yoda/id_mask.rb +84 -0
- data/lib/yoda/model/descriptions/require_path_description.rb +45 -0
- data/lib/yoda/model/descriptions.rb +1 -0
- data/lib/yoda/model/node_signatures/node.rb +9 -1
- data/lib/yoda/model/values/literal_value.rb +3 -0
- data/lib/yoda/parsing/location.rb +9 -0
- data/lib/yoda/services/loadable_path_resolver.rb +33 -0
- data/lib/yoda/services.rb +1 -0
- data/lib/yoda/store/actions/read_project_files.rb +9 -7
- data/lib/yoda/store/adapters/gdbm_adapter/namespace_accessor.rb +1 -1
- data/lib/yoda/store/adapters/memory_adapter.rb +1 -1
- data/lib/yoda/store/objects/libraries_status.rb +1 -1
- data/lib/yoda/store/objects/library/core.rb +8 -0
- data/lib/yoda/store/objects/library/gem.rb +14 -3
- data/lib/yoda/store/objects/library/path_resolvable.rb +29 -0
- data/lib/yoda/store/objects/library/std.rb +9 -0
- data/lib/yoda/store/objects/library.rb +1 -0
- data/lib/yoda/store/objects/patch.rb +1 -1
- data/lib/yoda/store/objects/patch_set.rb +2 -2
- data/lib/yoda/store/project/dependency.rb +22 -4
- data/lib/yoda/store/project/file_finder.rb +20 -0
- data/lib/yoda/store/project.rb +2 -0
- data/lib/yoda/store/registry/cache.rb +2 -2
- data/lib/yoda/store/registry/composer.rb +9 -7
- data/lib/yoda/store/registry/index.rb +14 -10
- data/lib/yoda/store/registry/library_registry.rb +1 -1
- data/lib/yoda/store/registry.rb +1 -1
- data/lib/yoda/typing/constant_resolver/code_query.rb +25 -0
- data/lib/yoda/typing/constant_resolver/query.rb +12 -1
- data/lib/yoda/typing/constant_resolver.rb +13 -8
- data/lib/yoda/typing/inferencer/load_resolver.rb +37 -0
- data/lib/yoda/typing/inferencer/tracer.rb +32 -0
- data/lib/yoda/typing/inferencer.rb +3 -2
- data/lib/yoda/typing/node_info.rb +5 -0
- data/lib/yoda/typing/tree/{defined.rb → ask_defined.rb} +3 -2
- data/lib/yoda/typing/tree/base.rb +65 -20
- data/lib/yoda/typing/tree/begin.rb +5 -5
- data/lib/yoda/typing/tree/block_call.rb +26 -0
- data/lib/yoda/typing/tree/case.rb +8 -19
- data/lib/yoda/typing/tree/class_tree.rb +10 -18
- data/lib/yoda/typing/tree/conditional_loop.rb +15 -0
- data/lib/yoda/typing/tree/constant.rb +19 -0
- data/lib/yoda/typing/tree/constant_assignment.rb +2 -2
- data/lib/yoda/typing/tree/ensure.rb +17 -0
- data/lib/yoda/typing/tree/for.rb +7 -0
- data/lib/yoda/typing/tree/hash_tree.rb +32 -0
- data/lib/yoda/typing/tree/if.rb +10 -5
- data/lib/yoda/typing/tree/interpolation_text.rb +21 -0
- data/lib/yoda/typing/tree/literal.rb +8 -36
- data/lib/yoda/typing/tree/literal_inferable.rb +48 -0
- data/lib/yoda/typing/tree/local_exit.rb +15 -0
- data/lib/yoda/typing/tree/logical_assignment.rb +5 -5
- data/lib/yoda/typing/tree/logical_operator.rb +6 -5
- data/lib/yoda/typing/tree/method_def.rb +41 -0
- data/lib/yoda/typing/tree/method_inferable.rb +51 -0
- data/lib/yoda/typing/tree/module_tree.rb +7 -20
- data/lib/yoda/typing/tree/multiple_assignment.rb +6 -10
- data/lib/yoda/typing/tree/namespace_inferable.rb +20 -0
- data/lib/yoda/typing/tree/rescue.rb +18 -0
- data/lib/yoda/typing/tree/rescue_clause.rb +42 -0
- data/lib/yoda/typing/tree/self.rb +2 -1
- data/lib/yoda/typing/tree/send.rb +8 -60
- data/lib/yoda/typing/tree/send_inferable.rb +89 -0
- data/lib/yoda/typing/tree/singleton_class_tree.rb +24 -0
- data/lib/yoda/typing/tree/singleton_method_def.rb +41 -0
- data/lib/yoda/typing/tree/super.rb +9 -2
- data/lib/yoda/typing/tree/variable.rb +5 -10
- data/lib/yoda/typing/tree/variable_assignment.rb +11 -8
- data/lib/yoda/typing/tree/yield.rb +9 -2
- data/lib/yoda/typing/tree.rb +55 -22
- data/lib/yoda/typing.rb +1 -0
- data/lib/yoda/version.rb +1 -1
- data/lib/yoda.rb +1 -0
- metadata +25 -13
- data/lib/yoda/typing/inferencer/ast_traverser.rb +0 -408
- data/lib/yoda/typing/tree/block.rb +0 -12
- data/lib/yoda/typing/tree/const.rb +0 -12
- data/lib/yoda/typing/tree/escape.rb +0 -12
- data/lib/yoda/typing/tree/hash_body.rb +0 -36
- data/lib/yoda/typing/tree/literal_with_interpolation.rb +0 -21
- data/lib/yoda/typing/tree/method.rb +0 -43
- data/lib/yoda/typing/tree/rescue_body.rb +0 -12
- data/lib/yoda/typing/tree/singleton_method.rb +0 -47
- data/lib/yoda/typing/tree/while.rb +0 -12
@@ -1,69 +1,17 @@
|
|
1
|
+
require 'yoda/typing/tree/send_inferable'
|
2
|
+
|
1
3
|
module Yoda
|
2
4
|
module Typing
|
3
5
|
module Tree
|
4
6
|
class Send < Base
|
5
|
-
|
6
|
-
@receiver ||= node.children[0] && build_child(node.children[0])
|
7
|
-
end
|
8
|
-
|
9
|
-
# @return [Symbol]
|
10
|
-
def method_name
|
11
|
-
@method_name ||= node.children[1]
|
12
|
-
end
|
13
|
-
|
14
|
-
# @return [Symbol]
|
15
|
-
def arguments
|
16
|
-
@arguments ||= node.children.slice(2..-1).map(&method(:build_child))
|
17
|
-
end
|
18
|
-
|
19
|
-
# @param block_param_node [::AST::Node, nil]
|
20
|
-
# @param block_node [::AST::Node, nil]
|
21
|
-
# @return [Types::Base]
|
22
|
-
def infer_send_node(block_param_node = nil, block_node = nil)
|
23
|
-
if block_node
|
24
|
-
new_context = method_resolver.generate_block_context(context: context, block_param_node: block_param_node)
|
25
|
-
derive(context: new_context).infer(block_node)
|
26
|
-
end
|
27
|
-
|
28
|
-
tracer.bind_send(node: node, method_candidates: method_resolver.method_candidates, receiver_candidates: method_resolver.receiver_candidates)
|
29
|
-
method_resolver.return_type
|
30
|
-
end
|
31
|
-
|
32
|
-
def method_resolver
|
33
|
-
@method_resolver ||= MethodResolver.new(
|
34
|
-
registry: context.registry,
|
35
|
-
receiver_type: receiver_type,
|
36
|
-
name: method_name.to_s,
|
37
|
-
argument_types: argument_types,
|
38
|
-
generator: generator,
|
39
|
-
implicit_receiver: receiver.nil?,
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
|
-
def receiver_type
|
44
|
-
@receiver_type ||= receiver ? receiver.type : context.receiver
|
45
|
-
end
|
46
|
-
|
47
|
-
def block_context
|
48
|
-
@block_context ||= method_resolver.generate_block_context(context: context, block_param_node: block_param_node)
|
49
|
-
end
|
7
|
+
include SendInferable
|
50
8
|
|
51
|
-
|
9
|
+
# @!method node
|
10
|
+
# @return [AST::SendNode]
|
52
11
|
|
53
|
-
# @return [
|
54
|
-
def
|
55
|
-
|
56
|
-
case node.type
|
57
|
-
when :splat
|
58
|
-
# TODO
|
59
|
-
node.type
|
60
|
-
when :blockarg
|
61
|
-
obj[:block_argument] = infer(node.children.first)
|
62
|
-
else
|
63
|
-
obj[:arguments] ||= []
|
64
|
-
obj[:arguments].push(node.type)
|
65
|
-
end
|
66
|
-
end
|
12
|
+
# @return [Types::Type]
|
13
|
+
def infer_type
|
14
|
+
infer_send(node)
|
67
15
|
end
|
68
16
|
end
|
69
17
|
end
|
@@ -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
|
-
|
7
|
+
include LiteralInferable
|
8
|
+
|
9
|
+
# @!method node
|
10
|
+
# @return [AST::SpecialCallNode]
|
11
|
+
|
12
|
+
def infer_type
|
6
13
|
# TODO
|
7
|
-
|
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
|
-
|
6
|
-
|
7
|
-
end
|
5
|
+
# @!method node
|
6
|
+
# @return [AST::VariableNode]
|
8
7
|
|
9
|
-
# @
|
10
|
-
|
11
|
-
|
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
|
-
|
6
|
-
|
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
|
13
|
-
body_type
|
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
|
-
|
7
|
+
include LiteralInferable
|
8
|
+
|
9
|
+
# @!method node
|
10
|
+
# @return [AST::SpecialCallNode]
|
11
|
+
|
12
|
+
def infer_type
|
6
13
|
# TODO
|
7
|
-
|
14
|
+
infer_literal(node)
|
8
15
|
end
|
9
16
|
end
|
10
17
|
end
|
data/lib/yoda/typing/tree.rb
CHANGED
@@ -1,14 +1,41 @@
|
|
1
1
|
module Yoda
|
2
2
|
module Typing
|
3
3
|
module Tree
|
4
|
-
require 'yoda/typing/
|
5
|
-
|
6
|
-
require 'yoda/typing/
|
7
|
-
require 'yoda/typing/
|
8
|
-
require 'yoda/typing/
|
9
|
-
require 'yoda/typing/
|
10
|
-
require 'yoda/typing/
|
11
|
-
require 'yoda/typing/
|
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
|
-
|
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
|
-
|
74
|
+
LocalExit
|
75
|
+
when :ensure
|
76
|
+
Ensure
|
77
|
+
when :rescue
|
78
|
+
Rescue
|
48
79
|
when :resbody
|
49
|
-
|
80
|
+
RescueClause
|
50
81
|
when :csend, :send
|
51
82
|
Send
|
52
83
|
when :block
|
53
|
-
|
84
|
+
BlockCall
|
54
85
|
when :const
|
55
|
-
|
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
|
-
|
92
|
+
InterpolationText
|
62
93
|
when :def
|
63
|
-
|
94
|
+
MethodDef
|
64
95
|
when :defs
|
65
|
-
|
96
|
+
SingletonMethodDef
|
66
97
|
when :hash
|
67
|
-
|
98
|
+
HashTree
|
68
99
|
when :self
|
69
100
|
Self
|
70
|
-
when :defined
|
71
|
-
|
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
data/lib/yoda/version.rb
CHANGED
data/lib/yoda.rb
CHANGED
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.
|
4
|
+
version: 0.10.0
|
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-
|
11
|
+
date: 2022-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -389,6 +389,7 @@ files:
|
|
389
389
|
- lib/yoda/cli/infer.rb
|
390
390
|
- lib/yoda/errors.rb
|
391
391
|
- lib/yoda/has_services.rb
|
392
|
+
- lib/yoda/id_mask.rb
|
392
393
|
- lib/yoda/instrument.rb
|
393
394
|
- lib/yoda/logger.rb
|
394
395
|
- lib/yoda/missing_delegatable.rb
|
@@ -399,6 +400,7 @@ files:
|
|
399
400
|
- lib/yoda/model/descriptions/comment_token_description.rb
|
400
401
|
- lib/yoda/model/descriptions/function_description.rb
|
401
402
|
- lib/yoda/model/descriptions/node_description.rb
|
403
|
+
- lib/yoda/model/descriptions/require_path_description.rb
|
402
404
|
- lib/yoda/model/descriptions/value_description.rb
|
403
405
|
- lib/yoda/model/descriptions/variable_description.rb
|
404
406
|
- lib/yoda/model/descriptions/word_description.rb
|
@@ -538,6 +540,7 @@ files:
|
|
538
540
|
- lib/yoda/services/current_node_explain.rb
|
539
541
|
- lib/yoda/services/current_node_explain/comment_signature.rb
|
540
542
|
- lib/yoda/services/evaluator.rb
|
543
|
+
- lib/yoda/services/loadable_path_resolver.rb
|
541
544
|
- lib/yoda/services/signature_discovery.rb
|
542
545
|
- lib/yoda/store.rb
|
543
546
|
- lib/yoda/store/actions.rb
|
@@ -565,6 +568,7 @@ files:
|
|
565
568
|
- lib/yoda/store/objects/library.rb
|
566
569
|
- lib/yoda/store/objects/library/core.rb
|
567
570
|
- lib/yoda/store/objects/library/gem.rb
|
571
|
+
- lib/yoda/store/objects/library/path_resolvable.rb
|
568
572
|
- lib/yoda/store/objects/library/std.rb
|
569
573
|
- lib/yoda/store/objects/library/with_registry.rb
|
570
574
|
- lib/yoda/store/objects/map.rb
|
@@ -614,6 +618,7 @@ files:
|
|
614
618
|
- lib/yoda/typing.rb
|
615
619
|
- lib/yoda/typing/constant_resolver.rb
|
616
620
|
- lib/yoda/typing/constant_resolver/cbase_query.rb
|
621
|
+
- lib/yoda/typing/constant_resolver/code_query.rb
|
617
622
|
- lib/yoda/typing/constant_resolver/member_query.rb
|
618
623
|
- lib/yoda/typing/constant_resolver/node_tracer.rb
|
619
624
|
- lib/yoda/typing/constant_resolver/query.rb
|
@@ -629,7 +634,7 @@ files:
|
|
629
634
|
- lib/yoda/typing/inferencer.rb
|
630
635
|
- lib/yoda/typing/inferencer/arguments.rb
|
631
636
|
- lib/yoda/typing/inferencer/arguments_binder.rb
|
632
|
-
- lib/yoda/typing/inferencer/
|
637
|
+
- lib/yoda/typing/inferencer/load_resolver.rb
|
633
638
|
- lib/yoda/typing/inferencer/method_resolver.rb
|
634
639
|
- lib/yoda/typing/inferencer/object_resolver.rb
|
635
640
|
- lib/yoda/typing/inferencer/parameter_binder.rb
|
@@ -643,33 +648,40 @@ files:
|
|
643
648
|
- lib/yoda/typing/traces/normal.rb
|
644
649
|
- lib/yoda/typing/traces/send.rb
|
645
650
|
- lib/yoda/typing/tree.rb
|
651
|
+
- lib/yoda/typing/tree/ask_defined.rb
|
646
652
|
- lib/yoda/typing/tree/base.rb
|
647
653
|
- lib/yoda/typing/tree/begin.rb
|
648
|
-
- lib/yoda/typing/tree/
|
654
|
+
- lib/yoda/typing/tree/block_call.rb
|
649
655
|
- lib/yoda/typing/tree/case.rb
|
650
656
|
- lib/yoda/typing/tree/class_tree.rb
|
651
|
-
- lib/yoda/typing/tree/
|
657
|
+
- lib/yoda/typing/tree/conditional_loop.rb
|
658
|
+
- lib/yoda/typing/tree/constant.rb
|
652
659
|
- lib/yoda/typing/tree/constant_assignment.rb
|
653
|
-
- lib/yoda/typing/tree/
|
654
|
-
- lib/yoda/typing/tree/escape.rb
|
660
|
+
- lib/yoda/typing/tree/ensure.rb
|
655
661
|
- lib/yoda/typing/tree/for.rb
|
656
|
-
- lib/yoda/typing/tree/
|
662
|
+
- lib/yoda/typing/tree/hash_tree.rb
|
657
663
|
- lib/yoda/typing/tree/if.rb
|
664
|
+
- lib/yoda/typing/tree/interpolation_text.rb
|
658
665
|
- lib/yoda/typing/tree/literal.rb
|
659
|
-
- lib/yoda/typing/tree/
|
666
|
+
- lib/yoda/typing/tree/literal_inferable.rb
|
667
|
+
- lib/yoda/typing/tree/local_exit.rb
|
660
668
|
- lib/yoda/typing/tree/logical_assignment.rb
|
661
669
|
- lib/yoda/typing/tree/logical_operator.rb
|
662
|
-
- lib/yoda/typing/tree/
|
670
|
+
- lib/yoda/typing/tree/method_def.rb
|
671
|
+
- lib/yoda/typing/tree/method_inferable.rb
|
663
672
|
- lib/yoda/typing/tree/module_tree.rb
|
664
673
|
- lib/yoda/typing/tree/multiple_assignment.rb
|
665
|
-
- lib/yoda/typing/tree/
|
674
|
+
- lib/yoda/typing/tree/namespace_inferable.rb
|
675
|
+
- lib/yoda/typing/tree/rescue.rb
|
676
|
+
- lib/yoda/typing/tree/rescue_clause.rb
|
666
677
|
- lib/yoda/typing/tree/self.rb
|
667
678
|
- lib/yoda/typing/tree/send.rb
|
668
|
-
- lib/yoda/typing/tree/
|
679
|
+
- lib/yoda/typing/tree/send_inferable.rb
|
680
|
+
- lib/yoda/typing/tree/singleton_class_tree.rb
|
681
|
+
- lib/yoda/typing/tree/singleton_method_def.rb
|
669
682
|
- lib/yoda/typing/tree/super.rb
|
670
683
|
- lib/yoda/typing/tree/variable.rb
|
671
684
|
- lib/yoda/typing/tree/variable_assignment.rb
|
672
|
-
- lib/yoda/typing/tree/while.rb
|
673
685
|
- lib/yoda/typing/tree/yield.rb
|
674
686
|
- lib/yoda/typing/types.rb
|
675
687
|
- lib/yoda/typing/types/any.rb
|