solargraph 0.59.0.dev.1 → 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 (169) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/plugins.yml +4 -1
  3. data/.github/workflows/rspec.yml +3 -14
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +32 -5
  6. data/.rubocop_todo.yml +37 -931
  7. data/CHANGELOG.md +7 -1
  8. data/Gemfile +3 -1
  9. data/Rakefile +25 -23
  10. data/bin/solargraph +2 -1
  11. data/lib/solargraph/api_map/index.rb +5 -11
  12. data/lib/solargraph/api_map/source_to_yard.rb +9 -8
  13. data/lib/solargraph/api_map/store.rb +22 -20
  14. data/lib/solargraph/api_map.rb +50 -37
  15. data/lib/solargraph/bench.rb +44 -45
  16. data/lib/solargraph/complex_type/type_methods.rb +12 -15
  17. data/lib/solargraph/complex_type/unique_type.rb +54 -43
  18. data/lib/solargraph/complex_type.rb +69 -61
  19. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  20. data/lib/solargraph/convention/data_definition/data_definition_node.rb +4 -4
  21. data/lib/solargraph/convention/data_definition.rb +1 -1
  22. data/lib/solargraph/convention/gemfile.rb +15 -15
  23. data/lib/solargraph/convention/gemspec.rb +23 -23
  24. data/lib/solargraph/convention/rakefile.rb +17 -17
  25. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +1 -1
  26. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +3 -3
  27. data/lib/solargraph/convention/struct_definition.rb +3 -3
  28. data/lib/solargraph/convention.rb +78 -78
  29. data/lib/solargraph/converters/dd.rb +19 -17
  30. data/lib/solargraph/converters/dl.rb +17 -15
  31. data/lib/solargraph/converters/dt.rb +17 -15
  32. data/lib/solargraph/converters/misc.rb +3 -1
  33. data/lib/solargraph/diagnostics/rubocop.rb +10 -10
  34. data/lib/solargraph/diagnostics/rubocop_helpers.rb +3 -3
  35. data/lib/solargraph/diagnostics/type_check.rb +10 -10
  36. data/lib/solargraph/diagnostics/update_errors.rb +37 -41
  37. data/lib/solargraph/doc_map.rb +9 -10
  38. data/lib/solargraph/equality.rb +3 -3
  39. data/lib/solargraph/gem_pins.rb +7 -5
  40. data/lib/solargraph/language_server/error_codes.rb +20 -20
  41. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  42. data/lib/solargraph/language_server/host/dispatch.rb +2 -3
  43. data/lib/solargraph/language_server/host/message_worker.rb +2 -2
  44. data/lib/solargraph/language_server/host/sources.rb +1 -1
  45. data/lib/solargraph/language_server/host.rb +24 -21
  46. data/lib/solargraph/language_server/message/base.rb +97 -97
  47. data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
  48. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
  49. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +10 -11
  50. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  51. data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
  52. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  53. data/lib/solargraph/language_server/message/initialize.rb +197 -191
  54. data/lib/solargraph/language_server/message/text_document/completion.rb +8 -8
  55. data/lib/solargraph/language_server/message/text_document/definition.rb +41 -34
  56. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
  57. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -21
  58. data/lib/solargraph/language_server/message/text_document/formatting.rb +6 -6
  59. data/lib/solargraph/language_server/message/text_document/hover.rb +3 -5
  60. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
  61. data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
  62. data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
  63. data/lib/solargraph/language_server/message/text_document/signature_help.rb +2 -2
  64. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -19
  65. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
  66. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
  67. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
  68. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -19
  69. data/lib/solargraph/language_server/message.rb +94 -94
  70. data/lib/solargraph/language_server/request.rb +29 -27
  71. data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
  72. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  73. data/lib/solargraph/library.rb +28 -33
  74. data/lib/solargraph/location.rb +10 -12
  75. data/lib/solargraph/logging.rb +4 -4
  76. data/lib/solargraph/page.rb +92 -92
  77. data/lib/solargraph/parser/comment_ripper.rb +12 -4
  78. data/lib/solargraph/parser/flow_sensitive_typing.rb +32 -42
  79. data/lib/solargraph/parser/node_processor/base.rb +4 -4
  80. data/lib/solargraph/parser/node_processor.rb +1 -1
  81. data/lib/solargraph/parser/parser_gem/class_methods.rb +4 -4
  82. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  83. data/lib/solargraph/parser/parser_gem/node_chainer.rb +20 -20
  84. data/lib/solargraph/parser/parser_gem/node_methods.rb +66 -65
  85. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +12 -12
  86. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +1 -1
  87. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +3 -3
  88. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
  89. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +3 -3
  90. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +2 -1
  91. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +1 -1
  92. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +3 -5
  93. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +118 -112
  94. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  95. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +1 -1
  96. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +1 -1
  97. data/lib/solargraph/parser/parser_gem.rb +14 -12
  98. data/lib/solargraph/parser/snippet.rb +2 -0
  99. data/lib/solargraph/parser.rb +25 -23
  100. data/lib/solargraph/pin/base.rb +78 -64
  101. data/lib/solargraph/pin/base_variable.rb +28 -71
  102. data/lib/solargraph/pin/block.rb +3 -2
  103. data/lib/solargraph/pin/breakable.rb +2 -0
  104. data/lib/solargraph/pin/callable.rb +23 -26
  105. data/lib/solargraph/pin/closure.rb +5 -4
  106. data/lib/solargraph/pin/common.rb +5 -2
  107. data/lib/solargraph/pin/compound_statement.rb +3 -3
  108. data/lib/solargraph/pin/constant.rb +43 -45
  109. data/lib/solargraph/pin/conversions.rb +9 -4
  110. data/lib/solargraph/pin/delegated_method.rb +4 -4
  111. data/lib/solargraph/pin/documenting.rb +3 -2
  112. data/lib/solargraph/pin/local_variable.rb +4 -4
  113. data/lib/solargraph/pin/method.rb +71 -70
  114. data/lib/solargraph/pin/namespace.rb +13 -12
  115. data/lib/solargraph/pin/parameter.rb +28 -27
  116. data/lib/solargraph/pin/proxy_type.rb +2 -0
  117. data/lib/solargraph/pin/reference.rb +17 -0
  118. data/lib/solargraph/pin/search.rb +2 -2
  119. data/lib/solargraph/pin/signature.rb +9 -14
  120. data/lib/solargraph/pin/symbol.rb +1 -0
  121. data/lib/solargraph/pin/until.rb +1 -3
  122. data/lib/solargraph/pin/while.rb +1 -3
  123. data/lib/solargraph/pin_cache.rb +16 -19
  124. data/lib/solargraph/position.rb +35 -17
  125. data/lib/solargraph/range.rb +10 -9
  126. data/lib/solargraph/rbs_map/conversions.rb +312 -206
  127. data/lib/solargraph/rbs_map/core_fills.rb +91 -84
  128. data/lib/solargraph/rbs_map/stdlib_map.rb +0 -1
  129. data/lib/solargraph/rbs_map.rb +3 -12
  130. data/lib/solargraph/server_methods.rb +16 -16
  131. data/lib/solargraph/shell.rb +63 -53
  132. data/lib/solargraph/source/chain/array.rb +39 -37
  133. data/lib/solargraph/source/chain/call.rb +49 -44
  134. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  135. data/lib/solargraph/source/chain/constant.rb +3 -1
  136. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  137. data/lib/solargraph/source/chain/hash.rb +8 -6
  138. data/lib/solargraph/source/chain/if.rb +11 -10
  139. data/lib/solargraph/source/chain/instance_variable.rb +3 -1
  140. data/lib/solargraph/source/chain/link.rb +99 -109
  141. data/lib/solargraph/source/chain/literal.rb +4 -6
  142. data/lib/solargraph/source/chain/or.rb +2 -4
  143. data/lib/solargraph/source/chain/q_call.rb +13 -11
  144. data/lib/solargraph/source/chain/variable.rb +15 -13
  145. data/lib/solargraph/source/chain/z_super.rb +28 -30
  146. data/lib/solargraph/source/chain.rb +24 -16
  147. data/lib/solargraph/source/change.rb +3 -3
  148. data/lib/solargraph/source/cursor.rb +18 -18
  149. data/lib/solargraph/source/encoding_fixes.rb +6 -7
  150. data/lib/solargraph/source/source_chainer.rb +46 -32
  151. data/lib/solargraph/source/updater.rb +1 -1
  152. data/lib/solargraph/source.rb +27 -29
  153. data/lib/solargraph/source_map/clip.rb +38 -30
  154. data/lib/solargraph/source_map/mapper.rb +52 -46
  155. data/lib/solargraph/source_map.rb +8 -4
  156. data/lib/solargraph/type_checker/rules.rb +8 -8
  157. data/lib/solargraph/type_checker.rb +95 -101
  158. data/lib/solargraph/version.rb +1 -1
  159. data/lib/solargraph/workspace/config.rb +10 -9
  160. data/lib/solargraph/workspace/gemspecs.rb +1 -1
  161. data/lib/solargraph/workspace.rb +21 -44
  162. data/lib/solargraph/yard_map/helpers.rb +6 -2
  163. data/lib/solargraph/yard_map/mapper/to_method.rb +8 -6
  164. data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -1
  165. data/lib/solargraph/yard_map/mapper.rb +12 -12
  166. data/lib/solargraph/yard_tags.rb +20 -20
  167. data/lib/solargraph.rb +5 -5
  168. data/solargraph.gemspec +35 -34
  169. metadata +28 -28
@@ -80,14 +80,6 @@ module Solargraph
80
80
  @pin_cache ||= fresh_pincache
81
81
  end
82
82
 
83
- # @param stdlib_name [String]
84
- #
85
- # @return [Array<String>]
86
- def stdlib_dependencies stdlib_name
87
- deps = RbsMap::StdlibMap.stdlib_dependencies(stdlib_name, nil) || []
88
- deps.map { |dep| dep['name'] }.compact
89
- end
90
-
91
83
  # @return [Environ]
92
84
  def global_environ
93
85
  # empty docmap, since the result needs to work in any possible
@@ -127,7 +119,7 @@ module Solargraph
127
119
 
128
120
  # @param level [Symbol]
129
121
  # @return [TypeChecker::Rules]
130
- def rules(level)
122
+ def rules level
131
123
  @rules ||= TypeChecker::Rules.new(level, config.type_checker_rules)
132
124
  end
133
125
 
@@ -147,7 +139,7 @@ module Solargraph
147
139
  includes_any = false
148
140
  sources.each do |source|
149
141
  # @sg-ignore Need to add nil check here
150
- next unless directory == "*" || config.calculated.include?(source.filename)
142
+ next unless directory == '*' || config.calculated.include?(source.filename)
151
143
 
152
144
  # @sg-ignore Need to add nil check here
153
145
  source_hash[source.filename] = source
@@ -199,7 +191,7 @@ module Solargraph
199
191
  def would_require? path
200
192
  require_paths.each do |rp|
201
193
  full = File.join rp, path
202
- return true if File.file?(full) || File.file?(full << ".rb")
194
+ return true if File.file?(full) || File.file?(full << '.rb')
203
195
  end
204
196
  false
205
197
  end
@@ -223,17 +215,15 @@ module Solargraph
223
215
 
224
216
  # @return [String, nil]
225
217
  def rbs_collection_path
226
- @gem_rbs_collection ||= read_rbs_collection_path
218
+ @rbs_collection_path ||= read_rbs_collection_path
227
219
  end
228
220
 
229
221
  # @return [String, nil]
230
222
  def rbs_collection_config_path
231
223
  @rbs_collection_config_path ||=
232
- begin
233
- unless directory.empty? || directory == '*'
234
- yaml_file = File.join(directory, 'rbs_collection.yaml')
235
- yaml_file if File.file?(yaml_file)
236
- end
224
+ unless directory.empty? || directory == '*'
225
+ yaml_file = File.join(directory, 'rbs_collection.yaml')
226
+ yaml_file if File.file?(yaml_file)
237
227
  end
238
228
  end
239
229
 
@@ -251,14 +241,6 @@ module Solargraph
251
241
  gemspecs.all_gemspecs_from_bundle
252
242
  end
253
243
 
254
- # @todo make this actually work against bundle instead of pulling
255
- # all installed gemspecs -
256
- # https://github.com/apiology/solargraph/pull/10
257
- # @return [Array<Gem::Specification>]
258
- def all_gemspecs_from_bundle
259
- Gem::Specification.to_a
260
- end
261
-
262
244
  # @param out [StringIO, IO, nil] output stream for logging
263
245
  # @param rebuild [Boolean] whether to rebuild the pins even if they are cached
264
246
  # @return [void]
@@ -278,7 +260,7 @@ module Solargraph
278
260
  # which are likely to be newer and have more pins
279
261
  pin_cache.cache_all_stdlibs(out: out, rebuild: rebuild)
280
262
 
281
- out&.puts "Documentation cached for core, standard library and gems."
263
+ out&.puts 'Documentation cached for core, standard library and gems.'
282
264
  end
283
265
 
284
266
  # Synchronize the workspace from the provided updater.
@@ -323,30 +305,25 @@ module Solargraph
323
305
  # @return [void]
324
306
  def load_sources
325
307
  source_hash.clear
326
- unless directory.empty? || directory == '*'
327
- size = config.calculated.length
328
- if config.max_files > 0 and size > config.max_files
329
- raise WorkspaceTooLargeError,
330
- "The workspace is too large to index (#{size} files, #{config.max_files} max)"
331
- end
332
- config.calculated.each do |filename|
333
- begin
334
- source_hash[filename] = Solargraph::Source.load(filename)
335
- rescue Errno::ENOENT => e
336
- Solargraph.logger.warn("Error loading #{filename}: [#{e.class}] #{e.message}")
337
- end
338
- end
308
+ return if directory.empty? || directory == '*'
309
+ size = config.calculated.length
310
+ if config.max_files.positive? && (size > config.max_files)
311
+ raise WorkspaceTooLargeError,
312
+ "The workspace is too large to index (#{size} files, #{config.max_files} max)"
313
+ end
314
+ config.calculated.each do |filename|
315
+ source_hash[filename] = Solargraph::Source.load(filename)
316
+ rescue Errno::ENOENT => e
317
+ Solargraph.logger.warn("Error loading #{filename}: [#{e.class}] #{e.message}")
339
318
  end
340
319
  end
341
320
 
342
321
  # @return [void]
343
322
  def require_plugins
344
323
  config.plugins.each do |plugin|
345
- begin
346
- require plugin
347
- rescue LoadError
348
- Solargraph.logger.warn "Failed to load plugin '#{plugin}'"
349
- end
324
+ require plugin
325
+ rescue LoadError
326
+ Solargraph.logger.warn "Failed to load plugin '#{plugin}'"
350
327
  end
351
328
  end
352
329
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solargraph
2
4
  class YardMap
3
5
  module Helpers
@@ -22,10 +24,12 @@ module Solargraph
22
24
  # @param code_object [YARD::CodeObjects::Base]
23
25
  # @param spec [Gem::Specification, nil]
24
26
  # @return [Solargraph::Pin::Namespace]
25
- def create_closure_namespace_for(code_object, spec)
27
+ def create_closure_namespace_for code_object, spec
26
28
  code_object_for_location = code_object
27
29
  # code_object.namespace is sometimes a YARD proxy object pointing to a method path ("Object#new")
28
- code_object_for_location = code_object.namespace if code_object.namespace.is_a?(YARD::CodeObjects::NamespaceObject)
30
+ if code_object.namespace.is_a?(YARD::CodeObjects::NamespaceObject)
31
+ code_object_for_location = code_object.namespace
32
+ end
29
33
  namespace_location = object_location(code_object_for_location, spec)
30
34
  ns_name = code_object.namespace.to_s
31
35
  if ns_name.empty?
@@ -9,8 +9,8 @@ module Solargraph
9
9
  # @type [Hash{Array<String, Symbol, String> => Symbol}]
10
10
  VISIBILITY_OVERRIDE = {
11
11
  # YARD pays attention to 'private' statements prior to class methods but shouldn't
12
- ["Rails::Engine", :class, "find_root_with_flag"] => :public
13
- }
12
+ ['Rails::Engine', :class, 'find_root_with_flag'] => :public
13
+ }.freeze
14
14
 
15
15
  # @param code_object [YARD::CodeObjects::MethodObject]
16
16
  # @param name [String, nil]
@@ -32,7 +32,9 @@ module Solargraph
32
32
  # @sg-ignore Need to add nil check here
33
33
  final_visibility ||= VISIBILITY_OVERRIDE[[closure.path, final_scope]]
34
34
  # @sg-ignore Need to add nil check here
35
- final_visibility ||= :private if closure.path == 'Kernel' && Kernel.private_instance_methods(false).include?(name.to_sym)
35
+ if closure.path == 'Kernel' && Kernel.private_instance_methods(false).include?(name.to_sym)
36
+ final_visibility ||= :private
37
+ end
36
38
  final_visibility ||= visibility
37
39
  final_visibility ||= :private if code_object.module_function? && final_scope == :instance
38
40
  final_visibility ||= :public if code_object.module_function? && final_scope == :class
@@ -50,7 +52,7 @@ module Solargraph
50
52
  explicit: code_object.is_explicit?,
51
53
  return_type: return_type,
52
54
  parameters: [],
53
- source: :yardoc,
55
+ source: :yardoc
54
56
  )
55
57
  else
56
58
  # @sg-ignore Need to add nil check here
@@ -66,7 +68,7 @@ module Solargraph
66
68
  return_type: return_type,
67
69
  attribute: code_object.is_attribute?,
68
70
  parameters: [],
69
- source: :yardoc,
71
+ source: :yardoc
70
72
  )
71
73
  pin.parameters.concat get_parameters(code_object, location, comments, pin)
72
74
  pin.parameters.freeze
@@ -99,7 +101,7 @@ module Solargraph
99
101
  presence: nil,
100
102
  decl: arg_type(a),
101
103
  asgn_code: a[1],
102
- source: :yardoc,
104
+ source: :yardoc
103
105
  )
104
106
  end
105
107
  end
@@ -23,7 +23,7 @@ module Solargraph
23
23
  closure: closure,
24
24
  # @sg-ignore need to add a nil check here
25
25
  gates: closure.gates,
26
- source: :yardoc,
26
+ source: :yardoc
27
27
  )
28
28
  end
29
29
  end
@@ -35,28 +35,27 @@ module Solargraph
35
35
  # @return [Array<Pin::Base>]
36
36
  def generate_pins code_object
37
37
  result = []
38
- if code_object.is_a?(YARD::CodeObjects::NamespaceObject)
38
+ case code_object
39
+ when YARD::CodeObjects::NamespaceObject
39
40
  nspin = ToNamespace.make(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
40
41
  @namespace_pins[code_object.path] = nspin
41
42
  result.push nspin
42
- # @sg-ignore flow sensitive typing needs to narrow down type with an if is_a? check
43
- if code_object.is_a?(YARD::CodeObjects::ClassObject) and !code_object.superclass.nil?
43
+ if code_object.is_a?(YARD::CodeObjects::ClassObject) && !code_object.superclass.nil?
44
44
  # This method of superclass detection is a bit of a hack. If
45
45
  # the superclass is a Proxy, it is assumed to be undefined in its
46
46
  # yardoc and converted to a fully qualified namespace.
47
- # @sg-ignore flow sensitive typing needs to narrow down type with an if is_a? check
48
47
  superclass = if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
49
- # @sg-ignore flow sensitive typing needs to narrow down type with an if is_a? check
50
- "::#{code_object.superclass}"
51
- else
52
- # @sg-ignore flow sensitive typing needs to narrow down type with an if is_a? check
53
- code_object.superclass.to_s
54
- end
48
+ "::#{code_object.superclass}"
49
+ else
50
+ code_object.superclass.to_s
51
+ end
55
52
  result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin, source: :yard_map)
56
53
  end
54
+ # @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
57
55
  code_object.class_mixins.each do |m|
58
56
  result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path, source: :yard_map)
59
57
  end
58
+ # @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
60
59
  code_object.instance_mixins.each do |m|
61
60
  result.push Solargraph::Pin::Reference::Include.new(
62
61
  closure: nspin, # @todo Fix this
@@ -64,8 +63,9 @@ module Solargraph
64
63
  source: :yard_map
65
64
  )
66
65
  end
67
- elsif code_object.is_a?(YARD::CodeObjects::MethodObject)
66
+ when YARD::CodeObjects::MethodObject
68
67
  closure = @namespace_pins[code_object.namespace.to_s]
68
+ # @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
69
69
  if code_object.name == :initialize && code_object.scope == :instance
70
70
  # @todo Check the visibility of <Class>.new
71
71
  result.push ToMethod.make(code_object, 'new', :class, :public, closure, @spec)
@@ -73,7 +73,7 @@ module Solargraph
73
73
  else
74
74
  result.push ToMethod.make(code_object, nil, nil, nil, closure, @spec)
75
75
  end
76
- elsif code_object.is_a?(YARD::CodeObjects::ConstantObject)
76
+ when YARD::CodeObjects::ConstantObject
77
77
  closure = @namespace_pins[code_object.namespace]
78
78
  result.push ToConstant.make(code_object, closure, @spec)
79
79
  end
@@ -1,20 +1,20 @@
1
- # frozen_string_literal: true
2
-
3
- require 'yard'
4
-
5
- # Change YARD log IO to avoid sending unexpected messages to STDOUT
6
- YARD::Logger.instance.io = File.new(File::NULL, 'w')
7
-
8
- module Solargraph
9
- # A placeholder for the @!domain directive. It doesn't need to do anything
10
- # for yardocs. It's only used for Solargraph API maps.
11
- class DomainDirective < YARD::Tags::Directive
12
- def call; end
13
- end
14
- end
15
-
16
- # Define a @type tag for documenting variables
17
- YARD::Tags::Library.define_tag("Type", :type, :with_types_and_name)
18
-
19
- # Define an @!override directive for overriding method tags
20
- YARD::Tags::Library.define_directive("override", :with_name, Solargraph::DomainDirective)
1
+ # frozen_string_literal: true
2
+
3
+ require 'yard'
4
+
5
+ # Change YARD log IO to avoid sending unexpected messages to STDOUT
6
+ YARD::Logger.instance.io = File.new(File::NULL, 'w')
7
+
8
+ module Solargraph
9
+ # A placeholder for the @!domain directive. It doesn't need to do anything
10
+ # for yardocs. It's only used for Solargraph API maps.
11
+ class DomainDirective < YARD::Tags::Directive
12
+ def call; end
13
+ end
14
+ end
15
+
16
+ # Define a @type tag for documenting variables
17
+ YARD::Tags::Library.define_tag('Type', :type, :with_types_and_name)
18
+
19
+ # Define an @!override directive for overriding method tags
20
+ YARD::Tags::Library.define_directive('override', :with_name, Solargraph::DomainDirective)
data/lib/solargraph.rb CHANGED
@@ -71,7 +71,7 @@ module Solargraph
71
71
  # @param msg [String, nil] An optional message to log
72
72
  # @param block [Proc] A block that returns a message to log
73
73
  # @return [void]
74
- def self.assert_or_log(type, msg = nil, &block)
74
+ def self.assert_or_log type, msg = nil, &block
75
75
  if asserts_on?
76
76
  # @type [String, nil]
77
77
  msg ||= block.call
@@ -113,10 +113,10 @@ module Solargraph
113
113
  # @return [generic<T>]
114
114
  def self.with_clean_env &block
115
115
  meth = if Bundler.respond_to?(:with_original_env)
116
- :with_original_env
117
- else
118
- :with_clean_env
119
- end
116
+ :with_original_env
117
+ else
118
+ :with_clean_env
119
+ end
120
120
  Bundler.send meth, &block
121
121
  end
122
122
  end
data/solargraph.gemspec CHANGED
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # @sg-ignore Should better support meaning of '&' in RBS
2
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
4
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/lib"
3
5
  require 'solargraph/version'
4
6
  require 'date'
5
7
 
@@ -7,12 +9,11 @@ require 'date'
7
9
  Gem::Specification.new do |s|
8
10
  s.name = 'solargraph'
9
11
  s.version = Solargraph::VERSION
10
- s.date = Date.today.strftime("%Y-%m-%d")
11
- s.summary = "A Ruby language server"
12
- s.description = "IDE tools for code completion, inline documentation, and static analysis"
13
- 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']
14
15
  s.email = 'admin@castwide.com'
15
- s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
16
17
  # @sg-ignore Need backtick support
17
18
  # @type [String]
18
19
  all_files = `git ls-files -z`
@@ -21,36 +22,36 @@ Gem::Specification.new do |s|
21
22
  s.homepage = 'https://solargraph.org'
22
23
  s.license = 'MIT'
23
24
  s.executables = ['solargraph']
24
- s.metadata["funding_uri"] = "https://www.patreon.com/castwide"
25
- s.metadata["bug_tracker_uri"] = "https://github.com/castwide/solargraph/issues"
26
- s.metadata["changelog_uri"] = "https://github.com/castwide/solargraph/blob/master/CHANGELOG.md"
27
- s.metadata["source_code_uri"] = "https://github.com/castwide/solargraph"
28
- 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'
29
30
 
30
31
  s.required_ruby_version = '>= 3.0'
31
32
 
32
- s.add_runtime_dependency 'ast', '~> 2.4.3'
33
- s.add_runtime_dependency 'backport', '~> 1.2'
34
- s.add_runtime_dependency 'benchmark', '~> 0.4'
35
- s.add_runtime_dependency 'bundler', '>= 2.0'
36
- s.add_runtime_dependency 'diff-lcs', '~> 1.4'
37
- s.add_runtime_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
38
- s.add_runtime_dependency 'kramdown', '~> 2.3'
39
- s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
40
- s.add_runtime_dependency 'logger', '~> 1.6'
41
- s.add_runtime_dependency 'observer', '~> 0.1'
42
- s.add_runtime_dependency 'ostruct', '~> 0.6'
43
- s.add_runtime_dependency 'open3', '~> 0.2.1'
44
- s.add_runtime_dependency 'parser', '~> 3.0'
45
- s.add_runtime_dependency 'prism', '~> 1.4'
46
- s.add_runtime_dependency 'rbs', ['>= 3.6.1', '<= 4.0.0.dev.5']
47
- s.add_runtime_dependency 'reverse_markdown', '~> 3.0'
48
- s.add_runtime_dependency 'rubocop', '~> 1.76'
49
- s.add_runtime_dependency 'thor', '~> 1.0'
50
- s.add_runtime_dependency 'tilt', '~> 2.0'
51
- s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
52
- s.add_runtime_dependency 'yard-solargraph', '~> 0.1'
53
- 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'
54
55
 
55
56
  s.add_development_dependency 'pry', '~> 0.15'
56
57
  s.add_development_dependency 'public_suffix', '~> 3.1'
@@ -62,6 +63,7 @@ Gem::Specification.new do |s|
62
63
  #
63
64
  # even more specific on RuboCop itself, which is written into _todo
64
65
  # file.
66
+ s.add_development_dependency 'overcommit', '~> 0.68.0'
65
67
  s.add_development_dependency 'rubocop', '~> 1.80.0.0'
66
68
  s.add_development_dependency 'rubocop-rake', '~> 0.7.1'
67
69
  s.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
@@ -69,7 +71,6 @@ Gem::Specification.new do |s|
69
71
  s.add_development_dependency 'simplecov', '~> 0.21'
70
72
  s.add_development_dependency 'simplecov-lcov', '~> 0.8'
71
73
  s.add_development_dependency 'undercover', '~> 0.7'
72
- s.add_development_dependency 'overcommit', '~> 0.68.0'
73
74
  s.add_development_dependency 'webmock', '~> 3.6'
74
75
  # work around missing yard dependency needed as of Ruby 3.5
75
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.59.0.dev.1
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-13 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
@@ -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