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
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.0
4
+ version: 0.59.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-01 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,8 @@ executables:
538
532
  extensions: []
539
533
  extra_rdoc_files: []
540
534
  files:
535
+ - ".envrc"
536
+ - ".gitattributes"
541
537
  - ".github/FUNDING.yml"
542
538
  - ".github/workflows/linting.yml"
543
539
  - ".github/workflows/plugins.yml"
@@ -565,6 +561,7 @@ files:
565
561
  - lib/solargraph/api_map/store.rb
566
562
  - lib/solargraph/bench.rb
567
563
  - lib/solargraph/complex_type.rb
564
+ - lib/solargraph/complex_type/conformance.rb
568
565
  - lib/solargraph/complex_type/type_methods.rb
569
566
  - lib/solargraph/complex_type/unique_type.rb
570
567
  - lib/solargraph/convention.rb
@@ -687,12 +684,14 @@ files:
687
684
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
688
685
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
689
686
  - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
687
+ - lib/solargraph/parser/parser_gem/node_processors/or_node.rb
690
688
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
691
689
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
692
690
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
693
691
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
694
692
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
695
693
  - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
694
+ - lib/solargraph/parser/parser_gem/node_processors/when_node.rb
696
695
  - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
697
696
  - lib/solargraph/parser/region.rb
698
697
  - lib/solargraph/parser/snippet.rb
@@ -705,6 +704,7 @@ files:
705
704
  - lib/solargraph/pin/class_variable.rb
706
705
  - lib/solargraph/pin/closure.rb
707
706
  - lib/solargraph/pin/common.rb
707
+ - lib/solargraph/pin/compound_statement.rb
708
708
  - lib/solargraph/pin/constant.rb
709
709
  - lib/solargraph/pin/conversions.rb
710
710
  - lib/solargraph/pin/delegated_method.rb
@@ -727,6 +727,7 @@ files:
727
727
  - lib/solargraph/pin/reference/prepend.rb
728
728
  - lib/solargraph/pin/reference/require.rb
729
729
  - lib/solargraph/pin/reference/superclass.rb
730
+ - lib/solargraph/pin/reference/type_alias.rb
730
731
  - lib/solargraph/pin/search.rb
731
732
  - lib/solargraph/pin/signature.rb
732
733
  - lib/solargraph/pin/singleton.rb
@@ -773,8 +774,6 @@ files:
773
774
  - lib/solargraph/source_map/data.rb
774
775
  - lib/solargraph/source_map/mapper.rb
775
776
  - lib/solargraph/type_checker.rb
776
- - lib/solargraph/type_checker/checks.rb
777
- - lib/solargraph/type_checker/param_def.rb
778
777
  - lib/solargraph/type_checker/problem.rb
779
778
  - lib/solargraph/type_checker/rules.rb
780
779
  - lib/solargraph/version.rb
@@ -787,6 +786,7 @@ files:
787
786
  - lib/solargraph/views/search.erb
788
787
  - lib/solargraph/workspace.rb
789
788
  - lib/solargraph/workspace/config.rb
789
+ - lib/solargraph/workspace/gemspecs.rb
790
790
  - lib/solargraph/workspace/require_paths.rb
791
791
  - lib/solargraph/yard_map.rb
792
792
  - lib/solargraph/yard_map/cache.rb
@@ -795,27 +795,28 @@ files:
795
795
  - lib/solargraph/yard_map/mapper/to_constant.rb
796
796
  - lib/solargraph/yard_map/mapper/to_method.rb
797
797
  - lib/solargraph/yard_map/mapper/to_namespace.rb
798
- - lib/solargraph/yard_map/to_method.rb
799
798
  - lib/solargraph/yard_tags.rb
800
799
  - lib/solargraph/yardoc.rb
801
800
  - rbs/fills/bundler/0/bundler.rbs
802
801
  - rbs/fills/open3/0/open3.rbs
803
802
  - rbs/fills/rubygems/0/basic_specification.rbs
803
+ - rbs/fills/rubygems/0/dependency.rbs
804
804
  - rbs/fills/rubygems/0/errors.rbs
805
805
  - rbs/fills/rubygems/0/spec_fetcher.rbs
806
806
  - rbs/fills/rubygems/0/specification.rbs
807
807
  - rbs/fills/tuple/tuple.rbs
808
+ - rbs/shims/ast/0/node.rbs
809
+ - rbs/shims/ast/2.4/.rbs_meta.yaml
810
+ - rbs/shims/ast/2.4/ast.rbs
811
+ - rbs/shims/diff-lcs/1.5/diff-lcs.rbs
812
+ - rbs/shims/parser/3.2.0.1/builders/default.rbs
813
+ - rbs/shims/parser/3.2.0.1/manifest.yaml
814
+ - rbs/shims/parser/3.2.0.1/parser.rbs
815
+ - rbs/shims/parser/3.2.0.1/polyfill.rbs
816
+ - rbs/shims/thor/1.2.0.1/.rbs_meta.yaml
817
+ - rbs/shims/thor/1.2.0.1/manifest.yaml
818
+ - rbs/shims/thor/1.2.0.1/thor.rbs
808
819
  - rbs_collection.yaml
809
- - sig/shims/ast/0/node.rbs
810
- - sig/shims/ast/2.4/.rbs_meta.yaml
811
- - sig/shims/ast/2.4/ast.rbs
812
- - sig/shims/parser/3.2.0.1/builders/default.rbs
813
- - sig/shims/parser/3.2.0.1/manifest.yaml
814
- - sig/shims/parser/3.2.0.1/parser.rbs
815
- - sig/shims/parser/3.2.0.1/polyfill.rbs
816
- - sig/shims/thor/1.2.0.1/.rbs_meta.yaml
817
- - sig/shims/thor/1.2.0.1/manifest.yaml
818
- - sig/shims/thor/1.2.0.1/thor.rbs
819
820
  - solargraph.gemspec
820
821
  homepage: https://solargraph.org
821
822
  licenses:
@@ -833,14 +834,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
833
834
  requirements:
834
835
  - - ">="
835
836
  - !ruby/object:Gem::Version
836
- version: '3.0'
837
+ version: '3.1'
837
838
  required_rubygems_version: !ruby/object:Gem::Requirement
838
839
  requirements:
839
840
  - - ">="
840
841
  - !ruby/object:Gem::Version
841
842
  version: '0'
842
843
  requirements: []
843
- rubygems_version: 3.6.7
844
+ rubygems_version: 4.0.6
844
845
  specification_version: 4
845
846
  summary: A Ruby language server
846
847
  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
@@ -1,5 +0,0 @@
1
- module ::AST
2
- class Node
3
- def children: () -> [self, Integer, String, Symbol, nil]
4
- end
5
- end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes