solargraph 0.58.0 → 0.59.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.gitattributes +2 -0
  4. data/.github/workflows/linting.yml +6 -5
  5. data/.github/workflows/plugins.yml +48 -35
  6. data/.github/workflows/rspec.yml +15 -28
  7. data/.github/workflows/typecheck.yml +3 -2
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +38 -6
  10. data/.rubocop_todo.yml +53 -966
  11. data/CHANGELOG.md +24 -0
  12. data/Gemfile +3 -1
  13. data/README.md +3 -3
  14. data/Rakefile +26 -23
  15. data/bin/solargraph +9 -8
  16. data/lib/solargraph/api_map/cache.rb +110 -110
  17. data/lib/solargraph/api_map/constants.rb +288 -279
  18. data/lib/solargraph/api_map/index.rb +204 -193
  19. data/lib/solargraph/api_map/source_to_yard.rb +110 -97
  20. data/lib/solargraph/api_map/store.rb +395 -384
  21. data/lib/solargraph/api_map.rb +1029 -945
  22. data/lib/solargraph/bench.rb +44 -45
  23. data/lib/solargraph/complex_type/conformance.rb +176 -0
  24. data/lib/solargraph/complex_type/type_methods.rb +240 -228
  25. data/lib/solargraph/complex_type/unique_type.rb +641 -482
  26. data/lib/solargraph/complex_type.rb +557 -444
  27. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  28. data/lib/solargraph/convention/data_definition/data_definition_node.rb +93 -91
  29. data/lib/solargraph/convention/data_definition.rb +108 -105
  30. data/lib/solargraph/convention/gemfile.rb +15 -15
  31. data/lib/solargraph/convention/gemspec.rb +23 -23
  32. data/lib/solargraph/convention/rakefile.rb +17 -17
  33. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +62 -61
  34. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +103 -102
  35. data/lib/solargraph/convention/struct_definition.rb +168 -164
  36. data/lib/solargraph/convention.rb +78 -78
  37. data/lib/solargraph/converters/dd.rb +19 -17
  38. data/lib/solargraph/converters/dl.rb +17 -15
  39. data/lib/solargraph/converters/dt.rb +17 -15
  40. data/lib/solargraph/converters/misc.rb +3 -1
  41. data/lib/solargraph/diagnostics/require_not_found.rb +54 -53
  42. data/lib/solargraph/diagnostics/rubocop.rb +119 -118
  43. data/lib/solargraph/diagnostics/rubocop_helpers.rb +70 -68
  44. data/lib/solargraph/diagnostics/type_check.rb +56 -55
  45. data/lib/solargraph/diagnostics/update_errors.rb +37 -41
  46. data/lib/solargraph/doc_map.rb +438 -439
  47. data/lib/solargraph/equality.rb +34 -34
  48. data/lib/solargraph/gem_pins.rb +98 -98
  49. data/lib/solargraph/language_server/error_codes.rb +20 -20
  50. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  51. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  52. data/lib/solargraph/language_server/host/message_worker.rb +113 -112
  53. data/lib/solargraph/language_server/host/sources.rb +100 -99
  54. data/lib/solargraph/language_server/host.rb +886 -878
  55. data/lib/solargraph/language_server/message/base.rb +97 -97
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
  57. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
  58. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +108 -114
  59. data/lib/solargraph/language_server/message/extended/document.rb +24 -23
  60. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  61. data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
  62. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  63. data/lib/solargraph/language_server/message/initialize.rb +197 -191
  64. data/lib/solargraph/language_server/message/text_document/completion.rb +58 -56
  65. data/lib/solargraph/language_server/message/text_document/definition.rb +49 -40
  66. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
  67. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +36 -26
  68. data/lib/solargraph/language_server/message/text_document/formatting.rb +150 -148
  69. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  70. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
  71. data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
  72. data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
  73. data/lib/solargraph/language_server/message/text_document/signature_help.rb +25 -24
  74. data/lib/solargraph/language_server/message/text_document/type_definition.rb +33 -25
  75. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
  76. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
  77. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
  78. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +33 -23
  79. data/lib/solargraph/language_server/message.rb +94 -94
  80. data/lib/solargraph/language_server/request.rb +29 -27
  81. data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
  82. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  83. data/lib/solargraph/library.rb +702 -683
  84. data/lib/solargraph/location.rb +85 -82
  85. data/lib/solargraph/logging.rb +55 -37
  86. data/lib/solargraph/page.rb +92 -92
  87. data/lib/solargraph/parser/comment_ripper.rb +84 -69
  88. data/lib/solargraph/parser/flow_sensitive_typing.rb +471 -255
  89. data/lib/solargraph/parser/node_processor/base.rb +122 -92
  90. data/lib/solargraph/parser/node_processor.rb +63 -62
  91. data/lib/solargraph/parser/parser_gem/class_methods.rb +165 -149
  92. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  93. data/lib/solargraph/parser/parser_gem/node_chainer.rb +191 -166
  94. data/lib/solargraph/parser/parser_gem/node_methods.rb +507 -486
  95. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  96. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +61 -59
  97. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +24 -15
  98. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +45 -46
  99. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +60 -53
  100. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
  101. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +53 -23
  102. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +42 -40
  103. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +30 -29
  104. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +61 -59
  105. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  106. data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
  107. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  108. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +39 -38
  109. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +51 -52
  110. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +302 -291
  111. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  112. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
  113. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +33 -29
  114. data/lib/solargraph/parser/parser_gem/node_processors.rb +74 -70
  115. data/lib/solargraph/parser/parser_gem.rb +14 -12
  116. data/lib/solargraph/parser/region.rb +75 -69
  117. data/lib/solargraph/parser/snippet.rb +19 -17
  118. data/lib/solargraph/parser.rb +25 -23
  119. data/lib/solargraph/pin/base.rb +773 -729
  120. data/lib/solargraph/pin/base_variable.rb +375 -126
  121. data/lib/solargraph/pin/block.rb +127 -104
  122. data/lib/solargraph/pin/breakable.rb +15 -9
  123. data/lib/solargraph/pin/callable.rb +275 -231
  124. data/lib/solargraph/pin/closure.rb +69 -72
  125. data/lib/solargraph/pin/common.rb +97 -79
  126. data/lib/solargraph/pin/compound_statement.rb +55 -0
  127. data/lib/solargraph/pin/constant.rb +43 -45
  128. data/lib/solargraph/pin/conversions.rb +129 -123
  129. data/lib/solargraph/pin/delegated_method.rb +131 -120
  130. data/lib/solargraph/pin/documenting.rb +116 -114
  131. data/lib/solargraph/pin/instance_variable.rb +38 -34
  132. data/lib/solargraph/pin/keyword.rb +16 -20
  133. data/lib/solargraph/pin/local_variable.rb +31 -75
  134. data/lib/solargraph/pin/method.rb +724 -672
  135. data/lib/solargraph/pin/method_alias.rb +42 -34
  136. data/lib/solargraph/pin/namespace.rb +122 -115
  137. data/lib/solargraph/pin/parameter.rb +339 -275
  138. data/lib/solargraph/pin/proxy_type.rb +42 -39
  139. data/lib/solargraph/pin/reference/override.rb +47 -47
  140. data/lib/solargraph/pin/reference/superclass.rb +17 -15
  141. data/lib/solargraph/pin/reference/type_alias.rb +16 -0
  142. data/lib/solargraph/pin/reference.rb +59 -39
  143. data/lib/solargraph/pin/search.rb +62 -61
  144. data/lib/solargraph/pin/signature.rb +64 -61
  145. data/lib/solargraph/pin/symbol.rb +54 -53
  146. data/lib/solargraph/pin/until.rb +16 -18
  147. data/lib/solargraph/pin/while.rb +16 -18
  148. data/lib/solargraph/pin.rb +46 -44
  149. data/lib/solargraph/pin_cache.rb +248 -245
  150. data/lib/solargraph/position.rb +139 -119
  151. data/lib/solargraph/range.rb +113 -112
  152. data/lib/solargraph/rbs_map/conversions.rb +952 -823
  153. data/lib/solargraph/rbs_map/core_fills.rb +91 -84
  154. data/lib/solargraph/rbs_map/core_map.rb +65 -58
  155. data/lib/solargraph/rbs_map/stdlib_map.rb +71 -43
  156. data/lib/solargraph/rbs_map.rb +207 -163
  157. data/lib/solargraph/server_methods.rb +16 -16
  158. data/lib/solargraph/shell.rb +555 -352
  159. data/lib/solargraph/source/chain/array.rb +39 -37
  160. data/lib/solargraph/source/chain/call.rb +377 -337
  161. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  162. data/lib/solargraph/source/chain/constant.rb +30 -26
  163. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  164. data/lib/solargraph/source/chain/hash.rb +37 -34
  165. data/lib/solargraph/source/chain/if.rb +30 -28
  166. data/lib/solargraph/source/chain/instance_variable.rb +36 -13
  167. data/lib/solargraph/source/chain/link.rb +99 -109
  168. data/lib/solargraph/source/chain/literal.rb +51 -48
  169. data/lib/solargraph/source/chain/or.rb +29 -23
  170. data/lib/solargraph/source/chain/q_call.rb +13 -11
  171. data/lib/solargraph/source/chain/variable.rb +15 -13
  172. data/lib/solargraph/source/chain/z_super.rb +28 -30
  173. data/lib/solargraph/source/chain.rb +304 -291
  174. data/lib/solargraph/source/change.rb +89 -82
  175. data/lib/solargraph/source/cursor.rb +172 -166
  176. data/lib/solargraph/source/encoding_fixes.rb +22 -23
  177. data/lib/solargraph/source/source_chainer.rb +218 -194
  178. data/lib/solargraph/source/updater.rb +59 -55
  179. data/lib/solargraph/source.rb +522 -498
  180. data/lib/solargraph/source_map/clip.rb +245 -226
  181. data/lib/solargraph/source_map/data.rb +37 -34
  182. data/lib/solargraph/source_map/mapper.rb +286 -259
  183. data/lib/solargraph/source_map.rb +224 -212
  184. data/lib/solargraph/type_checker/problem.rb +34 -32
  185. data/lib/solargraph/type_checker/rules.rb +157 -84
  186. data/lib/solargraph/type_checker.rb +888 -814
  187. data/lib/solargraph/version.rb +5 -5
  188. data/lib/solargraph/workspace/config.rb +258 -255
  189. data/lib/solargraph/workspace/gemspecs.rb +367 -0
  190. data/lib/solargraph/workspace/require_paths.rb +98 -97
  191. data/lib/solargraph/workspace.rb +242 -220
  192. data/lib/solargraph/yard_map/helpers.rb +49 -44
  193. data/lib/solargraph/yard_map/mapper/to_method.rb +136 -130
  194. data/lib/solargraph/yard_map/mapper/to_namespace.rb +32 -31
  195. data/lib/solargraph/yard_map/mapper.rb +84 -79
  196. data/lib/solargraph/yard_map.rb +17 -18
  197. data/lib/solargraph/yard_tags.rb +20 -20
  198. data/lib/solargraph/yardoc.rb +90 -87
  199. data/lib/solargraph.rb +128 -105
  200. data/rbs/fills/rubygems/0/dependency.rbs +193 -0
  201. data/rbs/fills/tuple/tuple.rbs +28 -0
  202. data/rbs/shims/ast/0/node.rbs +5 -0
  203. data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
  204. data/rbs_collection.yaml +1 -1
  205. data/solargraph.gemspec +37 -35
  206. metadata +52 -51
  207. data/lib/solargraph/type_checker/checks.rb +0 -124
  208. data/lib/solargraph/type_checker/param_def.rb +0 -37
  209. data/lib/solargraph/yard_map/to_method.rb +0 -89
  210. data/sig/shims/ast/0/node.rbs +0 -5
  211. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  212. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  213. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  214. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  215. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  216. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  217. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  218. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  219. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,29 +1,29 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class UntilNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- location = get_node_location(node)
12
- # Note - this should not be considered a block, as the
13
- # until statement doesn't create a closure - e.g.,
14
- # variables created inside can be seen from outside as
15
- # well
16
- pins.push Solargraph::Pin::Until.new(
17
- location: location,
18
- closure: region.closure,
19
- node: node,
20
- comments: comments_for(node),
21
- source: :parser,
22
- )
23
- process_children region
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 UntilNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ location = get_node_location(node)
12
+ # Note - this should not be considered a block, as the
13
+ # until statement doesn't create a closure - e.g.,
14
+ # variables created inside can be seen from outside as
15
+ # well
16
+ pins.push Solargraph::Pin::Until.new(
17
+ location: location,
18
+ closure: region.closure,
19
+ node: node,
20
+ comments: comments_for(node),
21
+ source: :parser
22
+ )
23
+ process_children region
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ module NodeProcessors
7
+ class WhenNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ pins.push Solargraph::Pin::CompoundStatement.new(
12
+ location: get_node_location(node),
13
+ closure: region.closure,
14
+ node: node,
15
+ source: :parser
16
+ )
17
+ process_children
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,29 +1,33 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- module ParserGem
6
- module NodeProcessors
7
- class WhileNode < Parser::NodeProcessor::Base
8
- include ParserGem::NodeMethods
9
-
10
- def process
11
- location = get_node_location(node)
12
- # Note - this should not be considered a block, as the
13
- # while statement doesn't create a closure - e.g.,
14
- # variables created inside can be seen from outside as
15
- # well
16
- pins.push Solargraph::Pin::While.new(
17
- location: location,
18
- closure: region.closure,
19
- node: node,
20
- comments: comments_for(node),
21
- source: :parser,
22
- )
23
- process_children region
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 WhileNode < Parser::NodeProcessor::Base
8
+ include ParserGem::NodeMethods
9
+
10
+ def process
11
+ FlowSensitiveTyping.new(locals,
12
+ ivars,
13
+ enclosing_breakable_pin,
14
+ enclosing_compound_statement_pin).process_while(node)
15
+
16
+ # Note - this should not be considered a block, as the
17
+ # while statement doesn't create a closure - e.g.,
18
+ # variables created inside can be seen from outside as
19
+ # well
20
+ pins.push Solargraph::Pin::While.new(
21
+ location: location,
22
+ closure: region.closure,
23
+ node: node,
24
+ comments: comments_for(node),
25
+ source: :parser
26
+ )
27
+ process_children region
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,70 +1,74 @@
1
- # frozen_string_literal: true
2
-
3
- require 'solargraph/parser/node_processor'
4
-
5
- module Solargraph
6
- module Parser
7
- module ParserGem
8
- module NodeProcessors
9
- autoload :BeginNode, 'solargraph/parser/parser_gem/node_processors/begin_node'
10
- autoload :DefNode, 'solargraph/parser/parser_gem/node_processors/def_node'
11
- autoload :DefsNode, 'solargraph/parser/parser_gem/node_processors/defs_node'
12
- autoload :SendNode, 'solargraph/parser/parser_gem/node_processors/send_node'
13
- autoload :NamespaceNode, 'solargraph/parser/parser_gem/node_processors/namespace_node'
14
- autoload :SclassNode, 'solargraph/parser/parser_gem/node_processors/sclass_node'
15
- autoload :IvasgnNode, 'solargraph/parser/parser_gem/node_processors/ivasgn_node'
16
- autoload :IfNode, 'solargraph/parser/parser_gem/node_processors/if_node'
17
- autoload :CvasgnNode, 'solargraph/parser/parser_gem/node_processors/cvasgn_node'
18
- autoload :LvasgnNode, 'solargraph/parser/parser_gem/node_processors/lvasgn_node'
19
- autoload :GvasgnNode, 'solargraph/parser/parser_gem/node_processors/gvasgn_node'
20
- autoload :CasgnNode, 'solargraph/parser/parser_gem/node_processors/casgn_node'
21
- autoload :MasgnNode, 'solargraph/parser/parser_gem/node_processors/masgn_node'
22
- autoload :AliasNode, 'solargraph/parser/parser_gem/node_processors/alias_node'
23
- autoload :ArgsNode, 'solargraph/parser/parser_gem/node_processors/args_node'
24
- autoload :BlockNode, 'solargraph/parser/parser_gem/node_processors/block_node'
25
- autoload :OrasgnNode, 'solargraph/parser/parser_gem/node_processors/orasgn_node'
26
- autoload :OpasgnNode, 'solargraph/parser/parser_gem/node_processors/opasgn_node'
27
- autoload :SymNode, 'solargraph/parser/parser_gem/node_processors/sym_node'
28
- autoload :ResbodyNode, 'solargraph/parser/parser_gem/node_processors/resbody_node'
29
- autoload :UntilNode, 'solargraph/parser/parser_gem/node_processors/until_node'
30
- autoload :WhileNode, 'solargraph/parser/parser_gem/node_processors/while_node'
31
- autoload :AndNode, 'solargraph/parser/parser_gem/node_processors/and_node'
32
- end
33
- end
34
-
35
- module NodeProcessor
36
- register :source, ParserGem::NodeProcessors::BeginNode
37
- register :begin, ParserGem::NodeProcessors::BeginNode
38
- register :kwbegin, ParserGem::NodeProcessors::BeginNode
39
- register :rescue, ParserGem::NodeProcessors::BeginNode
40
- register :resbody, ParserGem::NodeProcessors::ResbodyNode
41
- register :def, ParserGem::NodeProcessors::DefNode
42
- register :defs, ParserGem::NodeProcessors::DefsNode
43
- register :if, ParserGem::NodeProcessors::IfNode
44
- register :send, ParserGem::NodeProcessors::SendNode
45
- register :class, Convention::StructDefinition::NodeProcessors::StructNode
46
- register :class, Convention::DataDefinition::NodeProcessors::DataNode
47
- register :class, ParserGem::NodeProcessors::NamespaceNode
48
- register :module, ParserGem::NodeProcessors::NamespaceNode
49
- register :sclass, ParserGem::NodeProcessors::SclassNode
50
- register :ivasgn, ParserGem::NodeProcessors::IvasgnNode
51
- register :cvasgn, ParserGem::NodeProcessors::CvasgnNode
52
- register :lvasgn, ParserGem::NodeProcessors::LvasgnNode
53
- register :gvasgn, ParserGem::NodeProcessors::GvasgnNode
54
- register :casgn, Convention::StructDefinition::NodeProcessors::StructNode
55
- register :casgn, Convention::DataDefinition::NodeProcessors::DataNode
56
- register :casgn, ParserGem::NodeProcessors::CasgnNode
57
- register :masgn, ParserGem::NodeProcessors::MasgnNode
58
- register :alias, ParserGem::NodeProcessors::AliasNode
59
- register :args, ParserGem::NodeProcessors::ArgsNode
60
- register :forward_args, ParserGem::NodeProcessors::ArgsNode
61
- register :block, ParserGem::NodeProcessors::BlockNode
62
- register :or_asgn, ParserGem::NodeProcessors::OrasgnNode
63
- register :op_asgn, ParserGem::NodeProcessors::OpasgnNode
64
- register :sym, ParserGem::NodeProcessors::SymNode
65
- register :until, ParserGem::NodeProcessors::UntilNode
66
- register :while, ParserGem::NodeProcessors::WhileNode
67
- register :and, ParserGem::NodeProcessors::AndNode
68
- end
69
- end
70
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'solargraph/parser/node_processor'
4
+
5
+ module Solargraph
6
+ module Parser
7
+ module ParserGem
8
+ module NodeProcessors
9
+ autoload :BeginNode, 'solargraph/parser/parser_gem/node_processors/begin_node'
10
+ autoload :DefNode, 'solargraph/parser/parser_gem/node_processors/def_node'
11
+ autoload :DefsNode, 'solargraph/parser/parser_gem/node_processors/defs_node'
12
+ autoload :SendNode, 'solargraph/parser/parser_gem/node_processors/send_node'
13
+ autoload :NamespaceNode, 'solargraph/parser/parser_gem/node_processors/namespace_node'
14
+ autoload :SclassNode, 'solargraph/parser/parser_gem/node_processors/sclass_node'
15
+ autoload :IvasgnNode, 'solargraph/parser/parser_gem/node_processors/ivasgn_node'
16
+ autoload :IfNode, 'solargraph/parser/parser_gem/node_processors/if_node'
17
+ autoload :CvasgnNode, 'solargraph/parser/parser_gem/node_processors/cvasgn_node'
18
+ autoload :LvasgnNode, 'solargraph/parser/parser_gem/node_processors/lvasgn_node'
19
+ autoload :GvasgnNode, 'solargraph/parser/parser_gem/node_processors/gvasgn_node'
20
+ autoload :CasgnNode, 'solargraph/parser/parser_gem/node_processors/casgn_node'
21
+ autoload :MasgnNode, 'solargraph/parser/parser_gem/node_processors/masgn_node'
22
+ autoload :AliasNode, 'solargraph/parser/parser_gem/node_processors/alias_node'
23
+ autoload :ArgsNode, 'solargraph/parser/parser_gem/node_processors/args_node'
24
+ autoload :BlockNode, 'solargraph/parser/parser_gem/node_processors/block_node'
25
+ autoload :OrasgnNode, 'solargraph/parser/parser_gem/node_processors/orasgn_node'
26
+ autoload :OpasgnNode, 'solargraph/parser/parser_gem/node_processors/opasgn_node'
27
+ autoload :SymNode, 'solargraph/parser/parser_gem/node_processors/sym_node'
28
+ autoload :ResbodyNode, 'solargraph/parser/parser_gem/node_processors/resbody_node'
29
+ autoload :UntilNode, 'solargraph/parser/parser_gem/node_processors/until_node'
30
+ autoload :WhenNode, 'solargraph/parser/parser_gem/node_processors/when_node'
31
+ autoload :WhileNode, 'solargraph/parser/parser_gem/node_processors/while_node'
32
+ autoload :AndNode, 'solargraph/parser/parser_gem/node_processors/and_node'
33
+ autoload :OrNode, 'solargraph/parser/parser_gem/node_processors/or_node'
34
+ end
35
+ end
36
+
37
+ module NodeProcessor
38
+ register :source, ParserGem::NodeProcessors::BeginNode
39
+ register :begin, ParserGem::NodeProcessors::BeginNode
40
+ register :kwbegin, ParserGem::NodeProcessors::BeginNode
41
+ register :rescue, ParserGem::NodeProcessors::BeginNode
42
+ register :resbody, ParserGem::NodeProcessors::ResbodyNode
43
+ register :def, ParserGem::NodeProcessors::DefNode
44
+ register :defs, ParserGem::NodeProcessors::DefsNode
45
+ register :if, ParserGem::NodeProcessors::IfNode
46
+ register :send, ParserGem::NodeProcessors::SendNode
47
+ register :class, Convention::StructDefinition::NodeProcessors::StructNode
48
+ register :class, Convention::DataDefinition::NodeProcessors::DataNode
49
+ register :class, ParserGem::NodeProcessors::NamespaceNode
50
+ register :module, ParserGem::NodeProcessors::NamespaceNode
51
+ register :sclass, ParserGem::NodeProcessors::SclassNode
52
+ register :ivasgn, ParserGem::NodeProcessors::IvasgnNode
53
+ register :cvasgn, ParserGem::NodeProcessors::CvasgnNode
54
+ register :lvasgn, ParserGem::NodeProcessors::LvasgnNode
55
+ register :gvasgn, ParserGem::NodeProcessors::GvasgnNode
56
+ register :casgn, Convention::StructDefinition::NodeProcessors::StructNode
57
+ register :casgn, Convention::DataDefinition::NodeProcessors::DataNode
58
+ register :casgn, ParserGem::NodeProcessors::CasgnNode
59
+ register :masgn, ParserGem::NodeProcessors::MasgnNode
60
+ register :alias, ParserGem::NodeProcessors::AliasNode
61
+ register :args, ParserGem::NodeProcessors::ArgsNode
62
+ register :forward_args, ParserGem::NodeProcessors::ArgsNode
63
+ register :block, ParserGem::NodeProcessors::BlockNode
64
+ register :or_asgn, ParserGem::NodeProcessors::OrasgnNode
65
+ register :op_asgn, ParserGem::NodeProcessors::OpasgnNode
66
+ register :sym, ParserGem::NodeProcessors::SymNode
67
+ register :until, ParserGem::NodeProcessors::UntilNode
68
+ register :when, ParserGem::NodeProcessors::WhenNode
69
+ register :while, ParserGem::NodeProcessors::WhileNode
70
+ register :and, ParserGem::NodeProcessors::AndNode
71
+ register :or, ParserGem::NodeProcessors::OrNode
72
+ end
73
+ end
74
+ end
@@ -1,12 +1,14 @@
1
- module Solargraph
2
- module Parser
3
- module ParserGem
4
- autoload :FlawedBuilder, 'solargraph/parser/parser_gem/flawed_builder'
5
- autoload :ClassMethods, 'solargraph/parser/parser_gem/class_methods'
6
- autoload :NodeMethods, 'solargraph/parser/parser_gem/node_methods'
7
- autoload :NodeChainer, 'solargraph/parser/parser_gem/node_chainer'
8
- end
9
- end
10
- end
11
-
12
- require 'solargraph/parser/parser_gem/node_processors'
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ module ParserGem
6
+ autoload :FlawedBuilder, 'solargraph/parser/parser_gem/flawed_builder'
7
+ autoload :ClassMethods, 'solargraph/parser/parser_gem/class_methods'
8
+ autoload :NodeMethods, 'solargraph/parser/parser_gem/node_methods'
9
+ autoload :NodeChainer, 'solargraph/parser/parser_gem/node_chainer'
10
+ end
11
+ end
12
+ end
13
+
14
+ require 'solargraph/parser/parser_gem/node_processors'
@@ -1,69 +1,75 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Parser
5
- # Data used by the parser to track context at various locations in a
6
- # source.
7
- #
8
- class Region
9
- # @return [Pin::Closure]
10
- attr_reader :closure
11
-
12
- # @return [Symbol]
13
- attr_reader :scope
14
-
15
- # @return [Symbol]
16
- attr_reader :visibility
17
-
18
- # @return [Solargraph::Source]
19
- attr_reader :source
20
-
21
- # @return [Array<Symbol>]
22
- attr_reader :lvars
23
-
24
- # @param source [Source]
25
- # @param namespace [String]
26
- # @param closure [Pin::Closure, nil]
27
- # @param scope [Symbol, nil]
28
- # @param visibility [Symbol]
29
- # @param lvars [Array<Symbol>]
30
- def initialize source: Solargraph::Source.load_string(''), closure: nil,
31
- scope: nil, visibility: :public, lvars: []
32
- @source = source
33
- # @closure = closure
34
- @closure = closure || Pin::Namespace.new(name: '', location: source.location, source: :parser)
35
- @scope = scope
36
- @visibility = visibility
37
- @lvars = lvars
38
- end
39
-
40
- # @return [String]
41
- def filename
42
- source.filename
43
- end
44
-
45
- # Generate a new Region with the provided attribute changes.
46
- #
47
- # @param closure [Pin::Closure, nil]
48
- # @param scope [Symbol, nil]
49
- # @param visibility [Symbol, nil]
50
- # @param lvars [Array<Symbol>, nil]
51
- # @return [Region]
52
- def update closure: nil, scope: nil, visibility: nil, lvars: nil
53
- Region.new(
54
- source: source,
55
- closure: closure || self.closure,
56
- scope: scope || self.scope,
57
- visibility: visibility || self.visibility,
58
- lvars: lvars || self.lvars
59
- )
60
- end
61
-
62
- # @param node [Parser::AST::Node]
63
- # @return [String]
64
- def code_for node
65
- source.code_for(node)
66
- end
67
- end
68
- end
69
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ # Data used by the parser to track context at various locations in a
6
+ # source.
7
+ #
8
+ class Region
9
+ # @return [Pin::Closure]
10
+ attr_reader :closure
11
+
12
+ # @return [Symbol]
13
+ attr_reader :scope
14
+
15
+ # @return [Symbol]
16
+ attr_reader :visibility
17
+
18
+ # @return [Solargraph::Source]
19
+ attr_reader :source
20
+
21
+ # @return [Array<Symbol>]
22
+ attr_reader :lvars
23
+
24
+ # @param source [Source]
25
+ # @param closure [Pin::Closure, nil]
26
+ # @param scope [Symbol, nil]
27
+ # @param visibility [Symbol]
28
+ # @param lvars [Array<Symbol>]
29
+ def initialize source: Solargraph::Source.load_string(''), closure: nil,
30
+ scope: nil, visibility: :public, lvars: []
31
+ @source = source
32
+ @closure = closure || Pin::Namespace.new(name: '', location: source.location, source: :parser)
33
+ @scope = scope
34
+ @visibility = visibility
35
+ @lvars = lvars
36
+ end
37
+
38
+ # @return [String, nil]
39
+ def filename
40
+ source.filename
41
+ end
42
+
43
+ # @return [Pin::Namespace, nil]
44
+ def namespace_pin
45
+ ns = closure
46
+ # @sg-ignore flow sensitive typing needs to handle while
47
+ ns = ns.closure while ns && !ns.is_a?(Pin::Namespace)
48
+ ns
49
+ end
50
+
51
+ # Generate a new Region with the provided attribute changes.
52
+ #
53
+ # @param closure [Pin::Closure, nil]
54
+ # @param scope [Symbol, nil]
55
+ # @param visibility [Symbol, nil]
56
+ # @param lvars [Array<Symbol>, nil]
57
+ # @return [Region]
58
+ def update closure: nil, scope: nil, visibility: nil, lvars: nil
59
+ Region.new(
60
+ source: source,
61
+ closure: closure || self.closure,
62
+ scope: scope || self.scope,
63
+ visibility: visibility || self.visibility,
64
+ lvars: lvars || self.lvars
65
+ )
66
+ end
67
+
68
+ # @param node [Parser::AST::Node]
69
+ # @return [String]
70
+ def code_for node
71
+ source.code_for(node)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,17 +1,19 @@
1
- module Solargraph
2
- module Parser
3
- class Snippet
4
- # @return [Range]
5
- attr_reader :range
6
- # @return [String]
7
- attr_reader :text
8
-
9
- # @param range [Solargraph::Range]
10
- # @param text [String]
11
- def initialize range, text
12
- @range = range
13
- @text = text
14
- end
15
- end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ class Snippet
6
+ # @return [Solargraph::Range]
7
+ attr_reader :range
8
+ # @return [String]
9
+ attr_reader :text
10
+
11
+ # @param range [Solargraph::Range]
12
+ # @param text [String]
13
+ def initialize range, text
14
+ @range = range
15
+ @text = text
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,23 +1,25 @@
1
- module Solargraph
2
- module Parser
3
- autoload :CommentRipper, 'solargraph/parser/comment_ripper'
4
- autoload :ParserGem, 'solargraph/parser/parser_gem'
5
- autoload :Region, 'solargraph/parser/region'
6
- autoload :NodeProcessor, 'solargraph/parser/node_processor'
7
- autoload :FlowSensitiveTyping, 'solargraph/parser/flow_sensitive_typing'
8
- autoload :Snippet, 'solargraph/parser/snippet'
9
-
10
- class SyntaxError < StandardError
11
- end
12
-
13
- # @deprecated
14
- Legacy = ParserGem
15
-
16
- ClassMethods = ParserGem::ClassMethods
17
- # @todo should be able to just 'extend ClassMethods' here and
18
- # typecheck things off it in strict mode
19
- extend ParserGem::ClassMethods
20
-
21
- NodeMethods = ParserGem::NodeMethods
22
- end
23
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Parser
5
+ autoload :CommentRipper, 'solargraph/parser/comment_ripper'
6
+ autoload :ParserGem, 'solargraph/parser/parser_gem'
7
+ autoload :Region, 'solargraph/parser/region'
8
+ autoload :NodeProcessor, 'solargraph/parser/node_processor'
9
+ autoload :FlowSensitiveTyping, 'solargraph/parser/flow_sensitive_typing'
10
+ autoload :Snippet, 'solargraph/parser/snippet'
11
+
12
+ class SyntaxError < StandardError
13
+ end
14
+
15
+ # @deprecated
16
+ Legacy = ParserGem
17
+
18
+ ClassMethods = ParserGem::ClassMethods
19
+ # @todo should be able to just 'extend ClassMethods' here and
20
+ # typecheck things off it in strict mode
21
+ extend ParserGem::ClassMethods
22
+
23
+ NodeMethods = ParserGem::NodeMethods
24
+ end
25
+ end