solargraph 0.54.1 → 0.54.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/solargraph/api_map/store.rb +2 -2
- data/lib/solargraph/api_map.rb +59 -15
- data/lib/solargraph/complex_type/type_methods.rb +7 -0
- data/lib/solargraph/language_server/host/message_worker.rb +20 -6
- data/lib/solargraph/language_server/host.rb +10 -10
- data/lib/solargraph/language_server/message/base.rb +18 -11
- data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
- data/lib/solargraph/library.rb +0 -1
- data/lib/solargraph/pin/base.rb +1 -2
- data/lib/solargraph/pin/block.rb +1 -3
- data/lib/solargraph/rbs_map/conversions.rb +7 -1
- data/lib/solargraph/source/chain/call.rb +6 -4
- data/lib/solargraph/source/cursor.rb +1 -0
- data/lib/solargraph/version.rb +1 -1
- data/solargraph.gemspec +4 -4
- metadata +18 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17844968917df55d45751cbe82fa1f59e72f4dbfe7ecce04f73dbccbc1ec2aeb
|
4
|
+
data.tar.gz: 1b86c653e3b5c145f1b0aa9c614f136bd6d75c305aeac680f0cfe992ca4ff3dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44d428aa78d2d82bcfb97b650acd72aaf904666702a59e13a87f1a4c4c8bb2fa171afe6f502fb7327a67f12854a3953fccee1fde95f75fc5cf4b4f8742683e8e
|
7
|
+
data.tar.gz: ce37d473c9e3b8decd9c97c868fb66ef8441e27aeb10b557abf345bba1ad9c96c8dc5657127ea9680dfa60f59da7663f25ccffed412d5683b272ea3dbf823f76
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 0.54.2 - April 28, 2025
|
2
|
+
- Resolve generics correctly on mixin inclusion (#898)
|
3
|
+
- Pick correct String#split overload (#905)
|
4
|
+
- Fix type sent into YARD method (#912)
|
5
|
+
- Early CancelRequest handling (#914)
|
6
|
+
- Destructure partial yield types (#915)
|
7
|
+
- Dependency versions (#916)
|
8
|
+
|
1
9
|
## 0.54.1 - April 26, 2025
|
2
10
|
- Retire more RubyVM-specific code (#797)
|
3
11
|
- Add additional docs for key classes, modules and methods (#802)
|
@@ -284,8 +284,8 @@ module Solargraph
|
|
284
284
|
get_path_pins(pin.path.sub(/#initialize/, '.new')).first
|
285
285
|
end
|
286
286
|
(ovr.tags.map(&:tag_name) + ovr.delete).uniq.each do |tag|
|
287
|
-
pin.docstring.delete_tags tag
|
288
|
-
new_pin.docstring.delete_tags tag
|
287
|
+
pin.docstring.delete_tags tag
|
288
|
+
new_pin.docstring.delete_tags tag if new_pin
|
289
289
|
end
|
290
290
|
ovr.tags.each do |tag|
|
291
291
|
pin.docstring.add_tag(tag)
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -96,6 +96,9 @@ module Solargraph
|
|
96
96
|
self
|
97
97
|
end
|
98
98
|
|
99
|
+
# @todo need to model type def statement in chains as a symbol so
|
100
|
+
# that this overload of 'protected' will typecheck @sg-ignore
|
101
|
+
# @sg-ignore
|
99
102
|
protected def equality_fields
|
100
103
|
[self.class, @source_map_hash, implicit, @doc_map, @unresolved_requires, @missing_docs]
|
101
104
|
end
|
@@ -341,6 +344,9 @@ module Solargraph
|
|
341
344
|
# @param deep [Boolean] True to include superclasses, mixins, etc.
|
342
345
|
# @return [Array<Solargraph::Pin::Method>]
|
343
346
|
def get_methods rooted_tag, scope: :instance, visibility: [:public], deep: true
|
347
|
+
rooted_type = ComplexType.try_parse(rooted_tag)
|
348
|
+
fqns = rooted_type.namespace
|
349
|
+
namespace_pin = store.get_path_pins(fqns).select { |p| p.is_a?(Pin::Namespace) }.first
|
344
350
|
cached = cache.get_methods(rooted_tag, scope, visibility, deep)
|
345
351
|
return cached.clone unless cached.nil?
|
346
352
|
result = []
|
@@ -380,9 +386,12 @@ module Solargraph
|
|
380
386
|
result.concat inner_get_methods('Kernel', :instance, [:public], deep, skip) if visibility.include?(:private)
|
381
387
|
result.concat inner_get_methods('Module', scope, visibility, deep, skip) if scope == :module
|
382
388
|
end
|
383
|
-
|
384
|
-
|
385
|
-
|
389
|
+
result = resolve_method_aliases(result, visibility)
|
390
|
+
if namespace_pin && rooted_tag != rooted_type.name
|
391
|
+
result = result.map { |method_pin| method_pin.resolve_generics(namespace_pin, rooted_type) }
|
392
|
+
end
|
393
|
+
cache.set_methods(rooted_tag, scope, visibility, deep, result)
|
394
|
+
result
|
386
395
|
end
|
387
396
|
|
388
397
|
# Get an array of method pins for a complex type.
|
@@ -438,8 +447,13 @@ module Solargraph
|
|
438
447
|
# @param name [String] Method name to look up
|
439
448
|
# @param scope [Symbol] :instance or :class
|
440
449
|
# @return [Array<Solargraph::Pin::Method>]
|
441
|
-
def get_method_stack rooted_tag, name, scope: :instance
|
442
|
-
|
450
|
+
def get_method_stack rooted_tag, name, scope: :instance, visibility: [:private, :protected, :public], preserve_generics: false
|
451
|
+
rooted_type = ComplexType.parse(rooted_tag)
|
452
|
+
fqns = rooted_type.namespace
|
453
|
+
namespace_pin = store.get_path_pins(fqns).select { |p| p.is_a?(Pin::Namespace) }.first
|
454
|
+
methods = get_methods(rooted_tag, scope: scope, visibility: visibility).select { |p| p.name == name }
|
455
|
+
methods = erase_generics(namespace_pin, rooted_type, methods) unless preserve_generics
|
456
|
+
methods
|
443
457
|
end
|
444
458
|
|
445
459
|
# Get an array of all suggestions that match the specified path.
|
@@ -601,6 +615,7 @@ module Solargraph
|
|
601
615
|
rooted_type = ComplexType.parse(rooted_tag).force_rooted
|
602
616
|
fqns = rooted_type.namespace
|
603
617
|
fqns_generic_params = rooted_type.all_params
|
618
|
+
namespace_pin = store.get_path_pins(fqns).select { |p| p.is_a?(Pin::Namespace) }.first
|
604
619
|
return [] if no_core && fqns =~ /^(Object|BasicObject|Class|Module)$/
|
605
620
|
reqstr = "#{fqns}|#{scope}|#{visibility.sort}|#{deep}"
|
606
621
|
return [] if skip.include?(reqstr)
|
@@ -615,15 +630,7 @@ module Solargraph
|
|
615
630
|
# Store#get_methods doesn't know about full tags, just
|
616
631
|
# namespaces; resolving the generics in the method pins is this
|
617
632
|
# class' responsibility
|
618
|
-
|
619
|
-
namespace_pin = store.get_path_pins(fqns).select { |p| p.is_a?(Pin::Namespace) }.first
|
620
|
-
methods = if namespace_pin && rooted_tag != fqns
|
621
|
-
methods = raw_methods.map do |method_pin|
|
622
|
-
method_pin.resolve_generics(namespace_pin, rooted_type)
|
623
|
-
end
|
624
|
-
else
|
625
|
-
raw_methods
|
626
|
-
end
|
633
|
+
methods = store.get_methods(fqns, scope: scope, visibility: visibility).sort{ |a, b| a.name <=> b.name }
|
627
634
|
result.concat methods
|
628
635
|
if deep
|
629
636
|
if scope == :instance
|
@@ -809,11 +816,48 @@ module Solargraph
|
|
809
816
|
name: pin.name,
|
810
817
|
comments: origin.comments,
|
811
818
|
scope: origin.scope,
|
819
|
+
# context: pin.context,
|
812
820
|
visibility: origin.visibility,
|
813
821
|
signatures: origin.signatures,
|
814
|
-
attribute: origin.attribute
|
822
|
+
attribute: origin.attribute?,
|
823
|
+
generics: origin.generics,
|
824
|
+
return_type: origin.return_type,
|
815
825
|
}
|
816
826
|
Pin::Method.new **args
|
817
827
|
end
|
828
|
+
|
829
|
+
include Logging
|
830
|
+
|
831
|
+
private
|
832
|
+
|
833
|
+
# @param namespace_pin [Pin::Namespace]
|
834
|
+
# @param rooted_type [ComplexType]
|
835
|
+
# @param pins [Enumerable<Pin::Base>]
|
836
|
+
# @return [Array<Pin::Base>]
|
837
|
+
def erase_generics(namespace_pin, rooted_type, pins)
|
838
|
+
return pins unless should_erase_generics_when_done?(namespace_pin, rooted_type)
|
839
|
+
|
840
|
+
logger.debug("Erasing generics on namespace_pin=#{namespace_pin} / rooted_type=#{rooted_type}")
|
841
|
+
pins.map do |method_pin|
|
842
|
+
method_pin.erase_generics(namespace_pin.generics)
|
843
|
+
end
|
844
|
+
end
|
845
|
+
|
846
|
+
# @param namespace_pin [Pin::Namespace]
|
847
|
+
# @param rooted_type [ComplexType]
|
848
|
+
def should_erase_generics_when_done?(namespace_pin, rooted_type)
|
849
|
+
has_generics?(namespace_pin) && !can_resolve_generics?(namespace_pin, rooted_type)
|
850
|
+
end
|
851
|
+
|
852
|
+
# @param namespace_pin [Pin::Namespace]
|
853
|
+
def has_generics?(namespace_pin)
|
854
|
+
namespace_pin && !namespace_pin.generics.empty?
|
855
|
+
end
|
856
|
+
|
857
|
+
# @param namespace_pin [Pin::Namespace]
|
858
|
+
# @param rooted_type [ComplexType]
|
859
|
+
def can_resolve_generics?(namespace_pin, rooted_type)
|
860
|
+
has_generics?(namespace_pin) && !rooted_type.all_params.empty?
|
861
|
+
end
|
818
862
|
end
|
819
863
|
end
|
@@ -129,6 +129,13 @@ module Solargraph
|
|
129
129
|
end.call
|
130
130
|
end
|
131
131
|
|
132
|
+
def namespace_type
|
133
|
+
return ComplexType.parse('::Object') if duck_type?
|
134
|
+
return ComplexType.parse('::NilClass') if nil_type?
|
135
|
+
return subtypes.first if (name == 'Class' || name == 'Module') && !subtypes.empty?
|
136
|
+
self
|
137
|
+
end
|
138
|
+
|
132
139
|
# @return [String]
|
133
140
|
def rooted_namespace
|
134
141
|
return namespace unless rooted? && can_root_name?(namespace)
|
@@ -3,12 +3,14 @@
|
|
3
3
|
module Solargraph
|
4
4
|
module LanguageServer
|
5
5
|
class Host
|
6
|
-
# A serial worker Thread to handle
|
7
|
-
#
|
8
|
-
# this make check pending message possible, and maybe cancelled to speedup process
|
6
|
+
# A serial worker Thread to handle incoming messages.
|
9
7
|
#
|
10
8
|
class MessageWorker
|
11
|
-
UPDATE_METHODS = [
|
9
|
+
UPDATE_METHODS = [
|
10
|
+
'textDocument/didOpen',
|
11
|
+
'textDocument/didChange',
|
12
|
+
'workspace/didChangeWatchedFiles'
|
13
|
+
].freeze
|
12
14
|
|
13
15
|
# @param host [Host]
|
14
16
|
def initialize(host)
|
@@ -64,12 +66,24 @@ module Solargraph
|
|
64
66
|
private
|
65
67
|
|
66
68
|
def next_message
|
69
|
+
cancel_message || next_priority
|
70
|
+
end
|
71
|
+
|
72
|
+
def cancel_message
|
73
|
+
# Handle cancellations first
|
74
|
+
idx = messages.find_index { |msg| msg['method'] == '$/cancelRequest' }
|
75
|
+
return unless idx
|
76
|
+
|
77
|
+
msg = messages[idx]
|
78
|
+
messages.delete_at idx
|
79
|
+
msg
|
80
|
+
end
|
81
|
+
|
82
|
+
def next_priority
|
67
83
|
# Prioritize updates and version-dependent messages for performance
|
68
84
|
idx = messages.find_index do |msg|
|
69
85
|
UPDATE_METHODS.include?(msg['method']) || version_dependent?(msg)
|
70
86
|
end
|
71
|
-
# @todo We might want to clear duplicate instances of this message
|
72
|
-
# that occur before the next update
|
73
87
|
return messages.shift unless idx
|
74
88
|
|
75
89
|
msg = messages[idx]
|
@@ -24,10 +24,8 @@ module Solargraph
|
|
24
24
|
attr_writer :client_capabilities
|
25
25
|
|
26
26
|
def initialize
|
27
|
-
@cancel_semaphore = Mutex.new
|
28
27
|
@buffer_semaphore = Mutex.new
|
29
28
|
@request_mutex = Mutex.new
|
30
|
-
@cancel = []
|
31
29
|
@buffer = String.new
|
32
30
|
@stopped = true
|
33
31
|
@next_request_id = 1
|
@@ -65,7 +63,7 @@ module Solargraph
|
|
65
63
|
# @param id [Integer]
|
66
64
|
# @return [void]
|
67
65
|
def cancel id
|
68
|
-
|
66
|
+
cancelled.push id
|
69
67
|
end
|
70
68
|
|
71
69
|
# True if the host received a request to cancel the method with the
|
@@ -74,9 +72,7 @@ module Solargraph
|
|
74
72
|
# @param id [Integer]
|
75
73
|
# @return [Boolean]
|
76
74
|
def cancel? id
|
77
|
-
|
78
|
-
@cancel_semaphore.synchronize { result = @cancel.include? id }
|
79
|
-
result
|
75
|
+
cancelled.include? id
|
80
76
|
end
|
81
77
|
|
82
78
|
# Delete the specified ID from the list of cancelled IDs if it exists.
|
@@ -84,7 +80,7 @@ module Solargraph
|
|
84
80
|
# @param id [Integer]
|
85
81
|
# @return [void]
|
86
82
|
def clear id
|
87
|
-
|
83
|
+
cancelled.delete id
|
88
84
|
end
|
89
85
|
|
90
86
|
# Called by adapter, to handle the request
|
@@ -101,11 +97,11 @@ module Solargraph
|
|
101
97
|
# @return [Solargraph::LanguageServer::Message::Base, nil] The message handler.
|
102
98
|
def receive request
|
103
99
|
if request['method']
|
104
|
-
logger.info "
|
100
|
+
logger.info "Host received ##{request['id']} #{request['method']}"
|
105
101
|
logger.debug request
|
106
102
|
message = Message.select(request['method']).new(self, request)
|
107
103
|
begin
|
108
|
-
message.process
|
104
|
+
message.process unless cancel?(request['id'])
|
109
105
|
rescue StandardError => e
|
110
106
|
logger.warn "Error processing request: [#{e.class}] #{e.message}"
|
111
107
|
logger.warn e.backtrace.join("\n")
|
@@ -381,7 +377,6 @@ module Solargraph
|
|
381
377
|
envelope = "Content-Length: #{json.bytesize}\r\n\r\n#{json}"
|
382
378
|
queue envelope
|
383
379
|
@next_request_id += 1
|
384
|
-
logger.info "Server sent #{method}"
|
385
380
|
logger.debug params
|
386
381
|
end
|
387
382
|
end
|
@@ -693,6 +688,11 @@ module Solargraph
|
|
693
688
|
|
694
689
|
private
|
695
690
|
|
691
|
+
# @return [Array<Integer>]
|
692
|
+
def cancelled
|
693
|
+
@cancelled ||= []
|
694
|
+
end
|
695
|
+
|
696
696
|
# @return [MessageWorker]
|
697
697
|
def message_worker
|
698
698
|
@message_worker ||= MessageWorker.new(self)
|
@@ -61,18 +61,11 @@ module Solargraph
|
|
61
61
|
# @return [void]
|
62
62
|
def send_response
|
63
63
|
return if id.nil?
|
64
|
-
|
65
|
-
|
66
|
-
# cancel should send response RequestCancelled
|
67
|
-
Solargraph::Logging.logger.info "Cancelled response to #{method}"
|
68
|
-
set_result nil
|
69
|
-
set_error ErrorCodes::REQUEST_CANCELLED, "cancelled by client"
|
70
|
-
else
|
71
|
-
Solargraph::Logging.logger.info "Sending response to #{method}"
|
72
|
-
end
|
64
|
+
|
65
|
+
accept_or_cancel
|
73
66
|
response = {
|
74
|
-
jsonrpc:
|
75
|
-
id: id
|
67
|
+
jsonrpc: '2.0',
|
68
|
+
id: id
|
76
69
|
}
|
77
70
|
response[:result] = result unless result.nil?
|
78
71
|
response[:error] = error unless error.nil?
|
@@ -83,6 +76,20 @@ module Solargraph
|
|
83
76
|
host.queue envelope
|
84
77
|
host.clear id
|
85
78
|
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def accept_or_cancel
|
83
|
+
if host.cancel?(id)
|
84
|
+
# https://microsoft.github.io/language-server-protocol/specifications/specification-current/#cancelRequest
|
85
|
+
# cancel should send response RequestCancelled
|
86
|
+
Solargraph::Logging.logger.info "Cancelled response to ##{id} #{method}"
|
87
|
+
set_result nil
|
88
|
+
set_error ErrorCodes::REQUEST_CANCELLED, 'Cancelled by client'
|
89
|
+
else
|
90
|
+
Solargraph::Logging.logger.info "Sending response to ##{id} #{method}"
|
91
|
+
end
|
92
|
+
end
|
86
93
|
end
|
87
94
|
end
|
88
95
|
end
|
@@ -12,9 +12,6 @@ module Solargraph
|
|
12
12
|
col = params['position']['character']
|
13
13
|
begin
|
14
14
|
completion = host.completions_at(params['textDocument']['uri'], line, col)
|
15
|
-
if host.cancel?(id)
|
16
|
-
return set_result(empty_result) if host.cancel?(id)
|
17
|
-
end
|
18
15
|
items = []
|
19
16
|
last_context = nil
|
20
17
|
idx = -1
|
data/lib/solargraph/library.rb
CHANGED
@@ -650,7 +650,6 @@ module Solargraph
|
|
650
650
|
return if @sync_count == 0
|
651
651
|
|
652
652
|
mutex.synchronize do
|
653
|
-
logger.warn "CATALOG"
|
654
653
|
logger.info "Cataloging #{workspace.directory.empty? ? 'generic workspace' : workspace.directory}"
|
655
654
|
api_map.catalog bench
|
656
655
|
source_map_hash.values.each { |map| find_external_requires(map) }
|
data/lib/solargraph/pin/base.rb
CHANGED
@@ -71,8 +71,7 @@ module Solargraph
|
|
71
71
|
# @param context_type [ComplexType] The receiver type
|
72
72
|
# @return [self]
|
73
73
|
def resolve_generics definitions, context_type
|
74
|
-
|
75
|
-
transformed.erase_generics(definitions.generics)
|
74
|
+
transform_types { |t| t.resolve_generics(definitions, context_type) if t }
|
76
75
|
end
|
77
76
|
|
78
77
|
def all_rooted?
|
data/lib/solargraph/pin/block.rb
CHANGED
@@ -36,14 +36,12 @@ module Solargraph
|
|
36
36
|
#
|
37
37
|
# @return [::Array<ComplexType>]
|
38
38
|
def destructure_yield_types(yield_types, parameters)
|
39
|
-
return yield_types if yield_types.length == parameters.length
|
40
|
-
|
41
39
|
# yielding a tuple into a block will destructure the tuple
|
42
40
|
if yield_types.length == 1
|
43
41
|
yield_type = yield_types.first
|
44
42
|
return yield_type.all_params if yield_type.tuple? && yield_type.all_params.length == parameters.length
|
45
43
|
end
|
46
|
-
parameters.map { ComplexType::UNDEFINED }
|
44
|
+
parameters.map.with_index { |_, idx| yield_types[idx] || ComplexType::UNDEFINED }
|
47
45
|
end
|
48
46
|
|
49
47
|
# @param api_map [ApiMap]
|
@@ -80,9 +80,12 @@ module Solargraph
|
|
80
80
|
# @param closure [Pin::Namespace]
|
81
81
|
# @return [void]
|
82
82
|
def convert_self_type_to_pins decl, closure
|
83
|
+
type = build_type(decl.name, decl.args)
|
84
|
+
generic_values = type.all_params.map(&:to_s)
|
83
85
|
include_pin = Solargraph::Pin::Reference::Include.new(
|
84
86
|
name: decl.name.relative!.to_s,
|
85
87
|
type_location: location_decl_to_pin_location(decl.location),
|
88
|
+
generic_values: generic_values,
|
86
89
|
closure: closure
|
87
90
|
)
|
88
91
|
pins.push include_pin
|
@@ -628,9 +631,12 @@ module Solargraph
|
|
628
631
|
def add_mixins decl, namespace
|
629
632
|
decl.each_mixin do |mixin|
|
630
633
|
klass = mixin.is_a?(RBS::AST::Members::Include) ? Pin::Reference::Include : Pin::Reference::Extend
|
634
|
+
type = build_type(mixin.name, mixin.args)
|
635
|
+
generic_values = type.all_params.map(&:to_s)
|
631
636
|
pins.push klass.new(
|
632
637
|
name: mixin.name.relative!.to_s,
|
633
|
-
|
638
|
+
type_location: location_decl_to_pin_location(mixin.location),
|
639
|
+
generic_values: generic_values,
|
634
640
|
closure: namespace
|
635
641
|
)
|
636
642
|
end
|
@@ -42,8 +42,8 @@ module Solargraph
|
|
42
42
|
end
|
43
43
|
return inferred_pins(found, api_map, name_pin, locals) unless found.empty?
|
44
44
|
pins = name_pin.binder.each_unique_type.flat_map do |context|
|
45
|
-
|
46
|
-
api_map.get_method_stack(
|
45
|
+
ns = context.namespace == '' ? '' : context.namespace_type.tag
|
46
|
+
api_map.get_method_stack(ns, word, scope: context.scope)
|
47
47
|
end
|
48
48
|
return [] if pins.empty?
|
49
49
|
inferred_pins(pins, api_map, name_pin, locals)
|
@@ -81,10 +81,12 @@ module Solargraph
|
|
81
81
|
break
|
82
82
|
end
|
83
83
|
atype = atypes[idx] ||= arg.infer(api_map, Pin::ProxyType.anonymous(name_pin.context), locals)
|
84
|
-
|
84
|
+
# make sure we get types from up the method
|
85
|
+
# inheritance chain if we don't have them on this pin
|
86
|
+
ptype = param.typify api_map
|
85
87
|
# @todo Weak type comparison
|
86
88
|
# unless atype.tag == param.return_type.tag || api_map.super_and_sub?(param.return_type.tag, atype.tag)
|
87
|
-
unless
|
89
|
+
unless ptype.undefined? || atype.name == ptype.name || ptype.any? { |current_ptype| api_map.super_and_sub?(current_ptype.name, atype.name) } || ptype.generic? || param.restarg?
|
88
90
|
match = false
|
89
91
|
break
|
90
92
|
end
|
@@ -35,6 +35,7 @@ module Solargraph
|
|
35
35
|
# The part of the word before the current position. Given the text
|
36
36
|
# `foo.bar`, the start_of_word at position(0, 6) is `ba`.
|
37
37
|
#
|
38
|
+
# @sg-ignore Improve resolution of String#match below
|
38
39
|
# @return [String]
|
39
40
|
def start_of_word
|
40
41
|
@start_of_word ||= begin
|
data/lib/solargraph/version.rb
CHANGED
data/solargraph.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.required_ruby_version = '>= 3.0'
|
25
25
|
|
26
26
|
s.add_runtime_dependency 'backport', '~> 1.2'
|
27
|
-
s.add_runtime_dependency 'benchmark'
|
27
|
+
s.add_runtime_dependency 'benchmark', '~> 0.4'
|
28
28
|
s.add_runtime_dependency 'bundler', '~> 2.0'
|
29
29
|
s.add_runtime_dependency 'diff-lcs', '~> 1.4'
|
30
30
|
s.add_runtime_dependency 'jaro_winkler', '~> 1.6'
|
@@ -35,19 +35,19 @@ Gem::Specification.new do |s|
|
|
35
35
|
s.add_runtime_dependency 'ostruct', '~> 0.6'
|
36
36
|
s.add_runtime_dependency 'parser', '~> 3.0'
|
37
37
|
s.add_runtime_dependency 'rbs', '~> 3.3'
|
38
|
-
s.add_runtime_dependency 'reverse_markdown', '
|
38
|
+
s.add_runtime_dependency 'reverse_markdown', '~> 3.0'
|
39
39
|
s.add_runtime_dependency 'rubocop', '~> 1.38'
|
40
40
|
s.add_runtime_dependency 'thor', '~> 1.0'
|
41
41
|
s.add_runtime_dependency 'tilt', '~> 2.0'
|
42
42
|
s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
|
43
43
|
s.add_runtime_dependency 'yard-solargraph', '~> 0.1'
|
44
44
|
|
45
|
-
s.add_development_dependency 'pry'
|
45
|
+
s.add_development_dependency 'pry', '~> 0.15'
|
46
46
|
s.add_development_dependency 'public_suffix', '~> 3.1'
|
47
47
|
s.add_development_dependency 'rake', '~> 13.2'
|
48
48
|
s.add_development_dependency 'rspec', '~> 3.5'
|
49
49
|
s.add_development_dependency 'simplecov', '~> 0.14'
|
50
50
|
s.add_development_dependency 'webmock', '~> 3.6'
|
51
51
|
# work around missing yard dependency needed as of Ruby 3.5
|
52
|
-
s.add_development_dependency 'irb'
|
52
|
+
s.add_development_dependency 'irb', '~> 1.15'
|
53
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.54.
|
4
|
+
version: 0.54.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: benchmark
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
33
|
+
version: '0.4'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
40
|
+
version: '0.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,22 +182,16 @@ dependencies:
|
|
182
182
|
name: reverse_markdown
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '2.0'
|
188
|
-
- - "<"
|
185
|
+
- - "~>"
|
189
186
|
- !ruby/object:Gem::Version
|
190
|
-
version: '
|
187
|
+
version: '3.0'
|
191
188
|
type: :runtime
|
192
189
|
prerelease: false
|
193
190
|
version_requirements: !ruby/object:Gem::Requirement
|
194
191
|
requirements:
|
195
|
-
- - "
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
version: '2.0'
|
198
|
-
- - "<"
|
192
|
+
- - "~>"
|
199
193
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
194
|
+
version: '3.0'
|
201
195
|
- !ruby/object:Gem::Dependency
|
202
196
|
name: rubocop
|
203
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -278,16 +272,16 @@ dependencies:
|
|
278
272
|
name: pry
|
279
273
|
requirement: !ruby/object:Gem::Requirement
|
280
274
|
requirements:
|
281
|
-
- - "
|
275
|
+
- - "~>"
|
282
276
|
- !ruby/object:Gem::Version
|
283
|
-
version: '0'
|
277
|
+
version: '0.15'
|
284
278
|
type: :development
|
285
279
|
prerelease: false
|
286
280
|
version_requirements: !ruby/object:Gem::Requirement
|
287
281
|
requirements:
|
288
|
-
- - "
|
282
|
+
- - "~>"
|
289
283
|
- !ruby/object:Gem::Version
|
290
|
-
version: '0'
|
284
|
+
version: '0.15'
|
291
285
|
- !ruby/object:Gem::Dependency
|
292
286
|
name: public_suffix
|
293
287
|
requirement: !ruby/object:Gem::Requirement
|
@@ -362,16 +356,16 @@ dependencies:
|
|
362
356
|
name: irb
|
363
357
|
requirement: !ruby/object:Gem::Requirement
|
364
358
|
requirements:
|
365
|
-
- - "
|
359
|
+
- - "~>"
|
366
360
|
- !ruby/object:Gem::Version
|
367
|
-
version: '
|
361
|
+
version: '1.15'
|
368
362
|
type: :development
|
369
363
|
prerelease: false
|
370
364
|
version_requirements: !ruby/object:Gem::Requirement
|
371
365
|
requirements:
|
372
|
-
- - "
|
366
|
+
- - "~>"
|
373
367
|
- !ruby/object:Gem::Version
|
374
|
-
version: '
|
368
|
+
version: '1.15'
|
375
369
|
description: IDE tools for code completion, inline documentation, and static analysis
|
376
370
|
email: admin@castwide.com
|
377
371
|
executables:
|