solargraph 0.58.2 → 0.59.0.dev.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 (203) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.github/workflows/linting.yml +4 -5
  4. data/.github/workflows/plugins.yml +41 -34
  5. data/.github/workflows/rspec.yml +44 -23
  6. data/.github/workflows/typecheck.yml +2 -2
  7. data/.rubocop.yml +32 -5
  8. data/.rubocop_todo.yml +50 -966
  9. data/Gemfile +3 -1
  10. data/README.md +3 -3
  11. data/Rakefile +26 -23
  12. data/bin/solargraph +2 -1
  13. data/lib/solargraph/api_map/cache.rb +3 -3
  14. data/lib/solargraph/api_map/constants.rb +13 -3
  15. data/lib/solargraph/api_map/index.rb +23 -18
  16. data/lib/solargraph/api_map/source_to_yard.rb +22 -9
  17. data/lib/solargraph/api_map/store.rb +33 -28
  18. data/lib/solargraph/api_map.rb +150 -82
  19. data/lib/solargraph/bench.rb +44 -45
  20. data/lib/solargraph/complex_type/conformance.rb +176 -0
  21. data/lib/solargraph/complex_type/type_methods.rb +28 -17
  22. data/lib/solargraph/complex_type/unique_type.rb +218 -57
  23. data/lib/solargraph/complex_type.rb +170 -57
  24. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  25. data/lib/solargraph/convention/data_definition/data_definition_node.rb +7 -5
  26. data/lib/solargraph/convention/data_definition.rb +5 -2
  27. data/lib/solargraph/convention/gemfile.rb +15 -15
  28. data/lib/solargraph/convention/gemspec.rb +23 -23
  29. data/lib/solargraph/convention/rakefile.rb +17 -17
  30. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +2 -1
  31. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +4 -3
  32. data/lib/solargraph/convention/struct_definition.rb +8 -4
  33. data/lib/solargraph/convention.rb +78 -78
  34. data/lib/solargraph/converters/dd.rb +19 -17
  35. data/lib/solargraph/converters/dl.rb +17 -15
  36. data/lib/solargraph/converters/dt.rb +17 -15
  37. data/lib/solargraph/converters/misc.rb +3 -1
  38. data/lib/solargraph/diagnostics/require_not_found.rb +1 -0
  39. data/lib/solargraph/diagnostics/rubocop.rb +11 -10
  40. data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
  41. data/lib/solargraph/diagnostics/type_check.rb +11 -10
  42. data/lib/solargraph/diagnostics/update_errors.rb +37 -41
  43. data/lib/solargraph/doc_map.rb +133 -373
  44. data/lib/solargraph/equality.rb +4 -4
  45. data/lib/solargraph/gem_pins.rb +21 -20
  46. data/lib/solargraph/language_server/error_codes.rb +20 -20
  47. data/lib/solargraph/language_server/host/diagnoser.rb +1 -1
  48. data/lib/solargraph/language_server/host/dispatch.rb +3 -3
  49. data/lib/solargraph/language_server/host/message_worker.rb +4 -3
  50. data/lib/solargraph/language_server/host/sources.rb +2 -1
  51. data/lib/solargraph/language_server/host.rb +30 -22
  52. data/lib/solargraph/language_server/message/base.rb +97 -97
  53. data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
  54. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
  55. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +12 -18
  56. data/lib/solargraph/language_server/message/extended/document.rb +1 -0
  57. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  58. data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
  59. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  60. data/lib/solargraph/language_server/message/initialize.rb +197 -191
  61. data/lib/solargraph/language_server/message/text_document/completion.rb +10 -8
  62. data/lib/solargraph/language_server/message/text_document/definition.rb +41 -32
  63. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
  64. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -19
  65. data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -6
  66. data/lib/solargraph/language_server/message/text_document/hover.rb +5 -5
  67. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
  68. data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
  69. data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
  70. data/lib/solargraph/language_server/message/text_document/signature_help.rb +3 -2
  71. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -17
  72. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
  73. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
  74. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
  75. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
  76. data/lib/solargraph/language_server/message.rb +94 -94
  77. data/lib/solargraph/language_server/request.rb +29 -27
  78. data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
  79. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  80. data/lib/solargraph/library.rb +85 -44
  81. data/lib/solargraph/location.rb +17 -14
  82. data/lib/solargraph/logging.rb +24 -4
  83. data/lib/solargraph/page.rb +92 -92
  84. data/lib/solargraph/parser/comment_ripper.rb +19 -4
  85. data/lib/solargraph/parser/flow_sensitive_typing.rb +326 -108
  86. data/lib/solargraph/parser/node_processor/base.rb +34 -4
  87. data/lib/solargraph/parser/node_processor.rb +8 -7
  88. data/lib/solargraph/parser/parser_gem/class_methods.rb +32 -14
  89. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  90. data/lib/solargraph/parser/parser_gem/node_chainer.rb +50 -25
  91. data/lib/solargraph/parser/parser_gem/node_methods.rb +91 -70
  92. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +4 -4
  93. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +13 -11
  94. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +9 -0
  95. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +12 -12
  96. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
  97. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
  98. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +36 -6
  99. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +5 -3
  100. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +1 -0
  101. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +3 -1
  102. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +3 -3
  103. data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
  104. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -1
  105. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
  106. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -5
  107. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +124 -113
  108. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  109. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
  110. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +6 -2
  111. data/lib/solargraph/parser/parser_gem/node_processors.rb +4 -0
  112. data/lib/solargraph/parser/parser_gem.rb +14 -12
  113. data/lib/solargraph/parser/region.rb +9 -3
  114. data/lib/solargraph/parser/snippet.rb +3 -1
  115. data/lib/solargraph/parser.rb +25 -23
  116. data/lib/solargraph/pin/base.rb +126 -80
  117. data/lib/solargraph/pin/base_variable.rb +273 -24
  118. data/lib/solargraph/pin/block.rb +29 -6
  119. data/lib/solargraph/pin/breakable.rb +7 -1
  120. data/lib/solargraph/pin/callable.rb +65 -21
  121. data/lib/solargraph/pin/closure.rb +7 -10
  122. data/lib/solargraph/pin/common.rb +24 -6
  123. data/lib/solargraph/pin/compound_statement.rb +55 -0
  124. data/lib/solargraph/pin/constant.rb +43 -45
  125. data/lib/solargraph/pin/conversions.rb +10 -4
  126. data/lib/solargraph/pin/delegated_method.rb +19 -8
  127. data/lib/solargraph/pin/documenting.rb +4 -2
  128. data/lib/solargraph/pin/instance_variable.rb +5 -1
  129. data/lib/solargraph/pin/keyword.rb +0 -4
  130. data/lib/solargraph/pin/local_variable.rb +15 -59
  131. data/lib/solargraph/pin/method.rb +153 -104
  132. data/lib/solargraph/pin/method_alias.rb +8 -0
  133. data/lib/solargraph/pin/namespace.rb +19 -12
  134. data/lib/solargraph/pin/parameter.rb +100 -36
  135. data/lib/solargraph/pin/proxy_type.rb +4 -1
  136. data/lib/solargraph/pin/reference/override.rb +1 -1
  137. data/lib/solargraph/pin/reference/superclass.rb +2 -0
  138. data/lib/solargraph/pin/reference.rb +19 -0
  139. data/lib/solargraph/pin/search.rb +3 -2
  140. data/lib/solargraph/pin/signature.rb +15 -12
  141. data/lib/solargraph/pin/symbol.rb +2 -1
  142. data/lib/solargraph/pin/until.rb +2 -4
  143. data/lib/solargraph/pin/while.rb +2 -4
  144. data/lib/solargraph/pin.rb +2 -0
  145. data/lib/solargraph/pin_cache.rb +490 -73
  146. data/lib/solargraph/position.rb +14 -10
  147. data/lib/solargraph/range.rb +16 -15
  148. data/lib/solargraph/rbs_map/conversions.rb +343 -214
  149. data/lib/solargraph/rbs_map/core_fills.rb +91 -84
  150. data/lib/solargraph/rbs_map/core_map.rb +24 -17
  151. data/lib/solargraph/rbs_map/stdlib_map.rb +33 -5
  152. data/lib/solargraph/rbs_map.rb +77 -32
  153. data/lib/solargraph/server_methods.rb +16 -16
  154. data/lib/solargraph/shell.rb +128 -73
  155. data/lib/solargraph/source/chain/array.rb +39 -37
  156. data/lib/solargraph/source/chain/call.rb +96 -56
  157. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  158. data/lib/solargraph/source/chain/constant.rb +5 -1
  159. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  160. data/lib/solargraph/source/chain/hash.rb +8 -5
  161. data/lib/solargraph/source/chain/if.rb +12 -10
  162. data/lib/solargraph/source/chain/instance_variable.rb +24 -1
  163. data/lib/solargraph/source/chain/link.rb +99 -109
  164. data/lib/solargraph/source/chain/literal.rb +9 -6
  165. data/lib/solargraph/source/chain/or.rb +10 -4
  166. data/lib/solargraph/source/chain/q_call.rb +13 -11
  167. data/lib/solargraph/source/chain/variable.rb +15 -13
  168. data/lib/solargraph/source/chain/z_super.rb +28 -30
  169. data/lib/solargraph/source/chain.rb +49 -38
  170. data/lib/solargraph/source/change.rb +12 -5
  171. data/lib/solargraph/source/cursor.rb +23 -17
  172. data/lib/solargraph/source/encoding_fixes.rb +6 -7
  173. data/lib/solargraph/source/source_chainer.rb +56 -32
  174. data/lib/solargraph/source/updater.rb +5 -1
  175. data/lib/solargraph/source.rb +59 -35
  176. data/lib/solargraph/source_map/clip.rb +48 -29
  177. data/lib/solargraph/source_map/data.rb +4 -1
  178. data/lib/solargraph/source_map/mapper.rb +71 -42
  179. data/lib/solargraph/source_map.rb +21 -9
  180. data/lib/solargraph/type_checker/problem.rb +3 -1
  181. data/lib/solargraph/type_checker/rules.rb +81 -8
  182. data/lib/solargraph/type_checker.rb +195 -120
  183. data/lib/solargraph/version.rb +1 -1
  184. data/lib/solargraph/workspace/config.rb +13 -10
  185. data/lib/solargraph/workspace/gemspecs.rb +367 -0
  186. data/lib/solargraph/workspace/require_paths.rb +1 -0
  187. data/lib/solargraph/workspace.rb +149 -30
  188. data/lib/solargraph/yard_map/helpers.rb +8 -3
  189. data/lib/solargraph/yard_map/mapper/to_method.rb +13 -7
  190. data/lib/solargraph/yard_map/mapper/to_namespace.rb +2 -1
  191. data/lib/solargraph/yard_map/mapper.rb +13 -8
  192. data/lib/solargraph/yard_tags.rb +20 -20
  193. data/lib/solargraph/yardoc.rb +33 -23
  194. data/lib/solargraph.rb +29 -8
  195. data/rbs/fills/rubygems/0/dependency.rbs +193 -0
  196. data/rbs/fills/tuple/tuple.rbs +28 -0
  197. data/rbs/shims/ast/0/node.rbs +1 -1
  198. data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
  199. data/solargraph.gemspec +36 -34
  200. metadata +38 -33
  201. data/lib/solargraph/type_checker/checks.rb +0 -124
  202. data/lib/solargraph/type_checker/param_def.rb +0 -37
  203. data/lib/solargraph/yard_map/to_method.rb +0 -89
@@ -0,0 +1,193 @@
1
+ # <!-- rdoc-file=lib/rubygems/dependency.rb -->
2
+ # The Dependency class holds a Gem name and a Gem::Requirement.
3
+ #
4
+ class Gem::Dependency
5
+ @name: untyped
6
+
7
+ @requirement: untyped
8
+
9
+ @type: untyped
10
+
11
+ @prerelease: untyped
12
+
13
+ @version_requirements: untyped
14
+
15
+ @version_requirement: untyped
16
+
17
+ # <!-- rdoc-file=lib/rubygems/dependency.rb -->
18
+ # Valid dependency types.
19
+ #
20
+ TYPES: ::Array[:development | :runtime]
21
+
22
+ # <!-- rdoc-file=lib/rubygems/dependency.rb -->
23
+ # Dependency name or regular expression.
24
+ #
25
+ attr_accessor name: untyped
26
+
27
+ # <!-- rdoc-file=lib/rubygems/dependency.rb -->
28
+ # Allows you to force this dependency to be a prerelease.
29
+ #
30
+ attr_writer prerelease: untyped
31
+
32
+ # <!--
33
+ # rdoc-file=lib/rubygems/dependency.rb
34
+ # - new(name, *requirements)
35
+ # -->
36
+ # Constructs a dependency with `name` and `requirements`. The last argument can
37
+ # optionally be the dependency type, which defaults to `:runtime`.
38
+ #
39
+ def initialize: (untyped name, *untyped requirements) -> void
40
+
41
+ def hash: () -> untyped
42
+
43
+ def inspect: () -> untyped
44
+
45
+ # <!--
46
+ # rdoc-file=lib/rubygems/dependency.rb
47
+ # - prerelease?()
48
+ # -->
49
+ # Does this dependency require a prerelease?
50
+ #
51
+ def prerelease?: () -> untyped
52
+
53
+ # <!--
54
+ # rdoc-file=lib/rubygems/dependency.rb
55
+ # - latest_version?()
56
+ # -->
57
+ # Is this dependency simply asking for the latest version of a gem?
58
+ #
59
+ def latest_version?: () -> untyped
60
+
61
+ def pretty_print: (untyped q) -> untyped
62
+
63
+ # <!--
64
+ # rdoc-file=lib/rubygems/dependency.rb
65
+ # - requirement()
66
+ # -->
67
+ # What does this dependency require?
68
+ #
69
+ def requirement: () -> untyped
70
+
71
+ # <!--
72
+ # rdoc-file=lib/rubygems/dependency.rb
73
+ # - requirements_list()
74
+ # -->
75
+ #
76
+ def requirements_list: () -> untyped
77
+
78
+ def to_s: () -> ::String
79
+
80
+ # <!--
81
+ # rdoc-file=lib/rubygems/dependency.rb
82
+ # - type()
83
+ # -->
84
+ # Dependency type.
85
+ #
86
+ def type: () -> untyped
87
+
88
+ # <!--
89
+ # rdoc-file=lib/rubygems/dependency.rb
90
+ # - runtime?()
91
+ # -->
92
+ #
93
+ def runtime?: () -> untyped
94
+
95
+ def ==: (untyped other) -> untyped
96
+
97
+ # <!--
98
+ # rdoc-file=lib/rubygems/dependency.rb
99
+ # - <=>(other)
100
+ # -->
101
+ # Dependencies are ordered by name.
102
+ #
103
+ def <=>: (untyped other) -> untyped
104
+
105
+ # <!--
106
+ # rdoc-file=lib/rubygems/dependency.rb
107
+ # - =~(other)
108
+ # -->
109
+ # Uses this dependency as a pattern to compare to `other`. This dependency will
110
+ # match if the name matches the other's name, and other has only an equal
111
+ # version requirement that satisfies this dependency.
112
+ #
113
+ def =~: (untyped other) -> (nil | false | untyped)
114
+
115
+ # <!--
116
+ # rdoc-file=lib/rubygems/dependency.rb
117
+ # - ===(other)
118
+ # -->
119
+ #
120
+ alias === =~
121
+
122
+ # <!--
123
+ # rdoc-file=lib/rubygems/dependency.rb
124
+ # - dep.match? name => true or false
125
+ # - dep.match? name, version => true or false
126
+ # - dep.match? spec => true or false
127
+ # -->
128
+ # Does this dependency match the specification described by `name` and `version`
129
+ # or match `spec`?
130
+ #
131
+ # NOTE: Unlike #matches_spec? this method does not return true when the version
132
+ # is a prerelease version unless this is a prerelease dependency.
133
+ #
134
+ def match?: (untyped obj, ?untyped? version, ?bool allow_prerelease) -> (false | true | untyped)
135
+
136
+ # <!--
137
+ # rdoc-file=lib/rubygems/dependency.rb
138
+ # - matches_spec?(spec)
139
+ # -->
140
+ # Does this dependency match `spec`?
141
+ #
142
+ # NOTE: This is not a convenience method. Unlike #match? this method returns
143
+ # true when `spec` is a prerelease version even if this dependency is not a
144
+ # prerelease dependency.
145
+ #
146
+ def matches_spec?: (untyped spec) -> (false | true | untyped)
147
+
148
+ # <!--
149
+ # rdoc-file=lib/rubygems/dependency.rb
150
+ # - merge(other)
151
+ # -->
152
+ # Merges the requirements of `other` into this dependency
153
+ #
154
+ def merge: (untyped other) -> untyped
155
+
156
+ # <!--
157
+ # rdoc-file=lib/rubygems/dependency.rb
158
+ # - matching_specs(platform_only = false)
159
+ # -->
160
+ #
161
+ def matching_specs: (?bool platform_only) -> untyped
162
+
163
+ # <!--
164
+ # rdoc-file=lib/rubygems/dependency.rb
165
+ # - specific?()
166
+ # -->
167
+ # True if the dependency will not always match the latest version.
168
+ #
169
+ def specific?: () -> untyped
170
+
171
+ # <!--
172
+ # rdoc-file=lib/rubygems/dependency.rb
173
+ # - to_specs()
174
+ # -->
175
+ #
176
+ def to_specs: () -> untyped
177
+
178
+ # <!--
179
+ # rdoc-file=lib/rubygems/dependency.rb
180
+ # - to_spec()
181
+ # -->
182
+ #
183
+ def to_spec: () -> untyped
184
+
185
+ # <!--
186
+ # rdoc-file=lib/rubygems/dependency.rb
187
+ # - identity()
188
+ # -->
189
+ #
190
+ def identity: () -> (:complete | :abs_latest | :latest | :released)
191
+
192
+ def encode_with: (untyped coder) -> untyped
193
+ end
@@ -144,6 +144,34 @@ module Solargraph
144
144
  | [T] (8 index) { (int index) -> T } -> (I | T)
145
145
  | [T] (9 index) { (int index) -> T } -> (J | T)
146
146
  | [T] (int index) { (int index) -> T } -> (A | B | C | D | E | F | G | H | I | J | T)
147
+
148
+ # <!--
149
+ # rdoc-file=array.rb
150
+ # - first -> object or nil
151
+ # - first(count) -> new_array
152
+ # -->
153
+ # Returns elements from `self`, or `nil`; does not modify `self`.
154
+ #
155
+ # With no argument given, returns the first element (if available):
156
+ #
157
+ # a = [:foo, 'bar', 2]
158
+ # a.first # => :foo
159
+ # a # => [:foo, "bar", 2]
160
+ #
161
+ # If `self` is empty, returns `nil`.
162
+ #
163
+ # [].first # => nil
164
+ #
165
+ # With a non-negative integer argument `count` given, returns the first `count`
166
+ # elements (as available) in a new array:
167
+ #
168
+ # a.first(0) # => []
169
+ # a.first(2) # => [:foo, "bar"]
170
+ # a.first(50) # => [:foo, "bar", 2]
171
+ #
172
+ # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
173
+ #
174
+ def first: %a{implicitly-returns-nil} () -> A
147
175
  end
148
176
  end
149
177
  end
@@ -1,5 +1,5 @@
1
1
  module ::AST
2
2
  class Node
3
- def children: () -> [self, Integer, String, Symbol, nil]
3
+ def children: () -> Array[self | Integer | String | Symbol | nil]
4
4
  end
5
5
  end
@@ -0,0 +1,11 @@
1
+ module Diff
2
+ end
3
+
4
+ module Diff::LCS
5
+ def self.LCS: (Array[String], Array[String]) -> Array[String]
6
+ | (String, String) -> Array[String]
7
+ def self.diff: (Array[String], Array[String]) -> Array[Array[String]]
8
+ | (String, String) -> Array[Array[Diff::LCS::Change]]
9
+
10
+ def self.patch!: (Array[String], Array[String]) -> String
11
+ end
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
31
  s.required_ruby_version = '>= 3.0'
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.6.1', '<= 4.0.0.dev.5']
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.2
4
+ version: 0.59.0.dev.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-19 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
@@ -220,7 +220,7 @@ dependencies:
220
220
  version: 3.6.1
221
221
  - - "<="
222
222
  - !ruby/object:Gem::Version
223
- version: 4.0.0.dev.4
223
+ version: 4.0.0.dev.5
224
224
  type: :runtime
225
225
  prerelease: false
226
226
  version_requirements: !ruby/object:Gem::Requirement
@@ -230,7 +230,7 @@ dependencies:
230
230
  version: 3.6.1
231
231
  - - "<="
232
232
  - !ruby/object:Gem::Version
233
- version: 4.0.0.dev.4
233
+ version: 4.0.0.dev.5
234
234
  - !ruby/object:Gem::Dependency
235
235
  name: reverse_markdown
236
236
  requirement: !ruby/object:Gem::Requirement
@@ -308,33 +308,33 @@ dependencies:
308
308
  - !ruby/object:Gem::Version
309
309
  version: 0.9.24
310
310
  - !ruby/object:Gem::Dependency
311
- name: yard-solargraph
311
+ name: yard-activesupport-concern
312
312
  requirement: !ruby/object:Gem::Requirement
313
313
  requirements:
314
314
  - - "~>"
315
315
  - !ruby/object:Gem::Version
316
- version: '0.1'
316
+ version: '0.0'
317
317
  type: :runtime
318
318
  prerelease: false
319
319
  version_requirements: !ruby/object:Gem::Requirement
320
320
  requirements:
321
321
  - - "~>"
322
322
  - !ruby/object:Gem::Version
323
- version: '0.1'
323
+ version: '0.0'
324
324
  - !ruby/object:Gem::Dependency
325
- name: yard-activesupport-concern
325
+ name: yard-solargraph
326
326
  requirement: !ruby/object:Gem::Requirement
327
327
  requirements:
328
328
  - - "~>"
329
329
  - !ruby/object:Gem::Version
330
- version: '0.0'
330
+ version: '0.1'
331
331
  type: :runtime
332
332
  prerelease: false
333
333
  version_requirements: !ruby/object:Gem::Requirement
334
334
  requirements:
335
335
  - - "~>"
336
336
  - !ruby/object:Gem::Version
337
- version: '0.0'
337
+ version: '0.1'
338
338
  - !ruby/object:Gem::Dependency
339
339
  name: pry
340
340
  requirement: !ruby/object:Gem::Requirement
@@ -391,6 +391,20 @@ dependencies:
391
391
  - - "~>"
392
392
  - !ruby/object:Gem::Version
393
393
  version: '3.5'
394
+ - !ruby/object:Gem::Dependency
395
+ name: overcommit
396
+ requirement: !ruby/object:Gem::Requirement
397
+ requirements:
398
+ - - "~>"
399
+ - !ruby/object:Gem::Version
400
+ version: 0.68.0
401
+ type: :development
402
+ prerelease: false
403
+ version_requirements: !ruby/object:Gem::Requirement
404
+ requirements:
405
+ - - "~>"
406
+ - !ruby/object:Gem::Version
407
+ version: 0.68.0
394
408
  - !ruby/object:Gem::Dependency
395
409
  name: rubocop
396
410
  requirement: !ruby/object:Gem::Requirement
@@ -489,20 +503,6 @@ dependencies:
489
503
  - - "~>"
490
504
  - !ruby/object:Gem::Version
491
505
  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
506
  - !ruby/object:Gem::Dependency
507
507
  name: webmock
508
508
  requirement: !ruby/object:Gem::Requirement
@@ -538,6 +538,7 @@ executables:
538
538
  extensions: []
539
539
  extra_rdoc_files: []
540
540
  files:
541
+ - ".envrc"
541
542
  - ".gitattributes"
542
543
  - ".github/FUNDING.yml"
543
544
  - ".github/workflows/linting.yml"
@@ -566,6 +567,7 @@ files:
566
567
  - lib/solargraph/api_map/store.rb
567
568
  - lib/solargraph/bench.rb
568
569
  - lib/solargraph/complex_type.rb
570
+ - lib/solargraph/complex_type/conformance.rb
569
571
  - lib/solargraph/complex_type/type_methods.rb
570
572
  - lib/solargraph/complex_type/unique_type.rb
571
573
  - lib/solargraph/convention.rb
@@ -688,12 +690,14 @@ files:
688
690
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
689
691
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
690
692
  - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
693
+ - lib/solargraph/parser/parser_gem/node_processors/or_node.rb
691
694
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
692
695
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
693
696
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
694
697
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
695
698
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
696
699
  - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
700
+ - lib/solargraph/parser/parser_gem/node_processors/when_node.rb
697
701
  - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
698
702
  - lib/solargraph/parser/region.rb
699
703
  - lib/solargraph/parser/snippet.rb
@@ -706,6 +710,7 @@ files:
706
710
  - lib/solargraph/pin/class_variable.rb
707
711
  - lib/solargraph/pin/closure.rb
708
712
  - lib/solargraph/pin/common.rb
713
+ - lib/solargraph/pin/compound_statement.rb
709
714
  - lib/solargraph/pin/constant.rb
710
715
  - lib/solargraph/pin/conversions.rb
711
716
  - lib/solargraph/pin/delegated_method.rb
@@ -774,8 +779,6 @@ files:
774
779
  - lib/solargraph/source_map/data.rb
775
780
  - lib/solargraph/source_map/mapper.rb
776
781
  - lib/solargraph/type_checker.rb
777
- - lib/solargraph/type_checker/checks.rb
778
- - lib/solargraph/type_checker/param_def.rb
779
782
  - lib/solargraph/type_checker/problem.rb
780
783
  - lib/solargraph/type_checker/rules.rb
781
784
  - lib/solargraph/version.rb
@@ -788,6 +791,7 @@ files:
788
791
  - lib/solargraph/views/search.erb
789
792
  - lib/solargraph/workspace.rb
790
793
  - lib/solargraph/workspace/config.rb
794
+ - lib/solargraph/workspace/gemspecs.rb
791
795
  - lib/solargraph/workspace/require_paths.rb
792
796
  - lib/solargraph/yard_map.rb
793
797
  - lib/solargraph/yard_map/cache.rb
@@ -796,12 +800,12 @@ files:
796
800
  - lib/solargraph/yard_map/mapper/to_constant.rb
797
801
  - lib/solargraph/yard_map/mapper/to_method.rb
798
802
  - lib/solargraph/yard_map/mapper/to_namespace.rb
799
- - lib/solargraph/yard_map/to_method.rb
800
803
  - lib/solargraph/yard_tags.rb
801
804
  - lib/solargraph/yardoc.rb
802
805
  - rbs/fills/bundler/0/bundler.rbs
803
806
  - rbs/fills/open3/0/open3.rbs
804
807
  - rbs/fills/rubygems/0/basic_specification.rbs
808
+ - rbs/fills/rubygems/0/dependency.rbs
805
809
  - rbs/fills/rubygems/0/errors.rbs
806
810
  - rbs/fills/rubygems/0/spec_fetcher.rbs
807
811
  - rbs/fills/rubygems/0/specification.rbs
@@ -809,6 +813,7 @@ files:
809
813
  - rbs/shims/ast/0/node.rbs
810
814
  - rbs/shims/ast/2.4/.rbs_meta.yaml
811
815
  - rbs/shims/ast/2.4/ast.rbs
816
+ - rbs/shims/diff-lcs/1.5/diff-lcs.rbs
812
817
  - rbs/shims/parser/3.2.0.1/builders/default.rbs
813
818
  - rbs/shims/parser/3.2.0.1/manifest.yaml
814
819
  - rbs/shims/parser/3.2.0.1/parser.rbs