solargraph 0.58.1 → 0.58.3

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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/plugins.yml +3 -2
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +10 -1
  5. data/lib/solargraph/api_map/cache.rb +110 -110
  6. data/lib/solargraph/api_map/constants.rb +279 -279
  7. data/lib/solargraph/api_map/index.rb +193 -193
  8. data/lib/solargraph/api_map/source_to_yard.rb +97 -97
  9. data/lib/solargraph/api_map/store.rb +384 -384
  10. data/lib/solargraph/api_map.rb +945 -945
  11. data/lib/solargraph/bench.rb +45 -45
  12. data/lib/solargraph/complex_type/type_methods.rb +228 -228
  13. data/lib/solargraph/complex_type/unique_type.rb +482 -482
  14. data/lib/solargraph/complex_type.rb +444 -444
  15. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  16. data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
  17. data/lib/solargraph/convention/data_definition.rb +105 -105
  18. data/lib/solargraph/convention/gemfile.rb +15 -15
  19. data/lib/solargraph/convention/gemspec.rb +23 -23
  20. data/lib/solargraph/convention/rakefile.rb +17 -17
  21. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
  22. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
  23. data/lib/solargraph/convention/struct_definition.rb +164 -164
  24. data/lib/solargraph/convention.rb +78 -78
  25. data/lib/solargraph/converters/dd.rb +17 -17
  26. data/lib/solargraph/converters/dl.rb +15 -15
  27. data/lib/solargraph/converters/dt.rb +15 -15
  28. data/lib/solargraph/converters/misc.rb +1 -1
  29. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  30. data/lib/solargraph/diagnostics/rubocop.rb +118 -118
  31. data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -68
  32. data/lib/solargraph/diagnostics/type_check.rb +55 -55
  33. data/lib/solargraph/diagnostics/update_errors.rb +41 -41
  34. data/lib/solargraph/doc_map.rb +439 -439
  35. data/lib/solargraph/equality.rb +34 -34
  36. data/lib/solargraph/gem_pins.rb +98 -98
  37. data/lib/solargraph/language_server/error_codes.rb +20 -20
  38. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  39. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  40. data/lib/solargraph/language_server/host/message_worker.rb +112 -112
  41. data/lib/solargraph/language_server/host/sources.rb +99 -99
  42. data/lib/solargraph/language_server/host.rb +878 -878
  43. data/lib/solargraph/language_server/message/base.rb +97 -97
  44. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
  45. data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -60
  46. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
  47. data/lib/solargraph/language_server/message/extended/document.rb +23 -23
  48. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  49. data/lib/solargraph/language_server/message/extended/download_core.rb +19 -19
  50. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  51. data/lib/solargraph/language_server/message/initialize.rb +191 -191
  52. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
  53. data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
  54. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
  55. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
  56. data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -148
  57. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  58. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
  59. data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
  60. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
  61. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
  62. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
  63. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -35
  64. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -40
  65. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +26 -26
  66. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  67. data/lib/solargraph/language_server/message.rb +94 -94
  68. data/lib/solargraph/language_server/request.rb +27 -27
  69. data/lib/solargraph/language_server/transport/data_reader.rb +74 -74
  70. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  71. data/lib/solargraph/library.rb +683 -683
  72. data/lib/solargraph/location.rb +82 -82
  73. data/lib/solargraph/logging.rb +37 -37
  74. data/lib/solargraph/page.rb +92 -92
  75. data/lib/solargraph/parser/comment_ripper.rb +69 -69
  76. data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
  77. data/lib/solargraph/parser/node_processor/base.rb +92 -92
  78. data/lib/solargraph/parser/node_processor.rb +62 -62
  79. data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -149
  80. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  81. data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
  82. data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -486
  83. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  84. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
  85. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
  86. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
  87. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
  88. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +37 -37
  89. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
  90. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
  91. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
  92. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
  93. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  94. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  95. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
  96. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -52
  97. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -291
  98. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  99. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
  100. data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
  101. data/lib/solargraph/parser/parser_gem.rb +12 -12
  102. data/lib/solargraph/parser/region.rb +69 -69
  103. data/lib/solargraph/parser/snippet.rb +17 -17
  104. data/lib/solargraph/parser.rb +23 -23
  105. data/lib/solargraph/pin/base.rb +729 -729
  106. data/lib/solargraph/pin/base_variable.rb +126 -126
  107. data/lib/solargraph/pin/block.rb +104 -104
  108. data/lib/solargraph/pin/breakable.rb +9 -9
  109. data/lib/solargraph/pin/callable.rb +231 -231
  110. data/lib/solargraph/pin/closure.rb +72 -72
  111. data/lib/solargraph/pin/common.rb +79 -79
  112. data/lib/solargraph/pin/constant.rb +45 -45
  113. data/lib/solargraph/pin/conversions.rb +123 -123
  114. data/lib/solargraph/pin/delegated_method.rb +120 -120
  115. data/lib/solargraph/pin/documenting.rb +114 -114
  116. data/lib/solargraph/pin/instance_variable.rb +34 -34
  117. data/lib/solargraph/pin/keyword.rb +20 -20
  118. data/lib/solargraph/pin/local_variable.rb +75 -75
  119. data/lib/solargraph/pin/method.rb +672 -672
  120. data/lib/solargraph/pin/method_alias.rb +34 -34
  121. data/lib/solargraph/pin/namespace.rb +115 -115
  122. data/lib/solargraph/pin/parameter.rb +275 -275
  123. data/lib/solargraph/pin/proxy_type.rb +39 -39
  124. data/lib/solargraph/pin/reference/override.rb +47 -47
  125. data/lib/solargraph/pin/reference/superclass.rb +15 -15
  126. data/lib/solargraph/pin/reference.rb +39 -39
  127. data/lib/solargraph/pin/search.rb +61 -61
  128. data/lib/solargraph/pin/signature.rb +61 -61
  129. data/lib/solargraph/pin/symbol.rb +53 -53
  130. data/lib/solargraph/pin/until.rb +18 -18
  131. data/lib/solargraph/pin/while.rb +18 -18
  132. data/lib/solargraph/pin.rb +44 -44
  133. data/lib/solargraph/pin_cache.rb +245 -245
  134. data/lib/solargraph/position.rb +132 -119
  135. data/lib/solargraph/range.rb +112 -112
  136. data/lib/solargraph/rbs_map/conversions.rb +823 -823
  137. data/lib/solargraph/rbs_map/core_fills.rb +84 -84
  138. data/lib/solargraph/rbs_map/core_map.rb +58 -58
  139. data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
  140. data/lib/solargraph/rbs_map.rb +163 -163
  141. data/lib/solargraph/server_methods.rb +16 -16
  142. data/lib/solargraph/shell.rb +363 -352
  143. data/lib/solargraph/source/chain/array.rb +37 -37
  144. data/lib/solargraph/source/chain/call.rb +337 -337
  145. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  146. data/lib/solargraph/source/chain/constant.rb +26 -26
  147. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  148. data/lib/solargraph/source/chain/hash.rb +34 -34
  149. data/lib/solargraph/source/chain/if.rb +28 -28
  150. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  151. data/lib/solargraph/source/chain/link.rb +109 -109
  152. data/lib/solargraph/source/chain/literal.rb +48 -48
  153. data/lib/solargraph/source/chain/or.rb +23 -23
  154. data/lib/solargraph/source/chain/q_call.rb +11 -11
  155. data/lib/solargraph/source/chain/variable.rb +13 -13
  156. data/lib/solargraph/source/chain/z_super.rb +30 -30
  157. data/lib/solargraph/source/chain.rb +291 -291
  158. data/lib/solargraph/source/change.rb +82 -82
  159. data/lib/solargraph/source/cursor.rb +166 -166
  160. data/lib/solargraph/source/source_chainer.rb +194 -194
  161. data/lib/solargraph/source/updater.rb +55 -55
  162. data/lib/solargraph/source.rb +498 -498
  163. data/lib/solargraph/source_map/clip.rb +226 -226
  164. data/lib/solargraph/source_map/data.rb +34 -34
  165. data/lib/solargraph/source_map/mapper.rb +259 -259
  166. data/lib/solargraph/source_map.rb +212 -212
  167. data/lib/solargraph/type_checker/checks.rb +124 -124
  168. data/lib/solargraph/type_checker/param_def.rb +37 -37
  169. data/lib/solargraph/type_checker/problem.rb +32 -32
  170. data/lib/solargraph/type_checker/rules.rb +84 -84
  171. data/lib/solargraph/type_checker.rb +814 -814
  172. data/lib/solargraph/version.rb +1 -1
  173. data/lib/solargraph/workspace/config.rb +255 -255
  174. data/lib/solargraph/workspace/require_paths.rb +97 -97
  175. data/lib/solargraph/workspace.rb +220 -220
  176. data/lib/solargraph/yard_map/helpers.rb +44 -44
  177. data/lib/solargraph/yard_map/mapper/to_method.rb +130 -130
  178. data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -31
  179. data/lib/solargraph/yard_map/mapper.rb +79 -79
  180. data/lib/solargraph/yard_map/to_method.rb +89 -89
  181. data/lib/solargraph/yard_tags.rb +20 -20
  182. data/lib/solargraph/yardoc.rb +87 -87
  183. data/lib/solargraph.rb +105 -105
  184. data/rbs_collection.yaml +1 -1
  185. metadata +12 -12
  186. /data/{sig → rbs}/shims/ast/0/node.rbs +0 -0
  187. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  188. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  189. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  190. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  191. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  192. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  193. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  194. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  195. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,22 +1,22 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class AndNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- process_children
12
-
13
- position = get_node_start_position(node)
14
- # @sg-ignore https://github.com/castwide/solargraph/pull/1114
15
- enclosing_breakable_pin = pins.select{|pin| pin.is_a?(Pin::Breakable) && pin.location.range.contain?(position)}.last
16
- FlowSensitiveTyping.new(locals, enclosing_breakable_pin).process_and(node)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class AndNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ process_children
12
+
13
+ position = get_node_start_position(node)
14
+ # @sg-ignore https://github.com/castwide/solargraph/pull/1114
15
+ enclosing_breakable_pin = pins.select{|pin| pin.is_a?(Pin::Breakable) && pin.location.range.contain?(position)}.last
16
+ FlowSensitiveTyping.new(locals, enclosing_breakable_pin).process_and(node)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,59 +1,59 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class ArgsNode < Parser::NodeProcessor::Base
8
- def process
9
- callable = region.closure
10
- if callable.is_a? Pin::Callable
11
- if node.type == :forward_args
12
- forward(callable)
13
- else
14
- node.children.each do |u|
15
- loc = get_node_location(u)
16
- locals.push Solargraph::Pin::Parameter.new(
17
- location: loc,
18
- closure: callable,
19
- comments: comments_for(node),
20
- name: u.children[0].to_s,
21
- assignment: u.children[1],
22
- asgn_code: u.children[1] ? region.code_for(u.children[1]) : nil,
23
- presence: callable.location.range,
24
- decl: get_decl(u),
25
- source: :parser
26
- )
27
- callable.parameters.push locals.last
28
- end
29
- end
30
- end
31
- process_children
32
- end
33
-
34
- private
35
-
36
- # @param callable [Pin::Callable]
37
- # @return [void]
38
- def forward(callable)
39
- loc = get_node_location(node)
40
- locals.push Solargraph::Pin::Parameter.new(
41
- location: loc,
42
- closure: callable,
43
- presence: region.closure.location.range,
44
- decl: get_decl(node),
45
- source: :parser
46
- )
47
- callable.parameters.push locals.last
48
- end
49
-
50
- # @param node [AST::Node]
51
- # @return [Symbol]
52
- def get_decl node
53
- node.type
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class ArgsNode < Parser::NodeProcessor::Base
8
+ def process
9
+ callable = region.closure
10
+ if callable.is_a? Pin::Callable
11
+ if node.type == :forward_args
12
+ forward(callable)
13
+ else
14
+ node.children.each do |u|
15
+ loc = get_node_location(u)
16
+ locals.push Solargraph::Pin::Parameter.new(
17
+ location: loc,
18
+ closure: callable,
19
+ comments: comments_for(node),
20
+ name: u.children[0].to_s,
21
+ assignment: u.children[1],
22
+ asgn_code: u.children[1] ? region.code_for(u.children[1]) : nil,
23
+ presence: callable.location.range,
24
+ decl: get_decl(u),
25
+ source: :parser
26
+ )
27
+ callable.parameters.push locals.last
28
+ end
29
+ end
30
+ end
31
+ process_children
32
+ end
33
+
34
+ private
35
+
36
+ # @param callable [Pin::Callable]
37
+ # @return [void]
38
+ def forward(callable)
39
+ loc = get_node_location(node)
40
+ locals.push Solargraph::Pin::Parameter.new(
41
+ location: loc,
42
+ closure: callable,
43
+ presence: region.closure.location.range,
44
+ decl: get_decl(node),
45
+ source: :parser
46
+ )
47
+ callable.parameters.push locals.last
48
+ end
49
+
50
+ # @param node [AST::Node]
51
+ # @return [Symbol]
52
+ def get_decl node
53
+ node.type
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,15 +1,15 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class BeginNode < Parser::NodeProcessor::Base
8
- def process
9
- process_children
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class BeginNode < Parser::NodeProcessor::Base
8
+ def process
9
+ process_children
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,46 +1,46 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class BlockNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- location = get_node_location(node)
12
- parent = if other_class_eval?
13
- Solargraph::Pin::Namespace.new(
14
- location: location,
15
- type: :class,
16
- name: unpack_name(node.children[0].children[0]),
17
- source: :parser,
18
- )
19
- else
20
- region.closure
21
- end
22
- block_pin = Solargraph::Pin::Block.new(
23
- location: location,
24
- closure: parent,
25
- node: node,
26
- receiver: node.children[0],
27
- comments: comments_for(node),
28
- scope: region.scope || region.closure.context.scope,
29
- source: :parser
30
- )
31
- pins.push block_pin
32
- process_children region.update(closure: block_pin)
33
- end
34
-
35
- private
36
-
37
- def other_class_eval?
38
- node.children[0].type == :send &&
39
- node.children[0].children[1] == :class_eval &&
40
- [:cbase, :const].include?(node.children[0].children[0]&.type)
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class BlockNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ location = get_node_location(node)
12
+ parent = if other_class_eval?
13
+ Solargraph::Pin::Namespace.new(
14
+ location: location,
15
+ type: :class,
16
+ name: unpack_name(node.children[0].children[0]),
17
+ source: :parser,
18
+ )
19
+ else
20
+ region.closure
21
+ end
22
+ block_pin = Solargraph::Pin::Block.new(
23
+ location: location,
24
+ closure: parent,
25
+ node: node,
26
+ receiver: node.children[0],
27
+ comments: comments_for(node),
28
+ scope: region.scope || region.closure.context.scope,
29
+ source: :parser
30
+ )
31
+ pins.push block_pin
32
+ process_children region.update(closure: block_pin)
33
+ end
34
+
35
+ private
36
+
37
+ def other_class_eval?
38
+ node.children[0].type == :send &&
39
+ node.children[0].children[1] == :class_eval &&
40
+ [:cbase, :const].include?(node.children[0].children[0]&.type)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,53 +1,53 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class DefNode < Parser::NodeProcessor::Base
8
- def process
9
- name = node.children[0].to_s
10
- scope = region.scope || (region.closure.is_a?(Pin::Singleton) ? :class : :instance)
11
- methpin = Solargraph::Pin::Method.new(
12
- location: get_node_location(node),
13
- closure: region.closure,
14
- name: name,
15
- comments: comments_for(node),
16
- scope: scope,
17
- visibility: scope == :instance && name == 'initialize' ? :private : region.visibility,
18
- node: node,
19
- source: :parser,
20
- )
21
- if region.visibility == :module_function
22
- pins.push Solargraph::Pin::Method.new(
23
- location: methpin.location,
24
- closure: methpin.closure,
25
- name: methpin.name,
26
- comments: methpin.comments,
27
- scope: :class,
28
- visibility: :public,
29
- parameters: methpin.parameters,
30
- node: methpin.node,
31
- source: :parser,
32
- )
33
- pins.push Solargraph::Pin::Method.new(
34
- location: methpin.location,
35
- closure: methpin.closure,
36
- name: methpin.name,
37
- comments: methpin.comments,
38
- scope: :instance,
39
- visibility: :private,
40
- parameters: methpin.parameters,
41
- node: methpin.node,
42
- source: :parser,
43
- )
44
- else
45
- pins.push methpin
46
- end
47
- process_children region.update(closure: methpin, scope: methpin.scope)
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class DefNode < Parser::NodeProcessor::Base
8
+ def process
9
+ name = node.children[0].to_s
10
+ scope = region.scope || (region.closure.is_a?(Pin::Singleton) ? :class : :instance)
11
+ methpin = Solargraph::Pin::Method.new(
12
+ location: get_node_location(node),
13
+ closure: region.closure,
14
+ name: name,
15
+ comments: comments_for(node),
16
+ scope: scope,
17
+ visibility: scope == :instance && name == 'initialize' ? :private : region.visibility,
18
+ node: node,
19
+ source: :parser,
20
+ )
21
+ if region.visibility == :module_function
22
+ pins.push Solargraph::Pin::Method.new(
23
+ location: methpin.location,
24
+ closure: methpin.closure,
25
+ name: methpin.name,
26
+ comments: methpin.comments,
27
+ scope: :class,
28
+ visibility: :public,
29
+ parameters: methpin.parameters,
30
+ node: methpin.node,
31
+ source: :parser,
32
+ )
33
+ pins.push Solargraph::Pin::Method.new(
34
+ location: methpin.location,
35
+ closure: methpin.closure,
36
+ name: methpin.name,
37
+ comments: methpin.comments,
38
+ scope: :instance,
39
+ visibility: :private,
40
+ parameters: methpin.parameters,
41
+ node: methpin.node,
42
+ source: :parser,
43
+ )
44
+ else
45
+ pins.push methpin
46
+ end
47
+ process_children region.update(closure: methpin, scope: methpin.scope)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,37 +1,37 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class DefsNode < DefNode
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- s_visi = region.visibility
12
- s_visi = :public if s_visi == :module_function || region.scope != :class
13
- loc = get_node_location(node)
14
- if node.children[0].is_a?(AST::Node) && node.children[0].type == :self
15
- closure = region.closure
16
- else
17
- closure = Solargraph::Pin::Namespace.new(
18
- name: unpack_name(node.children[0])
19
- )
20
- end
21
- pins.push Solargraph::Pin::Method.new(
22
- location: loc,
23
- closure: closure,
24
- name: node.children[1].to_s,
25
- comments: comments_for(node),
26
- scope: :class,
27
- visibility: s_visi,
28
- node: node,
29
- source: :parser,
30
- )
31
- process_children region.update(closure: pins.last, scope: :class)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class DefsNode < DefNode
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ s_visi = region.visibility
12
+ s_visi = :public if s_visi == :module_function || region.scope != :class
13
+ loc = get_node_location(node)
14
+ if node.children[0].is_a?(AST::Node) && node.children[0].type == :self
15
+ closure = region.closure
16
+ else
17
+ closure = Solargraph::Pin::Namespace.new(
18
+ name: unpack_name(node.children[0])
19
+ )
20
+ end
21
+ pins.push Solargraph::Pin::Method.new(
22
+ location: loc,
23
+ closure: closure,
24
+ name: node.children[1].to_s,
25
+ comments: comments_for(node),
26
+ scope: :class,
27
+ visibility: s_visi,
28
+ node: node,
29
+ source: :parser,
30
+ )
31
+ process_children region.update(closure: pins.last, scope: :class)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,23 +1,23 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class IfNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- process_children
12
-
13
- position = get_node_start_position(node)
14
- # @sg-ignore
15
- # @type [Solargraph::Pin::Breakable, nil]
16
- enclosing_breakable_pin = pins.select{|pin| pin.is_a?(Pin::Breakable) && pin.location.range.contain?(position)}.last
17
- FlowSensitiveTyping.new(locals, enclosing_breakable_pin).process_if(node)
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class IfNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ process_children
12
+
13
+ position = get_node_start_position(node)
14
+ # @sg-ignore
15
+ # @type [Solargraph::Pin::Breakable, nil]
16
+ enclosing_breakable_pin = pins.select{|pin| pin.is_a?(Pin::Breakable) && pin.location.range.contain?(position)}.last
17
+ FlowSensitiveTyping.new(locals, enclosing_breakable_pin).process_if(node)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,40 +1,40 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class IvasgnNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- loc = get_node_location(node)
12
- pins.push Solargraph::Pin::InstanceVariable.new(
13
- location: loc,
14
- closure: region.closure,
15
- name: node.children[0].to_s,
16
- comments: comments_for(node),
17
- assignment: node.children[1],
18
- source: :parser
19
- )
20
- if region.visibility == :module_function
21
- here = get_node_start_position(node)
22
- named_path = named_path_pin(here)
23
- if named_path.is_a?(Pin::Method)
24
- pins.push Solargraph::Pin::InstanceVariable.new(
25
- location: loc,
26
- closure: Pin::Namespace.new(type: :module, closure: region.closure.closure, name: region.closure.name),
27
- name: node.children[0].to_s,
28
- comments: comments_for(node),
29
- assignment: node.children[1],
30
- source: :parser
31
- )
32
- end
33
- end
34
- process_children
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class IvasgnNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ loc = get_node_location(node)
12
+ pins.push Solargraph::Pin::InstanceVariable.new(
13
+ location: loc,
14
+ closure: region.closure,
15
+ name: node.children[0].to_s,
16
+ comments: comments_for(node),
17
+ assignment: node.children[1],
18
+ source: :parser
19
+ )
20
+ if region.visibility == :module_function
21
+ here = get_node_start_position(node)
22
+ named_path = named_path_pin(here)
23
+ if named_path.is_a?(Pin::Method)
24
+ pins.push Solargraph::Pin::InstanceVariable.new(
25
+ location: loc,
26
+ closure: Pin::Namespace.new(type: :module, closure: region.closure.closure, name: region.closure.name),
27
+ name: node.children[0].to_s,
28
+ comments: comments_for(node),
29
+ assignment: node.children[1],
30
+ source: :parser
31
+ )
32
+ end
33
+ end
34
+ process_children
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,29 +1,29 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class LvasgnNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- here = get_node_start_position(node)
12
- presence = Range.new(here, region.closure.location.range.ending)
13
- loc = get_node_location(node)
14
- locals.push Solargraph::Pin::LocalVariable.new(
15
- location: loc,
16
- closure: region.closure,
17
- name: node.children[0].to_s,
18
- assignment: node.children[1],
19
- comments: comments_for(node),
20
- presence: presence,
21
- source: :parser
22
- )
23
- process_children
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class LvasgnNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ here = get_node_start_position(node)
12
+ presence = Range.new(here, region.closure.location.range.ending)
13
+ loc = get_node_location(node)
14
+ locals.push Solargraph::Pin::LocalVariable.new(
15
+ location: loc,
16
+ closure: region.closure,
17
+ name: node.children[0].to_s,
18
+ assignment: node.children[1],
19
+ comments: comments_for(node),
20
+ presence: presence,
21
+ source: :parser
22
+ )
23
+ process_children
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end