solargraph 0.24.1 → 0.25.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/lib/solargraph/api_map.rb +93 -46
- data/lib/solargraph/api_map/cache.rb +51 -0
- data/lib/solargraph/api_map/probe.rb +23 -12
- data/lib/solargraph/api_map/source_to_yard.rb +2 -2
- data/lib/solargraph/api_map/store.rb +20 -9
- data/lib/solargraph/complex_type.rb +10 -1
- data/lib/solargraph/diagnostics/require_not_found.rb +1 -1
- data/lib/solargraph/diagnostics/rubocop.rb +35 -27
- data/lib/solargraph/diagnostics/type_not_defined.rb +10 -13
- data/lib/solargraph/language_server/host.rb +11 -11
- data/lib/solargraph/language_server/message.rb +0 -1
- data/lib/solargraph/language_server/message/base.rb +24 -4
- data/lib/solargraph/language_server/message/text_document/completion.rb +9 -16
- data/lib/solargraph/language_server/message/text_document/did_change.rb +0 -2
- data/lib/solargraph/language_server/message/text_document/formatting.rb +1 -10
- data/lib/solargraph/language_server/transport/socket.rb +0 -1
- data/lib/solargraph/language_server/transport/stdio.rb +0 -1
- data/lib/solargraph/pin.rb +1 -1
- data/lib/solargraph/pin/attribute.rb +4 -7
- data/lib/solargraph/pin/base.rb +113 -8
- data/lib/solargraph/pin/base_variable.rb +17 -25
- data/lib/solargraph/pin/block.rb +2 -2
- data/lib/solargraph/pin/block_parameter.rb +8 -10
- data/lib/solargraph/pin/constant.rb +2 -2
- data/lib/solargraph/pin/conversions.rb +8 -0
- data/lib/solargraph/pin/documenting.rb +2 -2
- data/lib/solargraph/pin/duck_method.rb +0 -1
- data/lib/solargraph/pin/local_variable.rb +8 -2
- data/lib/solargraph/pin/method.rb +26 -16
- data/lib/solargraph/pin/method_parameter.rb +15 -8
- data/lib/solargraph/pin/namespace.rb +2 -2
- data/lib/solargraph/pin/reference.rb +7 -0
- data/lib/solargraph/pin/yard_pin.rb +10 -0
- data/lib/solargraph/pin/yard_pin/constant.rb +14 -0
- data/lib/solargraph/pin/yard_pin/method.rb +35 -0
- data/lib/solargraph/pin/yard_pin/namespace.rb +27 -0
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +18 -0
- data/lib/solargraph/source.rb +59 -15
- data/lib/solargraph/source/mapper.rb +46 -99
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace.rb +11 -2
- data/lib/solargraph/workspace/config.rb +47 -1
- data/lib/solargraph/yard_map.rb +103 -278
- data/lib/solargraph/yard_map/cache.rb +13 -38
- metadata +7 -3
- data/lib/solargraph/pin/yard_object.rb +0 -119
@@ -1,42 +1,17 @@
|
|
1
1
|
module Solargraph
|
2
|
-
class YardMap
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@constants[[namespace, scope]]
|
16
|
-
end
|
17
|
-
|
18
|
-
def set_methods namespace, scope, visibility, suggestions
|
19
|
-
@methods[[namespace, scope, visibility]] = suggestions.uniq{|s| s.path}
|
20
|
-
end
|
21
|
-
|
22
|
-
def get_methods namespace, scope, visibility
|
23
|
-
@methods[[namespace, scope, visibility]]
|
24
|
-
end
|
25
|
-
|
26
|
-
def set_instance_methods namespace, scope, visibility, suggestions
|
27
|
-
@instance_methods[[namespace, scope, visibility]] = suggestions.uniq{|s| s.path}
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_instance_methods namespace, scope, visibility
|
31
|
-
@instance_methods[[namespace, scope, visibility]]
|
32
|
-
end
|
33
|
-
|
34
|
-
def set_objects path, space, pins
|
35
|
-
@objects[[path, space]] = pins
|
36
|
-
end
|
37
|
-
|
38
|
-
def get_objects path, space
|
39
|
-
@objects[[path, space]]
|
2
|
+
class YardMap
|
3
|
+
class Cache
|
4
|
+
def initialize
|
5
|
+
@path_pins = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
def set_path_pins path, pins
|
9
|
+
@path_pins[path] = pins
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_path_pins path
|
13
|
+
@path_pins[path]
|
14
|
+
end
|
40
15
|
end
|
41
16
|
end
|
42
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -327,7 +327,11 @@ files:
|
|
327
327
|
- lib/solargraph/pin/proxy_method.rb
|
328
328
|
- lib/solargraph/pin/reference.rb
|
329
329
|
- lib/solargraph/pin/symbol.rb
|
330
|
-
- lib/solargraph/pin/
|
330
|
+
- lib/solargraph/pin/yard_pin.rb
|
331
|
+
- lib/solargraph/pin/yard_pin/constant.rb
|
332
|
+
- lib/solargraph/pin/yard_pin/method.rb
|
333
|
+
- lib/solargraph/pin/yard_pin/namespace.rb
|
334
|
+
- lib/solargraph/pin/yard_pin/yard_mixin.rb
|
331
335
|
- lib/solargraph/plugin.rb
|
332
336
|
- lib/solargraph/plugin/base.rb
|
333
337
|
- lib/solargraph/plugin/canceler.rb
|
@@ -1,119 +0,0 @@
|
|
1
|
-
module Solargraph
|
2
|
-
module Pin
|
3
|
-
class YardObject < Base
|
4
|
-
COMPLETION_ITEM_KIND_MAP = {
|
5
|
-
YARD::CodeObjects::ClassObject => Solargraph::LanguageServer::CompletionItemKinds::CLASS,
|
6
|
-
YARD::CodeObjects::ModuleObject => Solargraph::LanguageServer::CompletionItemKinds::MODULE,
|
7
|
-
YARD::CodeObjects::MethodObject => Solargraph::LanguageServer::CompletionItemKinds::METHOD,
|
8
|
-
YARD::CodeObjects::ConstantObject => Solargraph::LanguageServer::CompletionItemKinds::CONSTANT
|
9
|
-
}
|
10
|
-
|
11
|
-
KIND_MAP = {
|
12
|
-
YARD::CodeObjects::ClassObject => Pin::NAMESPACE,
|
13
|
-
YARD::CodeObjects::ModuleObject => Pin::NAMESPACE,
|
14
|
-
YARD::CodeObjects::MethodObject => Pin::METHOD,
|
15
|
-
YARD::CodeObjects::ConstantObject => Pin::CONSTANT
|
16
|
-
}
|
17
|
-
|
18
|
-
# @return [YARD::CodeObjects::Base]
|
19
|
-
attr_reader :code_object
|
20
|
-
|
21
|
-
def initialize code_object, location
|
22
|
-
# (c.to_s.split('::').last, detail: c.to_s, kind: kind, docstring: c.docstring, return_type: return_type, location: object_location(c))
|
23
|
-
@code_object = code_object
|
24
|
-
@location = location
|
25
|
-
end
|
26
|
-
|
27
|
-
def name
|
28
|
-
# @name ||= code_object.to_s.split('::').last
|
29
|
-
@name ||= code_object.name.to_s
|
30
|
-
end
|
31
|
-
|
32
|
-
def kind
|
33
|
-
@kind ||= KIND_MAP[code_object.class] || Pin::KEYWORD
|
34
|
-
end
|
35
|
-
|
36
|
-
def completion_item_kind
|
37
|
-
@completion_item_kind ||= COMPLETION_ITEM_KIND_MAP[code_object.class] || Solargraph::LanguageServer::CompletionItemKinds::KEYWORD
|
38
|
-
end
|
39
|
-
|
40
|
-
def docstring
|
41
|
-
code_object.docstring
|
42
|
-
end
|
43
|
-
|
44
|
-
def return_type
|
45
|
-
if @return_type.nil?
|
46
|
-
if code_object.kind_of?(YARD::CodeObjects::ClassObject)
|
47
|
-
@return_type ||= "Class<#{path}>"
|
48
|
-
return @return_type
|
49
|
-
end
|
50
|
-
if code_object.kind_of?(YARD::CodeObjects::ModuleObject)
|
51
|
-
@return_type ||= "Module<#{path}>"
|
52
|
-
return @return_type
|
53
|
-
end
|
54
|
-
if Solargraph::CoreFills::CUSTOM_RETURN_TYPES.has_key?(path)
|
55
|
-
@return_type = Solargraph::CoreFills::CUSTOM_RETURN_TYPES[path]
|
56
|
-
else
|
57
|
-
return nil if docstring.nil?
|
58
|
-
tags = docstring.tags(:return)
|
59
|
-
if tags.empty?
|
60
|
-
overload = docstring.tag(:overload)
|
61
|
-
return nil if overload.nil?
|
62
|
-
tags = overload.tags(:return)
|
63
|
-
end
|
64
|
-
return nil if tags.empty?
|
65
|
-
return nil if tags[0].types.nil?
|
66
|
-
@return_type = tags[0].types[0]
|
67
|
-
end
|
68
|
-
end
|
69
|
-
@return_type
|
70
|
-
end
|
71
|
-
|
72
|
-
def location
|
73
|
-
@location
|
74
|
-
end
|
75
|
-
|
76
|
-
def path
|
77
|
-
code_object.path
|
78
|
-
end
|
79
|
-
|
80
|
-
def namespace
|
81
|
-
# @todo Is this right?
|
82
|
-
code_object.namespace.to_s
|
83
|
-
end
|
84
|
-
|
85
|
-
def parameters
|
86
|
-
@parameters ||= get_method_args
|
87
|
-
end
|
88
|
-
|
89
|
-
def parameter_names
|
90
|
-
@parameter_names ||= parameters.map{|p| p.split(/[ =:]/).first}
|
91
|
-
end
|
92
|
-
|
93
|
-
def visibility
|
94
|
-
@visibility ||= (code_object.respond_to?(:visibility) ? code_object.visibility : :public)
|
95
|
-
end
|
96
|
-
|
97
|
-
def scope
|
98
|
-
return nil unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
99
|
-
code_object.scope
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def get_method_args
|
105
|
-
return [] unless code_object.kind_of?(YARD::CodeObjects::MethodObject)
|
106
|
-
args = []
|
107
|
-
code_object.parameters.each do |a|
|
108
|
-
p = a[0]
|
109
|
-
unless a[1].nil?
|
110
|
-
p += ' =' unless p.end_with?(':')
|
111
|
-
p += " #{a[1]}"
|
112
|
-
end
|
113
|
-
args.push p
|
114
|
-
end
|
115
|
-
args
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|