solargraph 0.24.1 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
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