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
data/solargraph.gemspec CHANGED
@@ -1,4 +1,7 @@
1
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
1
+ # frozen_string_literal: true
2
+
3
+ # @sg-ignore Should better support meaning of '&' in RBS
4
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/lib"
2
5
  require 'solargraph/version'
3
6
  require 'date'
4
7
 
@@ -6,12 +9,11 @@ require 'date'
6
9
  Gem::Specification.new do |s|
7
10
  s.name = 'solargraph'
8
11
  s.version = Solargraph::VERSION
9
- s.date = Date.today.strftime("%Y-%m-%d")
10
- s.summary = "A Ruby language server"
11
- s.description = "IDE tools for code completion, inline documentation, and static analysis"
12
- s.authors = ["Fred Snyder"]
12
+ s.summary = 'A Ruby language server'
13
+ s.description = 'IDE tools for code completion, inline documentation, and static analysis'
14
+ s.authors = ['Fred Snyder']
13
15
  s.email = 'admin@castwide.com'
14
- s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
15
17
  # @sg-ignore Need backtick support
16
18
  # @type [String]
17
19
  all_files = `git ls-files -z`
@@ -20,36 +22,36 @@ Gem::Specification.new do |s|
20
22
  s.homepage = 'https://solargraph.org'
21
23
  s.license = 'MIT'
22
24
  s.executables = ['solargraph']
23
- s.metadata["funding_uri"] = "https://www.patreon.com/castwide"
24
- s.metadata["bug_tracker_uri"] = "https://github.com/castwide/solargraph/issues"
25
- s.metadata["changelog_uri"] = "https://github.com/castwide/solargraph/blob/master/CHANGELOG.md"
26
- s.metadata["source_code_uri"] = "https://github.com/castwide/solargraph"
27
- s.metadata["rubygems_mfa_required"] = "true"
25
+ s.metadata['funding_uri'] = 'https://www.patreon.com/castwide'
26
+ s.metadata['bug_tracker_uri'] = 'https://github.com/castwide/solargraph/issues'
27
+ s.metadata['changelog_uri'] = 'https://github.com/castwide/solargraph/blob/master/CHANGELOG.md'
28
+ s.metadata['source_code_uri'] = 'https://github.com/castwide/solargraph'
29
+ s.metadata['rubygems_mfa_required'] = 'true'
28
30
 
29
- s.required_ruby_version = '>= 3.0'
31
+ s.required_ruby_version = '>= 3.1'
30
32
 
31
- s.add_runtime_dependency 'ast', '~> 2.4.3'
32
- s.add_runtime_dependency 'backport', '~> 1.2'
33
- s.add_runtime_dependency 'benchmark', '~> 0.4'
34
- s.add_runtime_dependency 'bundler', '>= 2.0'
35
- s.add_runtime_dependency 'diff-lcs', '~> 1.4'
36
- s.add_runtime_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
37
- s.add_runtime_dependency 'kramdown', '~> 2.3'
38
- s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
39
- s.add_runtime_dependency 'logger', '~> 1.6'
40
- s.add_runtime_dependency 'observer', '~> 0.1'
41
- s.add_runtime_dependency 'ostruct', '~> 0.6'
42
- s.add_runtime_dependency 'open3', '~> 0.2.1'
43
- s.add_runtime_dependency 'parser', '~> 3.0'
44
- s.add_runtime_dependency 'prism', '~> 1.4'
45
- s.add_runtime_dependency 'rbs', ['>= 3.6.1', '<= 4.0.0.dev.4']
46
- s.add_runtime_dependency 'reverse_markdown', '~> 3.0'
47
- s.add_runtime_dependency 'rubocop', '~> 1.76'
48
- s.add_runtime_dependency 'thor', '~> 1.0'
49
- s.add_runtime_dependency 'tilt', '~> 2.0'
50
- s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
51
- s.add_runtime_dependency 'yard-solargraph', '~> 0.1'
52
- s.add_runtime_dependency 'yard-activesupport-concern', '~> 0.0'
33
+ s.add_dependency 'ast', '~> 2.4.3'
34
+ s.add_dependency 'backport', '~> 1.2'
35
+ s.add_dependency 'benchmark', '~> 0.4'
36
+ s.add_dependency 'bundler', '>= 2.0'
37
+ s.add_dependency 'diff-lcs', '~> 1.4'
38
+ s.add_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
39
+ s.add_dependency 'kramdown', '~> 2.3'
40
+ s.add_dependency 'kramdown-parser-gfm', '~> 1.1'
41
+ s.add_dependency 'logger', '~> 1.6'
42
+ s.add_dependency 'observer', '~> 0.1'
43
+ s.add_dependency 'open3', '~> 0.2.1'
44
+ s.add_dependency 'ostruct', '~> 0.6'
45
+ s.add_dependency 'parser', '~> 3.0'
46
+ s.add_dependency 'prism', '~> 1.4'
47
+ s.add_dependency 'rbs', '>= 3.10.0'
48
+ s.add_dependency 'reverse_markdown', '~> 3.0'
49
+ s.add_dependency 'rubocop', '~> 1.76'
50
+ s.add_dependency 'thor', '~> 1.0'
51
+ s.add_dependency 'tilt', '~> 2.0'
52
+ s.add_dependency 'yard', '~> 0.9', '>= 0.9.24'
53
+ s.add_dependency 'yard-activesupport-concern', '~> 0.0'
54
+ s.add_dependency 'yard-solargraph', '~> 0.1'
53
55
 
54
56
  s.add_development_dependency 'pry', '~> 0.15'
55
57
  s.add_development_dependency 'public_suffix', '~> 3.1'
@@ -61,6 +63,7 @@ Gem::Specification.new do |s|
61
63
  #
62
64
  # even more specific on RuboCop itself, which is written into _todo
63
65
  # file.
66
+ s.add_development_dependency 'overcommit', '~> 0.68.0'
64
67
  s.add_development_dependency 'rubocop', '~> 1.80.0.0'
65
68
  s.add_development_dependency 'rubocop-rake', '~> 0.7.1'
66
69
  s.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
@@ -68,7 +71,6 @@ Gem::Specification.new do |s|
68
71
  s.add_development_dependency 'simplecov', '~> 0.21'
69
72
  s.add_development_dependency 'simplecov-lcov', '~> 0.8'
70
73
  s.add_development_dependency 'undercover', '~> 0.7'
71
- s.add_development_dependency 'overcommit', '~> 0.68.0'
72
74
  s.add_development_dependency 'webmock', '~> 3.6'
73
75
  # work around missing yard dependency needed as of Ruby 3.5
74
76
  s.add_development_dependency 'irb', '~> 1.15'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.3
4
+ version: 0.59.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-03-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ast
@@ -156,33 +156,33 @@ dependencies:
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0.1'
158
158
  - !ruby/object:Gem::Dependency
159
- name: ostruct
159
+ name: open3
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  requirements:
162
162
  - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: '0.6'
164
+ version: 0.2.1
165
165
  type: :runtime
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
169
  - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: '0.6'
171
+ version: 0.2.1
172
172
  - !ruby/object:Gem::Dependency
173
- name: open3
173
+ name: ostruct
174
174
  requirement: !ruby/object:Gem::Requirement
175
175
  requirements:
176
176
  - - "~>"
177
177
  - !ruby/object:Gem::Version
178
- version: 0.2.1
178
+ version: '0.6'
179
179
  type: :runtime
180
180
  prerelease: false
181
181
  version_requirements: !ruby/object:Gem::Requirement
182
182
  requirements:
183
183
  - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: 0.2.1
185
+ version: '0.6'
186
186
  - !ruby/object:Gem::Dependency
187
187
  name: parser
188
188
  requirement: !ruby/object:Gem::Requirement
@@ -217,20 +217,14 @@ dependencies:
217
217
  requirements:
218
218
  - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: 3.6.1
221
- - - "<="
222
- - !ruby/object:Gem::Version
223
- version: 4.0.0.dev.4
220
+ version: 3.10.0
224
221
  type: :runtime
225
222
  prerelease: false
226
223
  version_requirements: !ruby/object:Gem::Requirement
227
224
  requirements:
228
225
  - - ">="
229
226
  - !ruby/object:Gem::Version
230
- version: 3.6.1
231
- - - "<="
232
- - !ruby/object:Gem::Version
233
- version: 4.0.0.dev.4
227
+ version: 3.10.0
234
228
  - !ruby/object:Gem::Dependency
235
229
  name: reverse_markdown
236
230
  requirement: !ruby/object:Gem::Requirement
@@ -308,33 +302,33 @@ dependencies:
308
302
  - !ruby/object:Gem::Version
309
303
  version: 0.9.24
310
304
  - !ruby/object:Gem::Dependency
311
- name: yard-solargraph
305
+ name: yard-activesupport-concern
312
306
  requirement: !ruby/object:Gem::Requirement
313
307
  requirements:
314
308
  - - "~>"
315
309
  - !ruby/object:Gem::Version
316
- version: '0.1'
310
+ version: '0.0'
317
311
  type: :runtime
318
312
  prerelease: false
319
313
  version_requirements: !ruby/object:Gem::Requirement
320
314
  requirements:
321
315
  - - "~>"
322
316
  - !ruby/object:Gem::Version
323
- version: '0.1'
317
+ version: '0.0'
324
318
  - !ruby/object:Gem::Dependency
325
- name: yard-activesupport-concern
319
+ name: yard-solargraph
326
320
  requirement: !ruby/object:Gem::Requirement
327
321
  requirements:
328
322
  - - "~>"
329
323
  - !ruby/object:Gem::Version
330
- version: '0.0'
324
+ version: '0.1'
331
325
  type: :runtime
332
326
  prerelease: false
333
327
  version_requirements: !ruby/object:Gem::Requirement
334
328
  requirements:
335
329
  - - "~>"
336
330
  - !ruby/object:Gem::Version
337
- version: '0.0'
331
+ version: '0.1'
338
332
  - !ruby/object:Gem::Dependency
339
333
  name: pry
340
334
  requirement: !ruby/object:Gem::Requirement
@@ -391,6 +385,20 @@ dependencies:
391
385
  - - "~>"
392
386
  - !ruby/object:Gem::Version
393
387
  version: '3.5'
388
+ - !ruby/object:Gem::Dependency
389
+ name: overcommit
390
+ requirement: !ruby/object:Gem::Requirement
391
+ requirements:
392
+ - - "~>"
393
+ - !ruby/object:Gem::Version
394
+ version: 0.68.0
395
+ type: :development
396
+ prerelease: false
397
+ version_requirements: !ruby/object:Gem::Requirement
398
+ requirements:
399
+ - - "~>"
400
+ - !ruby/object:Gem::Version
401
+ version: 0.68.0
394
402
  - !ruby/object:Gem::Dependency
395
403
  name: rubocop
396
404
  requirement: !ruby/object:Gem::Requirement
@@ -489,20 +497,6 @@ dependencies:
489
497
  - - "~>"
490
498
  - !ruby/object:Gem::Version
491
499
  version: '0.7'
492
- - !ruby/object:Gem::Dependency
493
- name: overcommit
494
- requirement: !ruby/object:Gem::Requirement
495
- requirements:
496
- - - "~>"
497
- - !ruby/object:Gem::Version
498
- version: 0.68.0
499
- type: :development
500
- prerelease: false
501
- version_requirements: !ruby/object:Gem::Requirement
502
- requirements:
503
- - - "~>"
504
- - !ruby/object:Gem::Version
505
- version: 0.68.0
506
500
  - !ruby/object:Gem::Dependency
507
501
  name: webmock
508
502
  requirement: !ruby/object:Gem::Requirement
@@ -538,6 +532,7 @@ executables:
538
532
  extensions: []
539
533
  extra_rdoc_files: []
540
534
  files:
535
+ - ".envrc"
541
536
  - ".gitattributes"
542
537
  - ".github/FUNDING.yml"
543
538
  - ".github/workflows/linting.yml"
@@ -566,6 +561,7 @@ files:
566
561
  - lib/solargraph/api_map/store.rb
567
562
  - lib/solargraph/bench.rb
568
563
  - lib/solargraph/complex_type.rb
564
+ - lib/solargraph/complex_type/conformance.rb
569
565
  - lib/solargraph/complex_type/type_methods.rb
570
566
  - lib/solargraph/complex_type/unique_type.rb
571
567
  - lib/solargraph/convention.rb
@@ -688,12 +684,14 @@ files:
688
684
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
689
685
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
690
686
  - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
687
+ - lib/solargraph/parser/parser_gem/node_processors/or_node.rb
691
688
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
692
689
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
693
690
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
694
691
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
695
692
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
696
693
  - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
694
+ - lib/solargraph/parser/parser_gem/node_processors/when_node.rb
697
695
  - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
698
696
  - lib/solargraph/parser/region.rb
699
697
  - lib/solargraph/parser/snippet.rb
@@ -706,6 +704,7 @@ files:
706
704
  - lib/solargraph/pin/class_variable.rb
707
705
  - lib/solargraph/pin/closure.rb
708
706
  - lib/solargraph/pin/common.rb
707
+ - lib/solargraph/pin/compound_statement.rb
709
708
  - lib/solargraph/pin/constant.rb
710
709
  - lib/solargraph/pin/conversions.rb
711
710
  - lib/solargraph/pin/delegated_method.rb
@@ -728,6 +727,7 @@ files:
728
727
  - lib/solargraph/pin/reference/prepend.rb
729
728
  - lib/solargraph/pin/reference/require.rb
730
729
  - lib/solargraph/pin/reference/superclass.rb
730
+ - lib/solargraph/pin/reference/type_alias.rb
731
731
  - lib/solargraph/pin/search.rb
732
732
  - lib/solargraph/pin/signature.rb
733
733
  - lib/solargraph/pin/singleton.rb
@@ -774,8 +774,6 @@ files:
774
774
  - lib/solargraph/source_map/data.rb
775
775
  - lib/solargraph/source_map/mapper.rb
776
776
  - lib/solargraph/type_checker.rb
777
- - lib/solargraph/type_checker/checks.rb
778
- - lib/solargraph/type_checker/param_def.rb
779
777
  - lib/solargraph/type_checker/problem.rb
780
778
  - lib/solargraph/type_checker/rules.rb
781
779
  - lib/solargraph/version.rb
@@ -788,6 +786,7 @@ files:
788
786
  - lib/solargraph/views/search.erb
789
787
  - lib/solargraph/workspace.rb
790
788
  - lib/solargraph/workspace/config.rb
789
+ - lib/solargraph/workspace/gemspecs.rb
791
790
  - lib/solargraph/workspace/require_paths.rb
792
791
  - lib/solargraph/yard_map.rb
793
792
  - lib/solargraph/yard_map/cache.rb
@@ -796,19 +795,19 @@ files:
796
795
  - lib/solargraph/yard_map/mapper/to_constant.rb
797
796
  - lib/solargraph/yard_map/mapper/to_method.rb
798
797
  - lib/solargraph/yard_map/mapper/to_namespace.rb
799
- - lib/solargraph/yard_map/to_method.rb
800
798
  - lib/solargraph/yard_tags.rb
801
799
  - lib/solargraph/yardoc.rb
802
800
  - rbs/fills/bundler/0/bundler.rbs
803
801
  - rbs/fills/open3/0/open3.rbs
804
802
  - rbs/fills/rubygems/0/basic_specification.rbs
803
+ - rbs/fills/rubygems/0/dependency.rbs
805
804
  - rbs/fills/rubygems/0/errors.rbs
806
805
  - rbs/fills/rubygems/0/spec_fetcher.rbs
807
806
  - rbs/fills/rubygems/0/specification.rbs
808
- - rbs/fills/tuple/tuple.rbs
809
807
  - rbs/shims/ast/0/node.rbs
810
808
  - rbs/shims/ast/2.4/.rbs_meta.yaml
811
809
  - rbs/shims/ast/2.4/ast.rbs
810
+ - rbs/shims/diff-lcs/1.5/diff-lcs.rbs
812
811
  - rbs/shims/parser/3.2.0.1/builders/default.rbs
813
812
  - rbs/shims/parser/3.2.0.1/manifest.yaml
814
813
  - rbs/shims/parser/3.2.0.1/parser.rbs
@@ -834,14 +833,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
834
833
  requirements:
835
834
  - - ">="
836
835
  - !ruby/object:Gem::Version
837
- version: '3.0'
836
+ version: '3.1'
838
837
  required_rubygems_version: !ruby/object:Gem::Requirement
839
838
  requirements:
840
839
  - - ">="
841
840
  - !ruby/object:Gem::Version
842
841
  version: '0'
843
842
  requirements: []
844
- rubygems_version: 3.6.7
843
+ rubygems_version: 4.0.6
845
844
  specification_version: 4
846
845
  summary: A Ruby language server
847
846
  test_files: []
@@ -1,124 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class TypeChecker
5
- # Helper methods for performing type checks
6
- #
7
- module Checks
8
- module_function
9
-
10
- # Compare an expected type with an inferred type. Common usage is to
11
- # check if the type declared in a method's @return tag matches the type
12
- # inferred from static analysis of the code.
13
- #
14
- # @param api_map [ApiMap]
15
- # @param expected [ComplexType]
16
- # @param inferred [ComplexType]
17
- # @return [Boolean]
18
- def types_match? api_map, expected, inferred
19
- return true if expected.to_s == inferred.to_s
20
- matches = []
21
- expected.each do |exp|
22
- found = false
23
- inferred.each do |inf|
24
- # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
25
- if either_way?(api_map, inf, exp)
26
- found = true
27
- matches.push inf
28
- break
29
- end
30
- end
31
- return false unless found
32
- end
33
- inferred.each do |inf|
34
- next if matches.include?(inf)
35
- found = false
36
- expected.each do |exp|
37
- # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
38
- if either_way?(api_map, inf, exp)
39
- found = true
40
- break
41
- end
42
- end
43
- return false unless found
44
- end
45
- true
46
- end
47
-
48
- # @param api_map [ApiMap]
49
- # @param expected [ComplexType]
50
- # @param inferred [ComplexType]
51
- # @return [Boolean]
52
- def any_types_match? api_map, expected, inferred
53
- expected = expected.downcast_to_literal_if_possible
54
- inferred = inferred.downcast_to_literal_if_possible
55
- return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
56
- # walk through the union expected type and see if any members
57
- # of the union match the inferred type
58
- expected.each do |exp|
59
- next if exp.duck_type?
60
- # @todo: there should be a level of typechecking where all
61
- # unique types in the inferred must match one of the
62
- # expected unique types
63
- inferred.each do |inf|
64
- # return true if exp == inf || api_map.super_and_sub?(fuzz(inf), fuzz(exp))
65
- return true if exp == inf || either_way?(api_map, inf, exp)
66
- end
67
- end
68
- false
69
- end
70
-
71
- # @param api_map [ApiMap]
72
- # @param inferred [ComplexType]
73
- # @param expected [ComplexType]
74
- # @return [Boolean]
75
- def all_types_match? api_map, inferred, expected
76
- expected = expected.downcast_to_literal_if_possible
77
- inferred = inferred.downcast_to_literal_if_possible
78
- return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
79
- inferred.each do |inf|
80
- next if inf.duck_type?
81
- return false unless expected.any? { |exp| exp == inf || either_way?(api_map, inf, exp) }
82
- end
83
- true
84
- end
85
-
86
- # @param api_map [ApiMap]
87
- # @param expected [ComplexType]
88
- # @param inferred [ComplexType]
89
- # @return [Boolean]
90
- def duck_types_match? api_map, expected, inferred
91
- raise ArgumentError, 'Expected type must be duck type' unless expected.duck_type?
92
- expected.each do |exp|
93
- next unless exp.duck_type?
94
- quack = exp.to_s[1..-1]
95
- return false if api_map.get_method_stack(inferred.namespace, quack, scope: inferred.scope).empty?
96
- end
97
- true
98
- end
99
-
100
- # @param type [ComplexType::UniqueType]
101
- # @return [String]
102
- def fuzz type
103
- if type.parameters?
104
- type.name
105
- else
106
- type.tag
107
- end
108
- end
109
-
110
- # @param api_map [ApiMap]
111
- # @param cls1 [ComplexType::UniqueType]
112
- # @param cls2 [ComplexType::UniqueType]
113
- # @return [Boolean]
114
- def either_way?(api_map, cls1, cls2)
115
- # @todo there should be a level of typechecking which uses the
116
- # full tag with parameters to determine compatibility
117
- f1 = cls1.name
118
- f2 = cls2.name
119
- api_map.type_include?(f1, f2) || api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
120
- # api_map.type_include?(f1, f2) || api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
121
- end
122
- end
123
- end
124
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class TypeChecker
5
- # Data about a method parameter definition. This is the information from
6
- # the args list in the def call, not the `@param` tags.
7
- #
8
- class ParamDef
9
- # @return [String]
10
- attr_reader :name
11
-
12
- # @return [Symbol]
13
- attr_reader :type
14
-
15
- # @param name [String]
16
- # @param type [Symbol] The type of parameter, such as :req, :opt, :rest, etc.
17
- def initialize name, type
18
- @name = name
19
- @type = type
20
- end
21
-
22
- class << self
23
- # Get an array of ParamDefs from a method pin.
24
- #
25
- # @param pin [Solargraph::Pin::Method]
26
- # @return [Array<ParamDef>]
27
- def from pin
28
- result = []
29
- pin.parameters.each do |par|
30
- result.push ParamDef.new(par.name, par.decl)
31
- end
32
- result
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,89 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class YardMap
5
- class ToMethod
6
- module InnerMethods
7
- module_function
8
-
9
- # @param code_object [YARD::CodeObjects::Base]
10
- # @param location [Solargraph::Location]
11
- # @param comments [String]
12
- # @return [Array<Solargraph::Pin::Parameter>]
13
- def get_parameters code_object, location, comments
14
- return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
15
- # HACK: Skip `nil` and `self` parameters that are sometimes emitted
16
- # for methods defined in C
17
- # See https://github.com/castwide/solargraph/issues/345
18
- # @sg-ignore https://github.com/castwide/solargraph/pull/1114
19
- code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
20
- Solargraph::Pin::Parameter.new(
21
- location: location,
22
- closure: self,
23
- comments: comments,
24
- name: arg_name(a),
25
- presence: nil,
26
- decl: arg_type(a),
27
- asgn_code: a[1],
28
- source: :yard_map
29
- )
30
- end
31
- end
32
-
33
- # @param a [Array<String>]
34
- # @return [String]
35
- def arg_name a
36
- a[0].gsub(/[^a-z0-9_]/i, '')
37
- end
38
-
39
- # @param a [Array]
40
- # @return [::Symbol]
41
- def arg_type a
42
- if a[0].start_with?('**')
43
- :kwrestarg
44
- elsif a[0].start_with?('*')
45
- :restarg
46
- elsif a[0].start_with?('&')
47
- :blockarg
48
- elsif a[0].end_with?(':')
49
- a[1] ? :kwoptarg : :kwarg
50
- elsif a[1]
51
- :optarg
52
- else
53
- :arg
54
- end
55
- end
56
- end
57
- private_constant :InnerMethods
58
-
59
- include Helpers
60
-
61
- # @param code_object [YARD::CodeObjects::MethodObject]
62
- # @param name [String, nil]
63
- # @param scope [Symbol, nil]
64
- # @param visibility [Symbol, nil]
65
- # @param closure [Solargraph::Pin::Base, nil]
66
- # @param spec [Solargraph::Pin::Base, nil]
67
- # @return [Solargraph::Pin::Method]
68
- def make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
69
- closure ||= Solargraph::Pin::Namespace.new(
70
- name: code_object.namespace.to_s,
71
- gates: [code_object.namespace.to_s]
72
- )
73
- location = object_location(code_object, spec)
74
- comments = code_object.docstring ? code_object.docstring.all.to_s : ''
75
- Pin::Method.new(
76
- location: location,
77
- closure: closure,
78
- name: name || code_object.name.to_s,
79
- comments: comments,
80
- scope: scope || code_object.scope,
81
- visibility: visibility || code_object.visibility,
82
- parameters: InnerMethods.get_parameters(code_object, location, comments),
83
- explicit: code_object.is_explicit?,
84
- source: :yard_map
85
- )
86
- end
87
- end
88
- end
89
- end