solargraph 0.32.1 → 0.32.2

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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +6 -0
  5. data/.travis.yml +25 -0
  6. data/EXAMPLES.md +76 -0
  7. data/Gemfile +3 -0
  8. data/LANGUAGE_SERVER.md +51 -0
  9. data/LICENSE +21 -0
  10. data/OVERVIEW.md +37 -0
  11. data/README.md +106 -0
  12. data/Rakefile +14 -0
  13. data/SERVER.md +95 -0
  14. data/bin/solargraph +0 -0
  15. data/bin/solargraph-runtime +5 -5
  16. data/lib/solargraph.rb +54 -54
  17. data/lib/solargraph/api_map.rb +659 -659
  18. data/lib/solargraph/api_map/cache.rb +49 -49
  19. data/lib/solargraph/api_map/source_to_yard.rb +67 -67
  20. data/lib/solargraph/api_map/store.rb +201 -201
  21. data/lib/solargraph/bundle.rb +24 -24
  22. data/lib/solargraph/complex_type.rb +150 -150
  23. data/lib/solargraph/complex_type/type_methods.rb +124 -124
  24. data/lib/solargraph/complex_type/unique_type.rb +44 -44
  25. data/lib/solargraph/core_fills.rb +37 -37
  26. data/lib/solargraph/diagnostics.rb +52 -52
  27. data/lib/solargraph/diagnostics/base.rb +20 -20
  28. data/lib/solargraph/diagnostics/require_not_found.rb +28 -28
  29. data/lib/solargraph/diagnostics/rubocop.rb +98 -98
  30. data/lib/solargraph/diagnostics/rubocop_helpers.rb +46 -46
  31. data/lib/solargraph/diagnostics/type_not_defined.rb +108 -108
  32. data/lib/solargraph/diagnostics/update_errors.rb +38 -38
  33. data/lib/solargraph/language_server/completion_item_kinds.rb +33 -33
  34. data/lib/solargraph/language_server/error_codes.rb +18 -18
  35. data/lib/solargraph/language_server/host.rb +684 -681
  36. data/lib/solargraph/language_server/host/cataloger.rb +54 -79
  37. data/lib/solargraph/language_server/host/diagnoser.rb +80 -80
  38. data/lib/solargraph/language_server/host/dispatch.rb +112 -113
  39. data/lib/solargraph/language_server/host/sources.rb +138 -138
  40. data/lib/solargraph/language_server/message.rb +90 -90
  41. data/lib/solargraph/language_server/message/base.rb +83 -83
  42. data/lib/solargraph/language_server/message/completion_item/resolve.rb +40 -40
  43. data/lib/solargraph/language_server/message/exit_notification.rb +11 -11
  44. data/lib/solargraph/language_server/message/extended.rb +19 -19
  45. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +86 -86
  46. data/lib/solargraph/language_server/message/extended/document.rb +18 -18
  47. data/lib/solargraph/language_server/message/extended/document_gems.rb +30 -30
  48. data/lib/solargraph/language_server/message/extended/environment.rb +20 -20
  49. data/lib/solargraph/language_server/message/extended/search.rb +18 -18
  50. data/lib/solargraph/language_server/message/initialize.rb +141 -141
  51. data/lib/solargraph/language_server/message/initialized.rb +23 -23
  52. data/lib/solargraph/language_server/message/shutdown.rb +11 -11
  53. data/lib/solargraph/language_server/message/text_document.rb +25 -25
  54. data/lib/solargraph/language_server/message/text_document/completion.rb +51 -51
  55. data/lib/solargraph/language_server/message/text_document/definition.rb +18 -18
  56. data/lib/solargraph/language_server/message/text_document/did_change.rb +13 -13
  57. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +21 -21
  58. data/lib/solargraph/language_server/message/text_document/folding_range.rb +24 -24
  59. data/lib/solargraph/language_server/message/text_document/formatting.rb +50 -50
  60. data/lib/solargraph/language_server/message/text_document/hover.rb +31 -31
  61. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +32 -32
  62. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +9 -9
  63. data/lib/solargraph/language_server/message/text_document/references.rb +14 -14
  64. data/lib/solargraph/language_server/message/text_document/rename.rb +17 -17
  65. data/lib/solargraph/language_server/message/text_document/signature_help.rb +19 -19
  66. data/lib/solargraph/language_server/message/workspace.rb +12 -12
  67. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -29
  68. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +29 -27
  69. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
  70. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +21 -21
  71. data/lib/solargraph/language_server/request.rb +22 -22
  72. data/lib/solargraph/language_server/symbol_kinds.rb +34 -34
  73. data/lib/solargraph/language_server/transport.rb +11 -11
  74. data/lib/solargraph/language_server/transport/adapter.rb +60 -60
  75. data/lib/solargraph/language_server/transport/data_reader.rb +66 -66
  76. data/lib/solargraph/language_server/uri_helpers.rb +25 -25
  77. data/lib/solargraph/library.rb +421 -419
  78. data/lib/solargraph/live_map.rb +126 -126
  79. data/lib/solargraph/live_map/cache.rb +38 -38
  80. data/lib/solargraph/location.rb +31 -31
  81. data/lib/solargraph/logging.rb +25 -25
  82. data/lib/solargraph/page.rb +68 -68
  83. data/lib/solargraph/pin.rb +50 -50
  84. data/lib/solargraph/pin/attribute.rb +41 -41
  85. data/lib/solargraph/pin/base.rb +280 -280
  86. data/lib/solargraph/pin/base_method.rb +76 -76
  87. data/lib/solargraph/pin/base_variable.rb +72 -72
  88. data/lib/solargraph/pin/block.rb +32 -32
  89. data/lib/solargraph/pin/block_parameter.rb +103 -103
  90. data/lib/solargraph/pin/class_variable.rb +9 -9
  91. data/lib/solargraph/pin/constant.rb +30 -30
  92. data/lib/solargraph/pin/conversions.rb +79 -79
  93. data/lib/solargraph/pin/documenting.rb +41 -41
  94. data/lib/solargraph/pin/duck_method.rb +14 -14
  95. data/lib/solargraph/pin/global_variable.rb +9 -9
  96. data/lib/solargraph/pin/instance_variable.rb +9 -9
  97. data/lib/solargraph/pin/keyword.rb +17 -17
  98. data/lib/solargraph/pin/local_variable.rb +23 -23
  99. data/lib/solargraph/pin/localized.rb +22 -22
  100. data/lib/solargraph/pin/method.rb +126 -126
  101. data/lib/solargraph/pin/method_alias.rb +30 -30
  102. data/lib/solargraph/pin/method_parameter.rb +40 -40
  103. data/lib/solargraph/pin/namespace.rb +54 -54
  104. data/lib/solargraph/pin/plugin/method.rb +25 -25
  105. data/lib/solargraph/pin/proxy_type.rb +35 -35
  106. data/lib/solargraph/pin/reference.rb +22 -22
  107. data/lib/solargraph/pin/reference/extend.rb +11 -11
  108. data/lib/solargraph/pin/reference/include.rb +11 -11
  109. data/lib/solargraph/pin/reference/require.rb +15 -15
  110. data/lib/solargraph/pin/reference/superclass.rb +11 -11
  111. data/lib/solargraph/pin/symbol.rb +44 -44
  112. data/lib/solargraph/pin/yard_pin.rb +10 -10
  113. data/lib/solargraph/pin/yard_pin/constant.rb +14 -14
  114. data/lib/solargraph/pin/yard_pin/method.rb +35 -35
  115. data/lib/solargraph/pin/yard_pin/namespace.rb +19 -19
  116. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +14 -14
  117. data/lib/solargraph/plugin.rb +8 -8
  118. data/lib/solargraph/plugin/base.rb +41 -41
  119. data/lib/solargraph/plugin/canceler.rb +11 -11
  120. data/lib/solargraph/plugin/process.rb +172 -172
  121. data/lib/solargraph/plugin/runtime.rb +134 -134
  122. data/lib/solargraph/position.rb +110 -110
  123. data/lib/solargraph/range.rb +83 -83
  124. data/lib/solargraph/server_methods.rb +14 -14
  125. data/lib/solargraph/shell.rb +102 -102
  126. data/lib/solargraph/source.rb +521 -521
  127. data/lib/solargraph/source/chain.rb +120 -120
  128. data/lib/solargraph/source/chain/call.rb +107 -107
  129. data/lib/solargraph/source/chain/class_variable.rb +11 -11
  130. data/lib/solargraph/source/chain/constant.rb +30 -30
  131. data/lib/solargraph/source/chain/global_variable.rb +11 -11
  132. data/lib/solargraph/source/chain/head.rb +33 -33
  133. data/lib/solargraph/source/chain/instance_variable.rb +11 -11
  134. data/lib/solargraph/source/chain/link.rb +33 -33
  135. data/lib/solargraph/source/chain/literal.rb +21 -21
  136. data/lib/solargraph/source/chain/variable.rb +11 -11
  137. data/lib/solargraph/source/change.rb +77 -77
  138. data/lib/solargraph/source/cursor.rb +157 -157
  139. data/lib/solargraph/source/node_chainer.rb +96 -96
  140. data/lib/solargraph/source/node_methods.rb +225 -225
  141. data/lib/solargraph/source/source_chainer.rb +183 -183
  142. data/lib/solargraph/source_map.rb +169 -169
  143. data/lib/solargraph/source_map/clip.rb +145 -145
  144. data/lib/solargraph/source_map/completion.rb +21 -21
  145. data/lib/solargraph/source_map/mapper.rb +149 -149
  146. data/lib/solargraph/source_map/node_processor.rb +78 -78
  147. data/lib/solargraph/source_map/node_processor/alias_node.rb +19 -19
  148. data/lib/solargraph/source_map/node_processor/args_node.rb +28 -28
  149. data/lib/solargraph/source_map/node_processor/base.rb +68 -68
  150. data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -11
  151. data/lib/solargraph/source_map/node_processor/block_node.rb +14 -14
  152. data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -14
  153. data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -14
  154. data/lib/solargraph/source_map/node_processor/def_node.rb +54 -54
  155. data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -21
  156. data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -12
  157. data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -18
  158. data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -16
  159. data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -26
  160. data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -12
  161. data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -11
  162. data/lib/solargraph/source_map/node_processor/send_node.rb +162 -162
  163. data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -11
  164. data/lib/solargraph/source_map/region.rb +58 -58
  165. data/lib/solargraph/version.rb +3 -3
  166. data/lib/solargraph/views/environment.erb +53 -53
  167. data/lib/solargraph/workspace.rb +183 -183
  168. data/lib/solargraph/workspace/config.rb +170 -170
  169. data/lib/solargraph/yard_map.rb +298 -298
  170. data/lib/solargraph/yard_map/cache.rb +17 -17
  171. data/lib/solargraph/yard_map/core_docs.rb +163 -163
  172. data/lib/solargraph/yard_map/core_gen.rb +76 -76
  173. data/lib/yard-coregen.rb +16 -16
  174. data/lib/yard-solargraph.rb +18 -18
  175. data/solargraph.gemspec +37 -0
  176. data/travis-bundler.rb +10 -0
  177. metadata +19 -6
@@ -1,19 +1,19 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class AliasNode < Base
5
- def process
6
- pin = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.name == node.children[1].children[0].to_s && p.namespace == region.namespace && p.scope == region.scope}.first
7
- if pin.nil?
8
- pins.push Solargraph::Pin::MethodAlias.new(get_node_location(node), region.namespace, node.children[0].children[0].to_s, region.scope, node.children[1].children[0].to_s)
9
- elsif pin.is_a?(Solargraph::Pin::Method)
10
- pins.push Solargraph::Pin::Method.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.scope, pin.visibility, pin.parameters, pin.node)
11
- elsif pin.is_a?(Solargraph::Pin::Attribute)
12
- pins.push Solargraph::Pin::Attribute.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.access, pin.scope, pin.visibility)
13
- end
14
- process_children
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class AliasNode < Base
5
+ def process
6
+ pin = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.name == node.children[1].children[0].to_s && p.namespace == region.namespace && p.scope == region.scope}.first
7
+ if pin.nil?
8
+ pins.push Solargraph::Pin::MethodAlias.new(get_node_location(node), region.namespace, node.children[0].children[0].to_s, region.scope, node.children[1].children[0].to_s)
9
+ elsif pin.is_a?(Solargraph::Pin::Method)
10
+ pins.push Solargraph::Pin::Method.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.scope, pin.visibility, pin.parameters, pin.node)
11
+ elsif pin.is_a?(Solargraph::Pin::Attribute)
12
+ pins.push Solargraph::Pin::Attribute.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.access, pin.scope, pin.visibility)
13
+ end
14
+ process_children
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,28 +1,28 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class ArgsNode < Base
5
- def process
6
- return if node.children.empty?
7
- here = get_node_start_position(node)
8
- context = named_path_pin(here)
9
- block = block_pin(here)
10
- if block.kind == Solargraph::Pin::BLOCK
11
- pi = 0
12
- node.children.each do |u|
13
- pins.push Solargraph::Pin::BlockParameter.new(get_node_location(u), region.namespace, "#{u.children[0]}", comments_for(node), block)
14
- block.parameters.push pins.last
15
- pi += 1
16
- end
17
- else
18
- node.children.each do |u|
19
- presence = Range.new(here, block.location.range.ending)
20
- pins.push Solargraph::Pin::MethodParameter.new(get_node_location(u), region.namespace, u.children[0].to_s, comments_for(node), u.children[1], infer_literal_node_type(u.children[1]), context, block, presence)
21
- end
22
- end
23
- process_children
24
- end
25
- end
26
- end
27
- end
28
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class ArgsNode < Base
5
+ def process
6
+ return if node.children.empty?
7
+ here = get_node_start_position(node)
8
+ context = named_path_pin(here)
9
+ block = block_pin(here)
10
+ if block.kind == Solargraph::Pin::BLOCK
11
+ pi = 0
12
+ node.children.each do |u|
13
+ pins.push Solargraph::Pin::BlockParameter.new(get_node_location(u), region.namespace, "#{u.children[0]}", comments_for(node), block)
14
+ block.parameters.push pins.last
15
+ pi += 1
16
+ end
17
+ else
18
+ node.children.each do |u|
19
+ presence = Range.new(here, block.location.range.ending)
20
+ pins.push Solargraph::Pin::MethodParameter.new(get_node_location(u), region.namespace, u.children[0].to_s, comments_for(node), u.children[1], infer_literal_node_type(u.children[1]), context, block, presence)
21
+ end
22
+ end
23
+ process_children
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,68 +1,68 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class Base
5
- include Solargraph::Source::NodeMethods
6
-
7
- # @return [Parser::AST::Node]
8
- attr_reader :node
9
-
10
- # @return [Region]
11
- attr_reader :region
12
-
13
- # @return [Array<Pin::Base>]
14
- attr_reader :pins
15
-
16
- # @param node [Parser::AST::Node]
17
- # @param region [Region]
18
- # @param pins [Array<Pin::Base>]
19
- def initialize node, region, pins
20
- @node = node
21
- @region = region
22
- @pins = pins
23
- end
24
-
25
- protected
26
-
27
- # Subclasses should override this method to generate new pins.
28
- #
29
- # @return [void]
30
- def process
31
- raise NoMethodError, "#{self.class} does not implement the `process` method"
32
- end
33
-
34
- private
35
-
36
- # @param subregion [Region]
37
- # @return [void]
38
- def process_children subregion = region
39
- node.children.each do |child|
40
- next unless child.is_a?(Parser::AST::Node)
41
- NodeProcessor.process(child, subregion, pins)
42
- end
43
- end
44
-
45
- # @param node [Parser::AST::Node]
46
- # @return [Solargraph::Location]
47
- def get_node_location(node)
48
- st = Position.new(node.loc.line, node.loc.column)
49
- en = Position.new(node.loc.last_line, node.loc.last_column)
50
- range = Range.new(st, en)
51
- Location.new(region.filename, range)
52
- end
53
-
54
- def comments_for(node)
55
- region.source.comments_for(node)
56
- end
57
-
58
- def named_path_pin position
59
- pins.select{|pin| [Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
60
- end
61
-
62
- def block_pin position
63
- pins.select{|pin| [Pin::BLOCK, Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
64
- end
65
- end
66
- end
67
- end
68
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class Base
5
+ include Solargraph::Source::NodeMethods
6
+
7
+ # @return [Parser::AST::Node]
8
+ attr_reader :node
9
+
10
+ # @return [Region]
11
+ attr_reader :region
12
+
13
+ # @return [Array<Pin::Base>]
14
+ attr_reader :pins
15
+
16
+ # @param node [Parser::AST::Node]
17
+ # @param region [Region]
18
+ # @param pins [Array<Pin::Base>]
19
+ def initialize node, region, pins
20
+ @node = node
21
+ @region = region
22
+ @pins = pins
23
+ end
24
+
25
+ protected
26
+
27
+ # Subclasses should override this method to generate new pins.
28
+ #
29
+ # @return [void]
30
+ def process
31
+ raise NoMethodError, "#{self.class} does not implement the `process` method"
32
+ end
33
+
34
+ private
35
+
36
+ # @param subregion [Region]
37
+ # @return [void]
38
+ def process_children subregion = region
39
+ node.children.each do |child|
40
+ next unless child.is_a?(Parser::AST::Node)
41
+ NodeProcessor.process(child, subregion, pins)
42
+ end
43
+ end
44
+
45
+ # @param node [Parser::AST::Node]
46
+ # @return [Solargraph::Location]
47
+ def get_node_location(node)
48
+ st = Position.new(node.loc.line, node.loc.column)
49
+ en = Position.new(node.loc.last_line, node.loc.last_column)
50
+ range = Range.new(st, en)
51
+ Location.new(region.filename, range)
52
+ end
53
+
54
+ def comments_for(node)
55
+ region.source.comments_for(node)
56
+ end
57
+
58
+ def named_path_pin position
59
+ pins.select{|pin| [Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
60
+ end
61
+
62
+ def block_pin position
63
+ pins.select{|pin| [Pin::BLOCK, Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,11 +1,11 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class BeginNode < Base
5
- def process
6
- process_children
7
- end
8
- end
9
- end
10
- end
11
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class BeginNode < Base
5
+ def process
6
+ process_children
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,14 +1,14 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class BlockNode < Base
5
- def process
6
- here = get_node_start_position(node)
7
- named_path = named_path_pin(here)
8
- pins.push Solargraph::Pin::Block.new(get_node_location(node), region.namespace, '', comments_for(node), node.children[0], named_path.context)
9
- process_children
10
- end
11
- end
12
- end
13
- end
14
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class BlockNode < Base
5
+ def process
6
+ here = get_node_start_position(node)
7
+ named_path = named_path_pin(here)
8
+ pins.push Solargraph::Pin::Block.new(get_node_location(node), region.namespace, '', comments_for(node), node.children[0], named_path.context)
9
+ process_children
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,14 +1,14 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class CasgnNode < Base
5
- def process
6
- here = get_node_start_position(node)
7
- block = block_pin(here)
8
- pins.push Solargraph::Pin::Constant.new(get_node_location(node), region.namespace, node.children[1].to_s, comments_for(node), node.children[2], infer_literal_node_type(node.children[2]), block.context, :public)
9
- process_children
10
- end
11
- end
12
- end
13
- end
14
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class CasgnNode < Base
5
+ def process
6
+ here = get_node_start_position(node)
7
+ block = block_pin(here)
8
+ pins.push Solargraph::Pin::Constant.new(get_node_location(node), region.namespace, node.children[1].to_s, comments_for(node), node.children[2], infer_literal_node_type(node.children[2]), block.context, :public)
9
+ process_children
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,14 +1,14 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class CvasgnNode < Base
5
- def process
6
- here = get_node_start_position(node)
7
- context = named_path_pin(here)
8
- pins.push Solargraph::Pin::ClassVariable.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), node.children[1], infer_literal_node_type(node.children[1]), context.context)
9
- process_children
10
- end
11
- end
12
- end
13
- end
14
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class CvasgnNode < Base
5
+ def process
6
+ here = get_node_start_position(node)
7
+ context = named_path_pin(here)
8
+ pins.push Solargraph::Pin::ClassVariable.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), node.children[1], infer_literal_node_type(node.children[1]), context.context)
9
+ process_children
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,54 +1,54 @@
1
- module Solargraph
2
- class SourceMap
3
- module NodeProcessor
4
- class DefNode < Base
5
- def process
6
- methpin = Solargraph::Pin::Method.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), region.scope, region.visibility, method_args, node)
7
- if methpin.name == 'initialize' and methpin.scope == :instance
8
- pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, 'new', methpin.comments, :class, :public, methpin.parameters, nil)
9
- # @todo Smelly instance variable access.
10
- pins.last.instance_variable_set(:@return_complex_type, ComplexType.try_parse(methpin.namespace))
11
- pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, methpin.scope, :private, methpin.parameters, methpin.node)
12
- elsif region.visibility == :module_function
13
- pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :class, :public, methpin.parameters, methpin.node)
14
- pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :instance, :private, methpin.parameters, methpin.node)
15
- else
16
- pins.push methpin
17
- end
18
- process_children
19
- end
20
-
21
- private
22
-
23
- def method_args
24
- return [] if node.nil?
25
- list = nil
26
- args = []
27
- node.children.each { |c|
28
- if c.kind_of?(AST::Node) and c.type == :args
29
- list = c
30
- break
31
- end
32
- }
33
- return args if list.nil?
34
- list.children.each { |c|
35
- if c.type == :arg
36
- args.push c.children[0].to_s
37
- elsif c.type == :restarg
38
- args.push "*#{c.children[0]}"
39
- elsif c.type == :optarg
40
- args.push "#{c.children[0]} = #{region.code_for(c.children[1])}"
41
- elsif c.type == :kwarg
42
- args.push "#{c.children[0]}:"
43
- elsif c.type == :kwoptarg
44
- args.push "#{c.children[0]}: #{region.code_for(c.children[1])}"
45
- elsif c.type == :blockarg
46
- args.push "&#{c.children[0]}"
47
- end
48
- }
49
- args
50
- end
51
- end
52
- end
53
- end
54
- end
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class DefNode < Base
5
+ def process
6
+ methpin = Solargraph::Pin::Method.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), region.scope, region.visibility, method_args, node)
7
+ if methpin.name == 'initialize' and methpin.scope == :instance
8
+ pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, 'new', methpin.comments, :class, :public, methpin.parameters, nil)
9
+ # @todo Smelly instance variable access.
10
+ pins.last.instance_variable_set(:@return_complex_type, ComplexType.try_parse(methpin.namespace))
11
+ pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, methpin.scope, :private, methpin.parameters, methpin.node)
12
+ elsif region.visibility == :module_function
13
+ pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :class, :public, methpin.parameters, methpin.node)
14
+ pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :instance, :private, methpin.parameters, methpin.node)
15
+ else
16
+ pins.push methpin
17
+ end
18
+ process_children
19
+ end
20
+
21
+ private
22
+
23
+ def method_args
24
+ return [] if node.nil?
25
+ list = nil
26
+ args = []
27
+ node.children.each { |c|
28
+ if c.kind_of?(AST::Node) and c.type == :args
29
+ list = c
30
+ break
31
+ end
32
+ }
33
+ return args if list.nil?
34
+ list.children.each { |c|
35
+ if c.type == :arg
36
+ args.push c.children[0].to_s
37
+ elsif c.type == :restarg
38
+ args.push "*#{c.children[0]}"
39
+ elsif c.type == :optarg
40
+ args.push "#{c.children[0]} = #{region.code_for(c.children[1])}"
41
+ elsif c.type == :kwarg
42
+ args.push "#{c.children[0]}:"
43
+ elsif c.type == :kwoptarg
44
+ args.push "#{c.children[0]}: #{region.code_for(c.children[1])}"
45
+ elsif c.type == :blockarg
46
+ args.push "&#{c.children[0]}"
47
+ end
48
+ }
49
+ args
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end