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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/solargraph/api_map.rb +93 -46
  3. data/lib/solargraph/api_map/cache.rb +51 -0
  4. data/lib/solargraph/api_map/probe.rb +23 -12
  5. data/lib/solargraph/api_map/source_to_yard.rb +2 -2
  6. data/lib/solargraph/api_map/store.rb +20 -9
  7. data/lib/solargraph/complex_type.rb +10 -1
  8. data/lib/solargraph/diagnostics/require_not_found.rb +1 -1
  9. data/lib/solargraph/diagnostics/rubocop.rb +35 -27
  10. data/lib/solargraph/diagnostics/type_not_defined.rb +10 -13
  11. data/lib/solargraph/language_server/host.rb +11 -11
  12. data/lib/solargraph/language_server/message.rb +0 -1
  13. data/lib/solargraph/language_server/message/base.rb +24 -4
  14. data/lib/solargraph/language_server/message/text_document/completion.rb +9 -16
  15. data/lib/solargraph/language_server/message/text_document/did_change.rb +0 -2
  16. data/lib/solargraph/language_server/message/text_document/formatting.rb +1 -10
  17. data/lib/solargraph/language_server/transport/socket.rb +0 -1
  18. data/lib/solargraph/language_server/transport/stdio.rb +0 -1
  19. data/lib/solargraph/pin.rb +1 -1
  20. data/lib/solargraph/pin/attribute.rb +4 -7
  21. data/lib/solargraph/pin/base.rb +113 -8
  22. data/lib/solargraph/pin/base_variable.rb +17 -25
  23. data/lib/solargraph/pin/block.rb +2 -2
  24. data/lib/solargraph/pin/block_parameter.rb +8 -10
  25. data/lib/solargraph/pin/constant.rb +2 -2
  26. data/lib/solargraph/pin/conversions.rb +8 -0
  27. data/lib/solargraph/pin/documenting.rb +2 -2
  28. data/lib/solargraph/pin/duck_method.rb +0 -1
  29. data/lib/solargraph/pin/local_variable.rb +8 -2
  30. data/lib/solargraph/pin/method.rb +26 -16
  31. data/lib/solargraph/pin/method_parameter.rb +15 -8
  32. data/lib/solargraph/pin/namespace.rb +2 -2
  33. data/lib/solargraph/pin/reference.rb +7 -0
  34. data/lib/solargraph/pin/yard_pin.rb +10 -0
  35. data/lib/solargraph/pin/yard_pin/constant.rb +14 -0
  36. data/lib/solargraph/pin/yard_pin/method.rb +35 -0
  37. data/lib/solargraph/pin/yard_pin/namespace.rb +27 -0
  38. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +18 -0
  39. data/lib/solargraph/source.rb +59 -15
  40. data/lib/solargraph/source/mapper.rb +46 -99
  41. data/lib/solargraph/version.rb +1 -1
  42. data/lib/solargraph/workspace.rb +11 -2
  43. data/lib/solargraph/workspace/config.rb +47 -1
  44. data/lib/solargraph/yard_map.rb +103 -278
  45. data/lib/solargraph/yard_map/cache.rb +13 -38
  46. metadata +7 -3
  47. data/lib/solargraph/pin/yard_object.rb +0 -119
@@ -1,42 +1,17 @@
1
1
  module Solargraph
2
- class YardMap::Cache
3
- def initialize
4
- @constants = {}
5
- @methods = {}
6
- @instance_methods = {}
7
- @objects = {}
8
- end
9
-
10
- def set_constants namespace, scope, suggestions
11
- @constants[[namespace, scope]] = suggestions
12
- end
13
-
14
- def get_constants namespace, scope
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.24.1
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-09 00:00:00.000000000 Z
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/yard_object.rb
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