solargraph 0.58.3 → 0.59.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 (229) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.github/workflows/linting.yml +12 -5
  4. data/.github/workflows/plugins.yml +54 -34
  5. data/.github/workflows/rspec.yml +15 -28
  6. data/.github/workflows/typecheck.yml +6 -3
  7. data/.rubocop.yml +38 -6
  8. data/.rubocop_todo.yml +53 -966
  9. data/CHANGELOG.md +24 -0
  10. data/Gemfile +3 -1
  11. data/README.md +3 -3
  12. data/Rakefile +26 -23
  13. data/bin/solargraph +2 -1
  14. data/lib/solargraph/api_map/cache.rb +3 -3
  15. data/lib/solargraph/api_map/constants.rb +12 -3
  16. data/lib/solargraph/api_map/index.rb +29 -18
  17. data/lib/solargraph/api_map/source_to_yard.rb +22 -9
  18. data/lib/solargraph/api_map/store.rb +40 -30
  19. data/lib/solargraph/api_map.rb +160 -78
  20. data/lib/solargraph/bench.rb +2 -3
  21. data/lib/solargraph/complex_type/conformance.rb +176 -0
  22. data/lib/solargraph/complex_type/type_methods.rb +31 -18
  23. data/lib/solargraph/complex_type/unique_type.rb +221 -63
  24. data/lib/solargraph/complex_type.rb +173 -59
  25. data/lib/solargraph/convention/active_support_concern.rb +111 -111
  26. data/lib/solargraph/convention/base.rb +50 -50
  27. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +1 -1
  28. data/lib/solargraph/convention/data_definition/data_definition_node.rb +7 -5
  29. data/lib/solargraph/convention/data_definition.rb +5 -2
  30. data/lib/solargraph/convention/gemfile.rb +1 -1
  31. data/lib/solargraph/convention/gemspec.rb +1 -1
  32. data/lib/solargraph/convention/rakefile.rb +1 -1
  33. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +2 -1
  34. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +4 -3
  35. data/lib/solargraph/convention/struct_definition.rb +8 -4
  36. data/lib/solargraph/convention.rb +2 -2
  37. data/lib/solargraph/converters/dd.rb +2 -0
  38. data/lib/solargraph/converters/dl.rb +2 -0
  39. data/lib/solargraph/converters/dt.rb +2 -0
  40. data/lib/solargraph/converters/misc.rb +2 -0
  41. data/lib/solargraph/diagnostics/require_not_found.rb +1 -0
  42. data/lib/solargraph/diagnostics/rubocop.rb +11 -10
  43. data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
  44. data/lib/solargraph/diagnostics/type_check.rb +11 -10
  45. data/lib/solargraph/diagnostics/update_errors.rb +4 -8
  46. data/lib/solargraph/diagnostics.rb +55 -55
  47. data/lib/solargraph/doc_map.rb +38 -39
  48. data/lib/solargraph/environ.rb +52 -52
  49. data/lib/solargraph/equality.rb +4 -4
  50. data/lib/solargraph/gem_pins.rb +4 -15
  51. data/lib/solargraph/language_server/error_codes.rb +10 -10
  52. data/lib/solargraph/language_server/host/diagnoser.rb +1 -1
  53. data/lib/solargraph/language_server/host/dispatch.rb +3 -3
  54. data/lib/solargraph/language_server/host/message_worker.rb +4 -3
  55. data/lib/solargraph/language_server/host/sources.rb +2 -1
  56. data/lib/solargraph/language_server/host.rb +35 -28
  57. data/lib/solargraph/language_server/message/base.rb +1 -1
  58. data/lib/solargraph/language_server/message/client/register_capability.rb +1 -3
  59. data/lib/solargraph/language_server/message/completion_item/resolve.rb +6 -8
  60. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +12 -18
  61. data/lib/solargraph/language_server/message/extended/document.rb +1 -0
  62. data/lib/solargraph/language_server/message/extended/document_gems.rb +7 -7
  63. data/lib/solargraph/language_server/message/extended/download_core.rb +2 -1
  64. data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
  65. data/lib/solargraph/language_server/message/extended/search.rb +1 -1
  66. data/lib/solargraph/language_server/message/initialize.rb +20 -14
  67. data/lib/solargraph/language_server/message/initialized.rb +28 -28
  68. data/lib/solargraph/language_server/message/text_document/completion.rb +10 -8
  69. data/lib/solargraph/language_server/message/text_document/definition.rb +41 -32
  70. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +17 -10
  71. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -19
  72. data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -6
  73. data/lib/solargraph/language_server/message/text_document/hover.rb +5 -5
  74. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +13 -6
  75. data/lib/solargraph/language_server/message/text_document/references.rb +17 -10
  76. data/lib/solargraph/language_server/message/text_document/rename.rb +20 -13
  77. data/lib/solargraph/language_server/message/text_document/signature_help.rb +3 -2
  78. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -17
  79. data/lib/solargraph/language_server/message/text_document.rb +28 -28
  80. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +34 -28
  81. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +38 -30
  82. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +23 -17
  83. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
  84. data/lib/solargraph/language_server/message.rb +1 -1
  85. data/lib/solargraph/language_server/progress.rb +143 -143
  86. data/lib/solargraph/language_server/request.rb +4 -2
  87. data/lib/solargraph/language_server/transport/adapter.rb +68 -68
  88. data/lib/solargraph/language_server/transport/data_reader.rb +11 -13
  89. data/lib/solargraph/language_server/uri_helpers.rb +2 -2
  90. data/lib/solargraph/language_server.rb +20 -20
  91. data/lib/solargraph/library.rb +57 -38
  92. data/lib/solargraph/location.rb +17 -14
  93. data/lib/solargraph/logging.rb +22 -4
  94. data/lib/solargraph/page.rb +1 -1
  95. data/lib/solargraph/parser/comment_ripper.rb +19 -4
  96. data/lib/solargraph/parser/flow_sensitive_typing.rb +324 -108
  97. data/lib/solargraph/parser/node_processor/base.rb +34 -4
  98. data/lib/solargraph/parser/node_processor.rb +8 -7
  99. data/lib/solargraph/parser/parser_gem/class_methods.rb +30 -14
  100. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +1 -1
  101. data/lib/solargraph/parser/parser_gem/node_chainer.rb +51 -25
  102. data/lib/solargraph/parser/parser_gem/node_methods.rb +181 -73
  103. data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +24 -24
  104. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +4 -4
  105. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +13 -11
  106. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +9 -0
  107. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +11 -12
  108. data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +36 -36
  109. data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +24 -24
  110. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
  111. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +9 -8
  112. data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +24 -24
  113. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +36 -6
  114. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +5 -3
  115. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +1 -0
  116. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +3 -1
  117. data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +40 -40
  118. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +3 -3
  119. data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
  120. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -1
  121. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
  122. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -5
  123. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +124 -113
  124. data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +20 -20
  125. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +1 -1
  126. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
  127. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +6 -2
  128. data/lib/solargraph/parser/parser_gem/node_processors.rb +4 -0
  129. data/lib/solargraph/parser/parser_gem.rb +2 -0
  130. data/lib/solargraph/parser/region.rb +9 -3
  131. data/lib/solargraph/parser/snippet.rb +3 -1
  132. data/lib/solargraph/parser.rb +2 -0
  133. data/lib/solargraph/pin/base.rb +126 -82
  134. data/lib/solargraph/pin/base_variable.rb +273 -24
  135. data/lib/solargraph/pin/block.rb +29 -6
  136. data/lib/solargraph/pin/breakable.rb +7 -1
  137. data/lib/solargraph/pin/callable.rb +65 -21
  138. data/lib/solargraph/pin/closure.rb +7 -10
  139. data/lib/solargraph/pin/common.rb +24 -6
  140. data/lib/solargraph/pin/compound_statement.rb +55 -0
  141. data/lib/solargraph/pin/constant.rb +3 -5
  142. data/lib/solargraph/pin/conversions.rb +10 -4
  143. data/lib/solargraph/pin/delegated_method.rb +19 -8
  144. data/lib/solargraph/pin/documenting.rb +4 -2
  145. data/lib/solargraph/pin/instance_variable.rb +5 -1
  146. data/lib/solargraph/pin/keyword.rb +0 -4
  147. data/lib/solargraph/pin/local_variable.rb +15 -59
  148. data/lib/solargraph/pin/method.rb +158 -104
  149. data/lib/solargraph/pin/method_alias.rb +8 -0
  150. data/lib/solargraph/pin/namespace.rb +19 -12
  151. data/lib/solargraph/pin/parameter.rb +102 -36
  152. data/lib/solargraph/pin/proxy_type.rb +4 -1
  153. data/lib/solargraph/pin/reference/override.rb +1 -1
  154. data/lib/solargraph/pin/reference/require.rb +14 -14
  155. data/lib/solargraph/pin/reference/superclass.rb +2 -0
  156. data/lib/solargraph/pin/reference/type_alias.rb +16 -0
  157. data/lib/solargraph/pin/reference.rb +20 -0
  158. data/lib/solargraph/pin/search.rb +8 -7
  159. data/lib/solargraph/pin/signature.rb +15 -12
  160. data/lib/solargraph/pin/singleton.rb +11 -11
  161. data/lib/solargraph/pin/symbol.rb +2 -1
  162. data/lib/solargraph/pin/until.rb +2 -4
  163. data/lib/solargraph/pin/while.rb +2 -4
  164. data/lib/solargraph/pin.rb +2 -0
  165. data/lib/solargraph/pin_cache.rb +22 -19
  166. data/lib/solargraph/position.rb +17 -10
  167. data/lib/solargraph/range.rb +16 -15
  168. data/lib/solargraph/rbs_map/conversions.rb +367 -231
  169. data/lib/solargraph/rbs_map/core_fills.rb +18 -11
  170. data/lib/solargraph/rbs_map/core_map.rb +24 -17
  171. data/lib/solargraph/rbs_map/stdlib_map.rb +33 -5
  172. data/lib/solargraph/rbs_map.rb +76 -32
  173. data/lib/solargraph/server_methods.rb +1 -1
  174. data/lib/solargraph/shell.rb +258 -66
  175. data/lib/solargraph/source/chain/array.rb +3 -12
  176. data/lib/solargraph/source/chain/block_symbol.rb +13 -13
  177. data/lib/solargraph/source/chain/block_variable.rb +13 -13
  178. data/lib/solargraph/source/chain/call.rb +96 -56
  179. data/lib/solargraph/source/chain/class_variable.rb +1 -1
  180. data/lib/solargraph/source/chain/constant.rb +5 -1
  181. data/lib/solargraph/source/chain/global_variable.rb +1 -1
  182. data/lib/solargraph/source/chain/hash.rb +8 -5
  183. data/lib/solargraph/source/chain/head.rb +19 -19
  184. data/lib/solargraph/source/chain/if.rb +12 -10
  185. data/lib/solargraph/source/chain/instance_variable.rb +24 -1
  186. data/lib/solargraph/source/chain/link.rb +12 -22
  187. data/lib/solargraph/source/chain/literal.rb +22 -15
  188. data/lib/solargraph/source/chain/or.rb +10 -4
  189. data/lib/solargraph/source/chain/q_call.rb +2 -0
  190. data/lib/solargraph/source/chain/variable.rb +3 -1
  191. data/lib/solargraph/source/chain/z_super.rb +1 -3
  192. data/lib/solargraph/source/chain.rb +51 -38
  193. data/lib/solargraph/source/change.rb +12 -5
  194. data/lib/solargraph/source/cursor.rb +33 -18
  195. data/lib/solargraph/source/encoding_fixes.rb +6 -7
  196. data/lib/solargraph/source/source_chainer.rb +56 -32
  197. data/lib/solargraph/source/updater.rb +5 -1
  198. data/lib/solargraph/source.rb +59 -35
  199. data/lib/solargraph/source_map/clip.rb +54 -30
  200. data/lib/solargraph/source_map/data.rb +4 -1
  201. data/lib/solargraph/source_map/mapper.rb +69 -42
  202. data/lib/solargraph/source_map.rb +21 -9
  203. data/lib/solargraph/type_checker/problem.rb +3 -1
  204. data/lib/solargraph/type_checker/rules.rb +81 -8
  205. data/lib/solargraph/type_checker.rb +196 -122
  206. data/lib/solargraph/version.rb +1 -1
  207. data/lib/solargraph/workspace/config.rb +14 -11
  208. data/lib/solargraph/workspace/gemspecs.rb +367 -0
  209. data/lib/solargraph/workspace/require_paths.rb +1 -0
  210. data/lib/solargraph/workspace.rb +50 -28
  211. data/lib/solargraph/yard_map/cache.rb +25 -25
  212. data/lib/solargraph/yard_map/helpers.rb +8 -3
  213. data/lib/solargraph/yard_map/mapper/to_constant.rb +28 -28
  214. data/lib/solargraph/yard_map/mapper/to_method.rb +13 -7
  215. data/lib/solargraph/yard_map/mapper/to_namespace.rb +2 -1
  216. data/lib/solargraph/yard_map/mapper.rb +13 -8
  217. data/lib/solargraph/yard_map.rb +17 -18
  218. data/lib/solargraph/yard_tags.rb +2 -2
  219. data/lib/solargraph/yardoc.rb +7 -4
  220. data/lib/solargraph.rb +33 -10
  221. data/rbs/fills/rubygems/0/dependency.rbs +193 -0
  222. data/rbs/shims/ast/0/node.rbs +1 -1
  223. data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
  224. data/solargraph.gemspec +37 -35
  225. metadata +41 -42
  226. data/lib/solargraph/type_checker/checks.rb +0 -124
  227. data/lib/solargraph/type_checker/param_def.rb +0 -37
  228. data/lib/solargraph/yard_map/to_method.rb +0 -89
  229. data/rbs/fills/tuple/tuple.rbs +0 -149
@@ -1,28 +1,28 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module TextDocument
7
- autoload :Base, 'solargraph/language_server/message/text_document/base'
8
- autoload :Completion, 'solargraph/language_server/message/text_document/completion'
9
- autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
10
- autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
11
- autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
12
- autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
13
- autoload :Hover, 'solargraph/language_server/message/text_document/hover'
14
- autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
15
- autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
16
- autoload :Definition, 'solargraph/language_server/message/text_document/definition'
17
- autoload :TypeDefinition, 'solargraph/language_server/message/text_document/type_definition'
18
- autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
19
- autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
20
- autoload :References, 'solargraph/language_server/message/text_document/references'
21
- autoload :Rename, 'solargraph/language_server/message/text_document/rename'
22
- autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
23
- autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
24
- autoload :DocumentHighlight, 'solargraph/language_server/message/text_document/document_highlight'
25
- end
26
- end
27
- end
28
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ autoload :Base, 'solargraph/language_server/message/text_document/base'
8
+ autoload :Completion, 'solargraph/language_server/message/text_document/completion'
9
+ autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
10
+ autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
11
+ autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
12
+ autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
13
+ autoload :Hover, 'solargraph/language_server/message/text_document/hover'
14
+ autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
15
+ autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
16
+ autoload :Definition, 'solargraph/language_server/message/text_document/definition'
17
+ autoload :TypeDefinition, 'solargraph/language_server/message/text_document/type_definition'
18
+ autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
19
+ autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
20
+ autoload :References, 'solargraph/language_server/message/text_document/references'
21
+ autoload :Rename, 'solargraph/language_server/message/text_document/rename'
22
+ autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
23
+ autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
24
+ autoload :DocumentHighlight, 'solargraph/language_server/message/text_document/document_highlight'
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,35 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
5
- def process
6
- return unless params['settings']
7
- update = params['settings']['solargraph']
8
- host.configure update
9
- register_from_options
10
- end
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
8
+ def process
9
+ return unless params['settings']
10
+ update = params['settings']['solargraph']
11
+ host.configure update
12
+ register_from_options
13
+ end
11
14
 
12
- private
15
+ private
13
16
 
14
- # @return [void]
15
- def register_from_options
16
- Solargraph.logger.debug "Registering capabilities from options: #{host.options.inspect}"
17
- # @type [Array<String>]
18
- y = []
19
- # @type [Array<String>]
20
- n = []
21
- (host.options['completion'] ? y : n).push('textDocument/completion')
22
- (host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
23
- (host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
24
- (host.options['formatting'] ? y : n).push('textDocument/formatting')
25
- (host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
26
- (host.options['definitions'] ? y : n).push('textDocument/definition')
27
- (host.options['typeDefinitions'] ? y : n).push('textDocument/typeDefinition')
28
- (host.options['references'] ? y : n).push('textDocument/references')
29
- (host.options['folding'] ? y : n).push('textDocument/folding')
30
- (host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
31
- host.register_capabilities y
32
- host.unregister_capabilities n
17
+ # @return [void]
18
+ def register_from_options
19
+ Solargraph.logger.debug "Registering capabilities from options: #{host.options.inspect}"
20
+ # @type [Array<String>]
21
+ y = []
22
+ # @type [Array<String>]
23
+ n = []
24
+ (host.options['completion'] ? y : n).push('textDocument/completion')
25
+ (host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
26
+ (host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
27
+ (host.options['formatting'] ? y : n).push('textDocument/formatting')
28
+ (host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
29
+ (host.options['definitions'] ? y : n).push('textDocument/definition')
30
+ (host.options['typeDefinitions'] ? y : n).push('textDocument/typeDefinition')
31
+ (host.options['references'] ? y : n).push('textDocument/references')
32
+ (host.options['folding'] ? y : n).push('textDocument/folding')
33
+ (host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
34
+ host.register_capabilities y
35
+ host.unregister_capabilities n
36
+ end
37
+ end
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -1,40 +1,48 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeWatchedFiles < Solargraph::LanguageServer::Message::Base
5
- CREATED = 1
6
- CHANGED = 2
7
- DELETED = 3
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeWatchedFiles < Solargraph::LanguageServer::Message::Base
8
+ CREATED = 1
9
+ CHANGED = 2
10
+ DELETED = 3
8
11
 
9
- include Solargraph::LanguageServer::UriHelpers
12
+ include Solargraph::LanguageServer::UriHelpers
10
13
 
11
- def process
12
- need_catalog = false
13
- to_create = []
14
- to_delete = []
14
+ def process
15
+ need_catalog = false
16
+ to_create = []
17
+ to_delete = []
15
18
 
16
- # @param change [Hash]
17
- params['changes'].each do |change|
18
- if change['type'] == CREATED
19
- to_create << change['uri']
20
- need_catalog = true
21
- elsif change['type'] == CHANGED
22
- next if host.open?(change['uri'])
23
- to_create << change['uri']
24
- need_catalog = true
25
- elsif change['type'] == DELETED
26
- to_delete << change['uri']
27
- need_catalog = true
28
- else
29
- set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
30
- end
31
- end
19
+ # @param change [Hash]
20
+ params['changes'].each do |change|
21
+ case change['type']
22
+ when CREATED
23
+ to_create << change['uri']
24
+ need_catalog = true
25
+ when CHANGED
26
+ next if host.open?(change['uri'])
27
+ to_create << change['uri']
28
+ need_catalog = true
29
+ when DELETED
30
+ to_delete << change['uri']
31
+ need_catalog = true
32
+ else
33
+ set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS,
34
+ "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
35
+ end
36
+ end
32
37
 
33
- host.create *to_create
34
- host.delete *to_delete
38
+ host.create(*to_create)
39
+ host.delete(*to_delete)
35
40
 
36
- # Force host to catalog libraries after file changes (see castwide/solargraph#139)
37
- host.catalog if need_catalog
41
+ # Force host to catalog libraries after file changes (see castwide/solargraph#139)
42
+ host.catalog if need_catalog
43
+ end
44
+ end
45
+ end
38
46
  end
39
47
  end
40
48
  end
@@ -1,25 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeWorkspaceFolders < Solargraph::LanguageServer::Message::Base
5
- def process
6
- add_folders
7
- remove_folders
8
- end
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeWorkspaceFolders < Solargraph::LanguageServer::Message::Base
8
+ def process
9
+ add_folders
10
+ remove_folders
11
+ end
9
12
 
10
- private
13
+ private
11
14
 
12
- # @return [void]
13
- def add_folders
14
- return unless params['event'] && params['event']['added']
15
- host.prepare_folders params['event']['added']
16
- end
15
+ # @return [void]
16
+ def add_folders
17
+ return unless params['event'] && params['event']['added']
18
+ host.prepare_folders params['event']['added']
19
+ end
17
20
 
18
- # @return [void]
19
- def remove_folders
20
- return unless params['event'] && params['event']['removed']
21
- params['event']['removed'].each do |folder|
22
- host.remove_folders params['event']['removed']
21
+ # @return [void]
22
+ def remove_folders
23
+ return unless params['event'] && params['event']['removed']
24
+ params['event']['removed'].each do |_folder|
25
+ host.remove_folders params['event']['removed']
26
+ end
27
+ end
28
+ end
23
29
  end
24
30
  end
25
31
  end
@@ -1,23 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Solargraph::LanguageServer::Message::Workspace::WorkspaceSymbol < Solargraph::LanguageServer::Message::Base
4
- include Solargraph::LanguageServer::UriHelpers
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class WorkspaceSymbol < Solargraph::LanguageServer::Message::Base
8
+ include Solargraph::LanguageServer::UriHelpers
5
9
 
6
- def process
7
- pins = host.query_symbols(params['query'])
8
- info = pins.map do |pin|
9
- uri = file_to_uri(pin.best_location.filename)
10
- {
11
- name: pin.path,
12
- containerName: pin.namespace,
13
- kind: pin.symbol_kind,
14
- location: {
15
- uri: uri,
16
- range: pin.best_location.range.to_hash
17
- },
18
- deprecated: pin.deprecated?
19
- }
10
+ def process
11
+ pins = host.query_symbols(params['query'])
12
+ info = pins.map do |pin|
13
+ # @sg-ignore Need to add nil check here
14
+ uri = file_to_uri(pin.best_location.filename)
15
+ {
16
+ name: pin.path,
17
+ containerName: pin.namespace,
18
+ kind: pin.symbol_kind,
19
+ location: {
20
+ uri: uri,
21
+ # @sg-ignore Need to add nil check here
22
+ range: pin.best_location.range.to_hash
23
+ },
24
+ deprecated: pin.deprecated?
25
+ }
26
+ end
27
+ set_result info
28
+ end
29
+ end
30
+ end
20
31
  end
21
- set_result info
22
32
  end
23
33
  end
@@ -38,7 +38,7 @@ module Solargraph
38
38
  # @param path [String]
39
39
  # @return [Class<Solargraph::LanguageServer::Message::Base>]
40
40
  def select path
41
- if method_map.has_key?(path)
41
+ if method_map.key?(path)
42
42
  method_map[path]
43
43
  elsif path.start_with?('$/')
44
44
  MethodNotImplemented
@@ -1,143 +1,143 @@
1
- # frozen_string_literal: true
2
-
3
- require 'securerandom'
4
-
5
- module Solargraph
6
- module LanguageServer
7
- # Progress notification handling for language server hosts.
8
- #
9
- class Progress
10
- WAITING = :waiting
11
- CREATED = :created
12
- FINISHED = :finished
13
-
14
- # @return [String]
15
- attr_reader :uuid
16
-
17
- # @return [String]
18
- attr_reader :title
19
-
20
- # @return [String, nil]
21
- attr_reader :kind
22
-
23
- # @return [String, nil]
24
- attr_reader :message
25
-
26
- # @return [Integer]
27
- attr_reader :percentage
28
-
29
- # @return [Symbol]
30
- attr_reader :status
31
-
32
- # @param title [String]
33
- def initialize title
34
- @title = title
35
- @uuid = SecureRandom.uuid
36
- @percentage = 0
37
- @status = WAITING
38
- end
39
-
40
- # @param message [String]
41
- # @param percentage [Integer]
42
- # @return [void]
43
- def begin message, percentage
44
- @kind = 'begin'
45
- @message = message
46
- @percentage = percentage
47
- end
48
-
49
- # @param message [String]
50
- # @param percentage [Integer]
51
- # @return [void]
52
- def report message, percentage
53
- @kind = 'report'
54
- @message = message
55
- @percentage = percentage
56
- end
57
-
58
- # @param message [String]
59
- # @return [void]
60
- def finish message
61
- @kind = 'end'
62
- @message = message
63
- @percentage = 100
64
- true
65
- end
66
-
67
- # @param host [Solargraph::LanguageServer::Host]
68
- # @return [void]
69
- def send host
70
- return unless host.client_supports_progress? && !finished?
71
-
72
- message = build
73
- create(host)
74
- host.send_notification '$/progress', message
75
- @status = FINISHED if kind == 'end'
76
- keep_alive host
77
- end
78
-
79
- def created?
80
- [CREATED, FINISHED].include?(status)
81
- end
82
-
83
- def finished?
84
- status == FINISHED
85
- end
86
-
87
- private
88
-
89
- # @param host [Solargraph::LanguageServer::Host]
90
- # @return [void]
91
- def create host
92
- return if created?
93
-
94
- host.send_request 'window/workDoneProgress/create', { token: uuid }
95
- @status = CREATED
96
- end
97
-
98
- # @return [Hash]
99
- def build
100
- {
101
- token: uuid,
102
- value: {
103
- kind: kind,
104
- cancellable: false
105
- }.merge(build_value)
106
- }
107
- end
108
-
109
- # @return [Hash]
110
- def build_value
111
- case kind
112
- when 'begin'
113
- { title: title, message: message, percentage: percentage }
114
- when 'report'
115
- { message: message, percentage: percentage }
116
- when 'end'
117
- { message: message }
118
- else
119
- raise "Invalid progress kind #{kind}"
120
- end
121
- end
122
-
123
- # @param host [Host]
124
- # @return [void]
125
- def keep_alive host
126
- mutex.synchronize { @last = Time.now }
127
- @keep_alive ||= Thread.new do
128
- until finished?
129
- sleep 10
130
- break if finished?
131
- next if mutex.synchronize { Time.now - @last < 10 }
132
- send host
133
- end
134
- end
135
- end
136
-
137
- # @return [Thread::Mutex]
138
- def mutex
139
- @mutex ||= Mutex.new
140
- end
141
- end
142
- end
143
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'securerandom'
4
+
5
+ module Solargraph
6
+ module LanguageServer
7
+ # Progress notification handling for language server hosts.
8
+ #
9
+ class Progress
10
+ WAITING = :waiting
11
+ CREATED = :created
12
+ FINISHED = :finished
13
+
14
+ # @return [String]
15
+ attr_reader :uuid
16
+
17
+ # @return [String]
18
+ attr_reader :title
19
+
20
+ # @return [String, nil]
21
+ attr_reader :kind
22
+
23
+ # @return [String, nil]
24
+ attr_reader :message
25
+
26
+ # @return [Integer]
27
+ attr_reader :percentage
28
+
29
+ # @return [Symbol]
30
+ attr_reader :status
31
+
32
+ # @param title [String]
33
+ def initialize title
34
+ @title = title
35
+ @uuid = SecureRandom.uuid
36
+ @percentage = 0
37
+ @status = WAITING
38
+ end
39
+
40
+ # @param message [String]
41
+ # @param percentage [Integer]
42
+ # @return [void]
43
+ def begin message, percentage
44
+ @kind = 'begin'
45
+ @message = message
46
+ @percentage = percentage
47
+ end
48
+
49
+ # @param message [String]
50
+ # @param percentage [Integer]
51
+ # @return [void]
52
+ def report message, percentage
53
+ @kind = 'report'
54
+ @message = message
55
+ @percentage = percentage
56
+ end
57
+
58
+ # @param message [String]
59
+ # @return [void]
60
+ def finish message
61
+ @kind = 'end'
62
+ @message = message
63
+ @percentage = 100
64
+ true
65
+ end
66
+
67
+ # @param host [Solargraph::LanguageServer::Host]
68
+ # @return [void]
69
+ def send host
70
+ return unless host.client_supports_progress? && !finished?
71
+
72
+ message = build
73
+ create(host)
74
+ host.send_notification '$/progress', message
75
+ @status = FINISHED if kind == 'end'
76
+ keep_alive host
77
+ end
78
+
79
+ def created?
80
+ [CREATED, FINISHED].include?(status)
81
+ end
82
+
83
+ def finished?
84
+ status == FINISHED
85
+ end
86
+
87
+ private
88
+
89
+ # @param host [Solargraph::LanguageServer::Host]
90
+ # @return [void]
91
+ def create host
92
+ return if created?
93
+
94
+ host.send_request 'window/workDoneProgress/create', { token: uuid }
95
+ @status = CREATED
96
+ end
97
+
98
+ # @return [Hash]
99
+ def build
100
+ {
101
+ token: uuid,
102
+ value: {
103
+ kind: kind,
104
+ cancellable: false
105
+ }.merge(build_value)
106
+ }
107
+ end
108
+
109
+ # @return [Hash]
110
+ def build_value
111
+ case kind
112
+ when 'begin'
113
+ { title: title, message: message, percentage: percentage }
114
+ when 'report'
115
+ { message: message, percentage: percentage }
116
+ when 'end'
117
+ { message: message }
118
+ else
119
+ raise "Invalid progress kind #{kind}"
120
+ end
121
+ end
122
+
123
+ # @param host [Host]
124
+ # @return [void]
125
+ def keep_alive host
126
+ mutex.synchronize { @last = Time.now }
127
+ @keep_alive ||= Thread.new do
128
+ until finished?
129
+ sleep 10
130
+ break if finished?
131
+ next if mutex.synchronize { Time.now - @last < 10 }
132
+ send host
133
+ end
134
+ end
135
+ end
136
+
137
+ # @return [Thread::Mutex]
138
+ def mutex
139
+ @mutex ||= Mutex.new
140
+ end
141
+ end
142
+ end
143
+ end
@@ -4,18 +4,20 @@ module Solargraph
4
4
  module LanguageServer
5
5
  class Request
6
6
  # @param id [Integer]
7
- # @param &block The block that processes the client's response
7
+ # @param block [Proc] The block that processes the client's response
8
8
  def initialize id, &block
9
9
  @id = id
10
10
  @block = block
11
11
  end
12
12
 
13
+ # @sg-ignore Solargraph::LanguageServer::Request#process return
14
+ # type could not be inferred
13
15
  # @param result [Object]
14
16
  # @generic T
15
17
  # @yieldreturn [generic<T>]
16
18
  # @return [generic<T>, nil]
17
19
  def process result
18
- @block.call(result) unless @block.nil?
20
+ @block&.call(result)
19
21
  end
20
22
 
21
23
  # @return [void]