solargraph 0.33.2 → 0.34.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/README.md +1 -1
  4. data/lib/solargraph.rb +5 -0
  5. data/lib/solargraph/api_map.rb +36 -18
  6. data/lib/solargraph/api_map/cache.rb +2 -0
  7. data/lib/solargraph/api_map/source_to_yard.rb +14 -5
  8. data/lib/solargraph/api_map/store.rb +17 -19
  9. data/lib/solargraph/bundle.rb +2 -0
  10. data/lib/solargraph/complex_type.rb +18 -4
  11. data/lib/solargraph/complex_type/type_methods.rb +2 -0
  12. data/lib/solargraph/complex_type/unique_type.rb +2 -0
  13. data/lib/solargraph/convention.rb +38 -0
  14. data/lib/solargraph/convention/base.rb +28 -0
  15. data/lib/solargraph/convention/gemfile.rb +18 -0
  16. data/lib/solargraph/convention/gemspec.rb +25 -0
  17. data/lib/solargraph/convention/rspec.rb +23 -0
  18. data/lib/solargraph/core_fills.rb +66 -42
  19. data/lib/solargraph/diagnostics.rb +2 -0
  20. data/lib/solargraph/diagnostics/base.rb +2 -0
  21. data/lib/solargraph/diagnostics/require_not_found.rb +2 -0
  22. data/lib/solargraph/diagnostics/rubocop.rb +2 -0
  23. data/lib/solargraph/diagnostics/rubocop_helpers.rb +2 -0
  24. data/lib/solargraph/diagnostics/severities.rb +15 -13
  25. data/lib/solargraph/diagnostics/type_check.rb +2 -0
  26. data/lib/solargraph/diagnostics/update_errors.rb +2 -0
  27. data/lib/solargraph/documentor.rb +42 -0
  28. data/lib/solargraph/environ.rb +40 -0
  29. data/lib/solargraph/language_server.rb +19 -17
  30. data/lib/solargraph/language_server/completion_item_kinds.rb +2 -0
  31. data/lib/solargraph/language_server/error_codes.rb +2 -0
  32. data/lib/solargraph/language_server/host.rb +3 -1
  33. data/lib/solargraph/language_server/host/cataloger.rb +2 -0
  34. data/lib/solargraph/language_server/host/diagnoser.rb +2 -0
  35. data/lib/solargraph/language_server/host/dispatch.rb +2 -0
  36. data/lib/solargraph/language_server/host/sources.rb +2 -0
  37. data/lib/solargraph/language_server/message.rb +2 -0
  38. data/lib/solargraph/language_server/message/base.rb +2 -0
  39. data/lib/solargraph/language_server/message/cancel_request.rb +13 -11
  40. data/lib/solargraph/language_server/message/client.rb +11 -9
  41. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -13
  42. data/lib/solargraph/language_server/message/completion_item.rb +11 -9
  43. data/lib/solargraph/language_server/message/completion_item/resolve.rb +2 -0
  44. data/lib/solargraph/language_server/message/exit_notification.rb +2 -0
  45. data/lib/solargraph/language_server/message/extended.rb +2 -0
  46. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +2 -0
  47. data/lib/solargraph/language_server/message/extended/document.rb +2 -0
  48. data/lib/solargraph/language_server/message/extended/document_gems.rb +2 -0
  49. data/lib/solargraph/language_server/message/extended/download_core.rb +27 -25
  50. data/lib/solargraph/language_server/message/extended/environment.rb +5 -0
  51. data/lib/solargraph/language_server/message/extended/search.rb +2 -0
  52. data/lib/solargraph/language_server/message/initialize.rb +2 -0
  53. data/lib/solargraph/language_server/message/initialized.rb +2 -0
  54. data/lib/solargraph/language_server/message/method_not_found.rb +16 -14
  55. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -12
  56. data/lib/solargraph/language_server/message/shutdown.rb +2 -0
  57. data/lib/solargraph/language_server/message/text_document.rb +2 -0
  58. data/lib/solargraph/language_server/message/text_document/base.rb +19 -17
  59. data/lib/solargraph/language_server/message/text_document/code_action.rb +2 -0
  60. data/lib/solargraph/language_server/message/text_document/completion.rb +3 -1
  61. data/lib/solargraph/language_server/message/text_document/definition.rb +2 -0
  62. data/lib/solargraph/language_server/message/text_document/did_change.rb +2 -0
  63. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -13
  64. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -13
  65. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -15
  66. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +2 -0
  67. data/lib/solargraph/language_server/message/text_document/folding_range.rb +2 -0
  68. data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -1
  69. data/lib/solargraph/language_server/message/text_document/hover.rb +3 -1
  70. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +2 -0
  71. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +2 -0
  72. data/lib/solargraph/language_server/message/text_document/references.rb +2 -0
  73. data/lib/solargraph/language_server/message/text_document/rename.rb +2 -0
  74. data/lib/solargraph/language_server/message/text_document/signature_help.rb +7 -1
  75. data/lib/solargraph/language_server/message/workspace.rb +2 -0
  76. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +2 -0
  77. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +2 -0
  78. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +2 -0
  79. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +2 -0
  80. data/lib/solargraph/language_server/message_types.rb +14 -12
  81. data/lib/solargraph/language_server/request.rb +2 -0
  82. data/lib/solargraph/language_server/symbol_kinds.rb +2 -0
  83. data/lib/solargraph/language_server/transport.rb +2 -0
  84. data/lib/solargraph/language_server/transport/adapter.rb +2 -0
  85. data/lib/solargraph/language_server/transport/data_reader.rb +3 -1
  86. data/lib/solargraph/language_server/uri_helpers.rb +2 -0
  87. data/lib/solargraph/library.rb +2 -0
  88. data/lib/solargraph/location.rb +2 -0
  89. data/lib/solargraph/logging.rb +2 -0
  90. data/lib/solargraph/page.rb +2 -0
  91. data/lib/solargraph/pin.rb +3 -20
  92. data/lib/solargraph/pin/attribute.rb +2 -4
  93. data/lib/solargraph/pin/base.rb +3 -5
  94. data/lib/solargraph/pin/base_method.rb +2 -4
  95. data/lib/solargraph/pin/base_variable.rb +2 -0
  96. data/lib/solargraph/pin/block.rb +2 -4
  97. data/lib/solargraph/pin/class_variable.rb +2 -3
  98. data/lib/solargraph/pin/closure.rb +9 -0
  99. data/lib/solargraph/pin/common.rb +3 -5
  100. data/lib/solargraph/pin/constant.rb +2 -4
  101. data/lib/solargraph/pin/conversions.rb +4 -2
  102. data/lib/solargraph/pin/documenting.rb +2 -0
  103. data/lib/solargraph/pin/duck_method.rb +2 -0
  104. data/lib/solargraph/pin/global_variable.rb +2 -3
  105. data/lib/solargraph/pin/instance_variable.rb +2 -4
  106. data/lib/solargraph/pin/keyword.rb +2 -4
  107. data/lib/solargraph/pin/keyword_param.rb +8 -0
  108. data/lib/solargraph/pin/local_variable.rb +2 -4
  109. data/lib/solargraph/pin/localized.rb +2 -0
  110. data/lib/solargraph/pin/method.rb +14 -4
  111. data/lib/solargraph/pin/method_alias.rb +2 -4
  112. data/lib/solargraph/pin/namespace.rb +22 -14
  113. data/lib/solargraph/pin/parameter.rb +4 -6
  114. data/lib/solargraph/pin/proxy_type.rb +2 -0
  115. data/lib/solargraph/pin/reference.rb +2 -0
  116. data/lib/solargraph/pin/reference/extend.rb +2 -3
  117. data/lib/solargraph/pin/reference/include.rb +2 -3
  118. data/lib/solargraph/pin/reference/override.rb +12 -3
  119. data/lib/solargraph/pin/reference/require.rb +2 -4
  120. data/lib/solargraph/pin/reference/superclass.rb +2 -3
  121. data/lib/solargraph/pin/singleton.rb +2 -0
  122. data/lib/solargraph/pin/symbol.rb +2 -4
  123. data/lib/solargraph/pin/yard_pin.rb +2 -0
  124. data/lib/solargraph/pin/yard_pin/constant.rb +7 -3
  125. data/lib/solargraph/pin/yard_pin/method.rb +12 -10
  126. data/lib/solargraph/pin/yard_pin/namespace.rb +9 -4
  127. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +30 -3
  128. data/lib/solargraph/position.rb +2 -0
  129. data/lib/solargraph/range.rb +2 -0
  130. data/lib/solargraph/server_methods.rb +2 -0
  131. data/lib/solargraph/shell.rb +33 -2
  132. data/lib/solargraph/source.rb +2 -0
  133. data/lib/solargraph/source/chain.rb +2 -0
  134. data/lib/solargraph/source/chain/call.rb +63 -14
  135. data/lib/solargraph/source/chain/class_variable.rb +2 -0
  136. data/lib/solargraph/source/chain/constant.rb +18 -11
  137. data/lib/solargraph/source/chain/global_variable.rb +2 -0
  138. data/lib/solargraph/source/chain/head.rb +2 -0
  139. data/lib/solargraph/source/chain/instance_variable.rb +2 -0
  140. data/lib/solargraph/source/chain/link.rb +2 -0
  141. data/lib/solargraph/source/chain/literal.rb +2 -0
  142. data/lib/solargraph/source/chain/or.rb +2 -0
  143. data/lib/solargraph/source/chain/variable.rb +2 -0
  144. data/lib/solargraph/source/change.rb +2 -0
  145. data/lib/solargraph/source/cursor.rb +4 -1
  146. data/lib/solargraph/source/encoding_fixes.rb +2 -0
  147. data/lib/solargraph/source/flawed_builder.rb +15 -13
  148. data/lib/solargraph/source/node_chainer.rb +2 -0
  149. data/lib/solargraph/source/node_methods.rb +9 -5
  150. data/lib/solargraph/source/source_chainer.rb +2 -0
  151. data/lib/solargraph/source/updater.rb +52 -50
  152. data/lib/solargraph/source_map.rb +15 -7
  153. data/lib/solargraph/source_map/clip.rb +35 -3
  154. data/lib/solargraph/source_map/completion.rb +2 -0
  155. data/lib/solargraph/source_map/mapper.rb +2 -0
  156. data/lib/solargraph/source_map/node_processor.rb +2 -0
  157. data/lib/solargraph/source_map/node_processor/alias_node.rb +2 -0
  158. data/lib/solargraph/source_map/node_processor/args_node.rb +2 -0
  159. data/lib/solargraph/source_map/node_processor/base.rb +5 -3
  160. data/lib/solargraph/source_map/node_processor/begin_node.rb +2 -0
  161. data/lib/solargraph/source_map/node_processor/block_node.rb +2 -0
  162. data/lib/solargraph/source_map/node_processor/casgn_node.rb +2 -0
  163. data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +2 -0
  164. data/lib/solargraph/source_map/node_processor/def_node.rb +2 -0
  165. data/lib/solargraph/source_map/node_processor/defs_node.rb +2 -0
  166. data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +2 -0
  167. data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +3 -1
  168. data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +2 -0
  169. data/lib/solargraph/source_map/node_processor/namespace_node.rb +4 -1
  170. data/lib/solargraph/source_map/node_processor/orasgn_node.rb +2 -0
  171. data/lib/solargraph/source_map/node_processor/resbody_node.rb +2 -0
  172. data/lib/solargraph/source_map/node_processor/sclass_node.rb +2 -0
  173. data/lib/solargraph/source_map/node_processor/send_node.rb +11 -6
  174. data/lib/solargraph/source_map/node_processor/sym_node.rb +2 -0
  175. data/lib/solargraph/source_map/region.rb +2 -0
  176. data/lib/solargraph/type_checker.rb +35 -17
  177. data/lib/solargraph/type_checker/param_def.rb +2 -0
  178. data/lib/solargraph/type_checker/problem.rb +2 -0
  179. data/lib/solargraph/version.rb +3 -1
  180. data/lib/solargraph/views/document.erb +3 -3
  181. data/lib/solargraph/views/environment.erb +3 -0
  182. data/lib/solargraph/workspace.rb +5 -1
  183. data/lib/solargraph/workspace/config.rb +14 -0
  184. data/lib/solargraph/yard_map.rb +64 -5
  185. data/lib/solargraph/yard_map/cache.rb +2 -0
  186. data/lib/solargraph/yard_map/core_docs.rb +2 -0
  187. data/lib/solargraph/yard_map/core_gen.rb +2 -0
  188. data/lib/solargraph/yard_map/mapper.rb +15 -14
  189. data/lib/solargraph/yard_map/rdoc_to_yard.rb +129 -0
  190. data/lib/yard-solargraph.rb +8 -0
  191. metadata +11 -2
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  module Common
@@ -11,10 +13,6 @@ module Solargraph
11
13
  @name ||= ''
12
14
  end
13
15
 
14
- def kind
15
- @kind ||= Pin::KEYWORD
16
- end
17
-
18
16
  def return_type
19
17
  @return_type ||= ComplexType::UNDEFINED
20
18
  end
@@ -49,7 +47,7 @@ module Solargraph
49
47
  def find_context
50
48
  here = closure
51
49
  until here.nil?
52
- return here.return_type if here.kind == Pin::NAMESPACE
50
+ return here.return_type if here.is_a?(Pin::Namespace)
53
51
  here = here.closure
54
52
  end
55
53
  ComplexType::ROOT
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Constant < BaseVariable
@@ -8,10 +10,6 @@ module Solargraph
8
10
  @visibility = visibility
9
11
  end
10
12
 
11
- def kind
12
- Pin::CONSTANT
13
- end
14
-
15
13
  def completion_item_kind
16
14
  Solargraph::LanguageServer::CompletionItemKinds::CONSTANT
17
15
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  # @todo Move this stuff. It should be the responsibility of the language server.
@@ -43,8 +45,8 @@ module Solargraph
43
45
  def detail
44
46
  # This property is not cached in an instance variable because it can
45
47
  # change when pins get proxied.
46
- detail = ''
47
- detail += "(#{parameters.join(', ')}) " unless kind != Pin::METHOD or parameters.empty?
48
+ detail = String.new
49
+ detail += "(#{parameters.join(', ')}) " unless !is_a?(Pin::BaseMethod) or parameters.empty?
48
50
  detail += "=#{probed? ? '~' : (proxied? ? '^' : '>')} #{return_type}" unless return_type.undefined?
49
51
  detail.strip!
50
52
  return nil if detail.empty?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rdoc'
2
4
  require 'reverse_markdown'
3
5
  require 'kramdown'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  # DuckMethod pins are used to add completion items for type tags that
@@ -1,9 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class GlobalVariable < BaseVariable
4
- def kind
5
- Pin::GLOBAL_VARIABLE
6
- end
7
6
  end
8
7
  end
9
8
  end
@@ -1,10 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class InstanceVariable < BaseVariable
4
- def kind
5
- Pin::INSTANCE_VARIABLE
6
- end
7
-
8
6
  def binder
9
7
  closure.binder
10
8
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Keyword < Base
@@ -8,10 +10,6 @@ module Solargraph
8
10
  def name
9
11
  @name
10
12
  end
11
-
12
- def kind
13
- Solargraph::Pin::KEYWORD
14
- end
15
13
  end
16
14
  end
17
15
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Pin
5
+ class KeywordParam < Symbol
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class LocalVariable < BaseVariable
@@ -9,10 +11,6 @@ module Solargraph
9
11
  @presence = presence
10
12
  end
11
13
 
12
- def kind
13
- Pin::LOCAL_VARIABLE
14
- end
15
-
16
14
  def try_merge! pin
17
15
  return false unless super
18
16
  @presence = pin.presence
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  module Localized
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'htmlentities'
2
4
 
3
5
  module Solargraph
@@ -24,10 +26,6 @@ module Solargraph
24
26
  @parameter_names ||= parameters.map{|p| p.split(/[ =:]/).first.gsub(/^(\*{1,2}|&)/, '')}
25
27
  end
26
28
 
27
- def kind
28
- Solargraph::Pin::METHOD
29
- end
30
-
31
29
  def completion_item_kind
32
30
  Solargraph::LanguageServer::CompletionItemKinds::METHOD
33
31
  end
@@ -73,6 +71,18 @@ module Solargraph
73
71
  true
74
72
  end
75
73
 
74
+ # @return [Array<Pin::Method>]
75
+ def overloads
76
+ @overloads ||= docstring.tags(:overload).map do |tag|
77
+ Solargraph::Pin::Method.new(
78
+ name: name,
79
+ closure: closure,
80
+ args: tag.parameters.map(&:first),
81
+ comments: tag.text
82
+ )
83
+ end
84
+ end
85
+
76
86
  private
77
87
 
78
88
  # @return [Parser::AST::Node, nil]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  # Use this class to track method aliases for later remapping. Common
@@ -17,10 +19,6 @@ module Solargraph
17
19
  @original = original
18
20
  end
19
21
 
20
- def kind
21
- Pin::METHOD_ALIAS
22
- end
23
-
24
22
  def visibility
25
23
  :public
26
24
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Namespace < Closure
@@ -7,23 +9,25 @@ module Solargraph
7
9
  # @return [::Symbol] :class or :module
8
10
  attr_reader :type
9
11
 
10
- # def initialize location, namespace, name, comments, type, visibility
11
- def initialize type: :class, visibility: :public, **splat
12
+ # @param type [Symbol] :class or :module
13
+ # @param visibility [Symbol] :public or :private
14
+ # @param gates [Array<String>]
15
+ def initialize type: :class, visibility: :public, gates: [''], **splat
12
16
  # super(location, namespace, name, comments)
13
17
  super(splat)
14
18
  @type = type
15
19
  @visibility = visibility
16
20
  if name.start_with?('::')
17
21
  @name = name[2..-1]
18
- @closure = Pin::ROOT_PIN
22
+ @closure = Solargraph::Pin::ROOT_PIN
19
23
  end
20
- @gate = @name
21
- if @gate.include?('::')
22
- parts = @gate.split('::')
23
- @name = parts.last
24
- adjusted = (@closure ? @closure.path : Pin::ROOT_PIN.path).split('::') + parts[0..-2]
25
- # @closure = Pin::Base.new(kind: NAMESPACE, name: adjusted.join('::'))
26
- @closure = Pin::Namespace.new(name: adjusted.join('::'))
24
+ @open_gates = gates
25
+ if @open_gates.one? && @open_gates.first.empty? && @name.include?('::')
26
+ # In this case, a chained namespace was opened (e.g., Foo::Bar)
27
+ # but Foo does not exist.
28
+ parts = @name.split('::')
29
+ @name = parts.pop
30
+ @closure = Pin::Namespace.new(name: parts.join('::'), gates: [parts.join('::')])
27
31
  @context = nil
28
32
  end
29
33
  end
@@ -32,10 +36,6 @@ module Solargraph
32
36
  context.namespace
33
37
  end
34
38
 
35
- def kind
36
- Pin::NAMESPACE
37
- end
38
-
39
39
  def full_context
40
40
  @full_context ||= ComplexType.try_parse("#{type.to_s.capitalize}<#{path}>")
41
41
  end
@@ -72,6 +72,14 @@ module Solargraph
72
72
  def typify api_map
73
73
  return_type
74
74
  end
75
+
76
+ def gates
77
+ @gates ||= if path.empty?
78
+ @open_gates
79
+ else
80
+ [path] + @open_gates
81
+ end
82
+ end
75
83
  end
76
84
  end
77
85
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Parameter < LocalVariable
@@ -68,18 +70,14 @@ module Solargraph
68
70
  locals = clip.locals - [self]
69
71
  meths = chain.define(api_map, closure, locals)
70
72
  meths.each do |meth|
71
- if (Solargraph::CoreFills::METHODS_WITH_YIELDPARAM_SUBTYPES.include?(meth.path))
73
+ if meth.docstring.has_tag?(:yieldparam_single_parameter)
72
74
  bmeth = chain.base.define(api_map, closure, locals).first
73
75
  return ComplexType::UNDEFINED if bmeth.nil? || bmeth.return_type.undefined? || bmeth.return_type.subtypes.empty?
74
76
  return bmeth.return_type.subtypes.first.qualify(api_map, bmeth.context.namespace)
75
- elsif (Solargraph::CoreFills::METHODS_WITH_YIELDPARAM_SELF.include?(meth.path))
76
- bmeth = chain.base.define(api_map, closure, locals).first
77
- return ComplexType::UNDEFINED if bmeth.nil?
78
- return bmeth.typify(api_map)
79
77
  else
80
78
  yps = meth.docstring.tags(:yieldparam)
81
79
  unless yps[index].nil? or yps[index].types.nil? or yps[index].types.empty?
82
- return ComplexType.try_parse(yps[index].types.first).qualify(api_map, meth.context.namespace)
80
+ return ComplexType.try_parse(yps[index].types.first).self_to(chain.base.infer(api_map, closure, locals).namespace).qualify(api_map, meth.context.namespace)
83
81
  end
84
82
  end
85
83
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class ProxyType < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference < Base
@@ -1,10 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference
4
6
  class Extend < Reference
5
- def kind
6
- Pin::EXTEND_REFERENCE
7
- end
8
7
  end
9
8
  end
10
9
  end
@@ -1,10 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference
4
6
  class Include < Reference
5
- def kind
6
- Pin::INCLUDE_REFERENCE
7
- end
8
7
  end
9
8
  end
10
9
  end
@@ -1,16 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference
4
6
  class Override < Reference
5
7
  attr_reader :tags
6
8
 
7
- def initialize location, name, tags
9
+ attr_reader :delete
10
+
11
+ def initialize location, name, tags, delete = []
8
12
  super(location: location, name: name)
9
13
  @tags = tags
14
+ @delete = delete
15
+ end
16
+
17
+ def self.method_return name, *tags, delete: []
18
+ new(nil, name, [YARD::Tags::Tag.new('return', nil, tags)], delete)
10
19
  end
11
20
 
12
- def kind
13
- Pin::OVERRIDE_REFERENCE
21
+ def self.from_comment name, comment
22
+ new(nil, name, Solargraph::Source.parse_docstring(comment).to_docstring.tags)
14
23
  end
15
24
  end
16
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference
@@ -6,10 +8,6 @@ module Solargraph
6
8
  # super(location, '', name)
7
9
  super(location: location, name: name)
8
10
  end
9
-
10
- def kind
11
- Pin::REQUIRE_REFERENCE
12
- end
13
11
  end
14
12
  end
15
13
  end
@@ -1,10 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Reference
4
6
  class Superclass < Reference
5
- def kind
6
- Pin::SUPERCLASS_REFERENCE
7
- end
8
7
  end
9
8
  end
10
9
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Singleton < Closure
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  class Symbol < Base
@@ -13,10 +15,6 @@ module Solargraph
13
15
  ''
14
16
  end
15
17
 
16
- def kind
17
- Pin::SYMBOL
18
- end
19
-
20
18
  def path
21
19
  ''
22
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  module YardPin
@@ -1,19 +1,23 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  module Pin
3
5
  module YardPin
4
6
  class Constant < Pin::Constant
5
7
  include YardMixin
6
8
 
7
- def initialize code_object, location, closure = nil
9
+ def initialize code_object, closure = nil, spec = nil
8
10
  @code_object = code_object
11
+ @spec = spec
9
12
  closure ||= Solargraph::Pin::Namespace.new(
10
- name: code_object.namespace.to_s
13
+ name: code_object.namespace.to_s,
14
+ gates: [code_object.namespace.to_s]
11
15
  )
12
16
  super(
13
17
  location: location,
14
18
  closure: closure,
15
19
  name: code_object.name.to_s,
16
- comments: comments_from(code_object),
20
+ comments: nil,
17
21
  visibility: code_object.visibility
18
22
  )
19
23
  end