solargraph 0.51.1 → 0.51.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/solargraph/complex_type/unique_type.rb +1 -1
- data/lib/solargraph/complex_type.rb +13 -3
- data/lib/solargraph/parser/legacy/node_chainer.rb +9 -6
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +28 -13
- data/lib/solargraph/parser/legacy/node_processors.rb +22 -21
- data/lib/solargraph/pin/method.rb +1 -1
- data/lib/solargraph/version.rb +1 -1
- data/solargraph.gemspec +2 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c031e57a0f9eb482a517ed584966ecfff9fd431aaee66d6c97d624393b56fb99
|
4
|
+
data.tar.gz: d6cc56999dc9da2073584a54f5b2ed045e24e573c84408359a9c7f94f8bd8571
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa5be8998891287e3a92429f2317c3bc64235d71977476248cbf3ba1167842b2e65c666b7f1bb49254bcc9c1ad67b2f4ea7f4cd1c50ef3c16723bdbd5286049a
|
7
|
+
data.tar.gz: 30b453fc424796b8b776d2c79b014d19645dd2f091fb6cb6822a6f373e1df719809d845bef66fc3146c821c42a7268f60ff65e034a93f5d51708e5a0028f7fb1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.51.2 - February 1, 2025
|
2
|
+
- Fix exception from parser when anonymous block forwarding is used (#740)
|
3
|
+
- Parameterized Object types
|
4
|
+
- Remove extraneous comment from method examples
|
5
|
+
|
1
6
|
## 0.51.1 - January 23, 2025
|
2
7
|
- Format example code
|
3
8
|
- Block infers yieldself from chain
|
@@ -12,6 +17,7 @@
|
|
12
17
|
- Enable diagnostics by default
|
13
18
|
- Remove RSpec convention (#716)
|
14
19
|
- Include convention pins in document_symbols (#724)
|
20
|
+
- Implement Go To Type Definition (#717)
|
15
21
|
- Remove e2mmap dependency (#699)
|
16
22
|
- Update rbs to 3.0
|
17
23
|
- Relax reverse_markdown dependency (#729)
|
@@ -19,11 +19,12 @@ module Solargraph
|
|
19
19
|
# @param context [String]
|
20
20
|
# @return [ComplexType]
|
21
21
|
def qualify api_map, context = ''
|
22
|
-
|
22
|
+
red = reduce_object
|
23
|
+
types = red.items.map do |t|
|
23
24
|
next t if ['Boolean', 'nil', 'void', 'undefined'].include?(t.name)
|
24
25
|
t.qualify api_map, context
|
25
26
|
end
|
26
|
-
ComplexType.new(types)
|
27
|
+
ComplexType.new(types).reduce_object
|
27
28
|
end
|
28
29
|
|
29
30
|
def first
|
@@ -120,7 +121,7 @@ module Solargraph
|
|
120
121
|
return self unless selfy?
|
121
122
|
red = reduce_class(dst)
|
122
123
|
result = @items.map { |i| i.self_to red }
|
123
|
-
ComplexType.parse(*result.map(&:
|
124
|
+
ComplexType.parse(*result.map(&:tag))
|
124
125
|
end
|
125
126
|
|
126
127
|
def nullable?
|
@@ -131,6 +132,15 @@ module Solargraph
|
|
131
132
|
@items.first.all_params || []
|
132
133
|
end
|
133
134
|
|
135
|
+
protected
|
136
|
+
|
137
|
+
attr_reader :items
|
138
|
+
|
139
|
+
def reduce_object
|
140
|
+
return self if name != 'Object' || subtypes.empty?
|
141
|
+
ComplexType.try_parse(reduce_class(subtypes.join(', ')))
|
142
|
+
end
|
143
|
+
|
134
144
|
private
|
135
145
|
|
136
146
|
# @todo This is a quick and dirty hack that forces `self` keywords
|
@@ -118,16 +118,19 @@ module Solargraph
|
|
118
118
|
elsif [:begin, :kwbegin].include?(n.type)
|
119
119
|
result.concat generate_links(n.children[0])
|
120
120
|
elsif n.type == :block_pass
|
121
|
-
|
121
|
+
block_variable_name_node = n.children[0]
|
122
|
+
if block_variable_name_node.nil?
|
123
|
+
# anonymous block forwarding (e.g., "&")
|
124
|
+
# added in Ruby 3.1 - https://bugs.ruby-lang.org/issues/11256
|
125
|
+
result.push Chain::BlockVariable.new(nil)
|
126
|
+
else
|
127
|
+
result.push Chain::BlockVariable.new("&#{block_variable_name_node.children[0].to_s}")
|
128
|
+
end
|
122
129
|
elsif n.type == :hash
|
123
130
|
result.push Chain::Hash.new('::Hash', hash_is_splatted?(n))
|
124
131
|
else
|
125
132
|
lit = infer_literal_node_type(n)
|
126
|
-
|
127
|
-
# result.push Chain::Hash.new(lit, hash_is_splatted?(n))
|
128
|
-
# else
|
129
|
-
result.push (lit ? Chain::Literal.new(lit) : Chain::Link.new)
|
130
|
-
# end
|
133
|
+
result.push (lit ? Chain::Literal.new(lit) : Chain::Link.new)
|
131
134
|
end
|
132
135
|
result
|
133
136
|
end
|
@@ -6,25 +6,40 @@ module Solargraph
|
|
6
6
|
module NodeProcessors
|
7
7
|
class ArgsNode < Parser::NodeProcessor::Base
|
8
8
|
def process
|
9
|
-
node.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
9
|
+
if node.type == :forward_args
|
10
|
+
forward
|
11
|
+
else
|
12
|
+
node.children.each do |u|
|
13
|
+
loc = get_node_location(u)
|
14
|
+
locals.push Solargraph::Pin::Parameter.new(
|
15
|
+
location: loc,
|
16
|
+
closure: region.closure,
|
17
|
+
comments: comments_for(node),
|
18
|
+
name: u.children[0].to_s,
|
19
|
+
assignment: u.children[1],
|
20
|
+
asgn_code: u.children[1] ? region.code_for(u.children[1]) : nil,
|
21
|
+
presence: region.closure.location.range,
|
22
|
+
decl: get_decl(u)
|
23
|
+
)
|
24
|
+
region.closure.parameters.push locals.last
|
25
|
+
end
|
22
26
|
end
|
23
27
|
process_children
|
24
28
|
end
|
25
29
|
|
26
30
|
private
|
27
31
|
|
32
|
+
def forward
|
33
|
+
loc = get_node_location(node)
|
34
|
+
locals.push Solargraph::Pin::Parameter.new(
|
35
|
+
location: loc,
|
36
|
+
closure: region.closure,
|
37
|
+
presence: region.closure.location.range,
|
38
|
+
decl: get_decl(node)
|
39
|
+
)
|
40
|
+
region.closure.parameters.push locals.last
|
41
|
+
end
|
42
|
+
|
28
43
|
def get_decl node
|
29
44
|
node.type
|
30
45
|
end
|
@@ -28,27 +28,28 @@ module Solargraph
|
|
28
28
|
end
|
29
29
|
|
30
30
|
module NodeProcessor
|
31
|
-
register :source,
|
32
|
-
register :begin,
|
33
|
-
register :kwbegin,
|
34
|
-
register :rescue,
|
35
|
-
register :resbody,
|
36
|
-
register :def,
|
37
|
-
register :defs,
|
38
|
-
register :send,
|
39
|
-
register :class,
|
40
|
-
register :module,
|
41
|
-
register :sclass,
|
42
|
-
register :ivasgn,
|
43
|
-
register :cvasgn,
|
44
|
-
register :lvasgn,
|
45
|
-
register :gvasgn,
|
46
|
-
register :casgn,
|
47
|
-
register :alias,
|
48
|
-
register :args,
|
49
|
-
register :
|
50
|
-
register :
|
51
|
-
register :
|
31
|
+
register :source, Legacy::NodeProcessors::BeginNode
|
32
|
+
register :begin, Legacy::NodeProcessors::BeginNode
|
33
|
+
register :kwbegin, Legacy::NodeProcessors::BeginNode
|
34
|
+
register :rescue, Legacy::NodeProcessors::BeginNode
|
35
|
+
register :resbody, Legacy::NodeProcessors::ResbodyNode
|
36
|
+
register :def, Legacy::NodeProcessors::DefNode
|
37
|
+
register :defs, Legacy::NodeProcessors::DefsNode
|
38
|
+
register :send, Legacy::NodeProcessors::SendNode
|
39
|
+
register :class, Legacy::NodeProcessors::NamespaceNode
|
40
|
+
register :module, Legacy::NodeProcessors::NamespaceNode
|
41
|
+
register :sclass, Legacy::NodeProcessors::SclassNode
|
42
|
+
register :ivasgn, Legacy::NodeProcessors::IvasgnNode
|
43
|
+
register :cvasgn, Legacy::NodeProcessors::CvasgnNode
|
44
|
+
register :lvasgn, Legacy::NodeProcessors::LvasgnNode
|
45
|
+
register :gvasgn, Legacy::NodeProcessors::GvasgnNode
|
46
|
+
register :casgn, Legacy::NodeProcessors::CasgnNode
|
47
|
+
register :alias, Legacy::NodeProcessors::AliasNode
|
48
|
+
register :args, Legacy::NodeProcessors::ArgsNode
|
49
|
+
register :forward_args, Legacy::NodeProcessors::ArgsNode
|
50
|
+
register :block, Legacy::NodeProcessors::BlockNode
|
51
|
+
register :or_asgn, Legacy::NodeProcessors::OrasgnNode
|
52
|
+
register :sym, Legacy::NodeProcessors::SymNode
|
52
53
|
end
|
53
54
|
end
|
54
55
|
end
|
@@ -337,7 +337,7 @@ module Solargraph
|
|
337
337
|
return if example_tags.empty?
|
338
338
|
@documentation += "\n\nExamples:\n\n```ruby\n"
|
339
339
|
@documentation += example_tags.map do |tag|
|
340
|
-
(tag.name ? "# #{tag.name}\n" : '') +
|
340
|
+
(tag.name && !tag.name.empty? ? "# #{tag.name}\n" : '') +
|
341
341
|
"#{tag.text}\n"
|
342
342
|
end
|
343
343
|
.join("\n")
|
data/lib/solargraph/version.rb
CHANGED
data/solargraph.gemspec
CHANGED
@@ -47,4 +47,6 @@ Gem::Specification.new do |s|
|
|
47
47
|
s.add_development_dependency 'rspec', '~> 3.5'
|
48
48
|
s.add_development_dependency 'simplecov', '~> 0.14'
|
49
49
|
s.add_development_dependency 'webmock', '~> 3.6'
|
50
|
+
# work around missing yard dependency needed as of Ruby 3.5
|
51
|
+
s.add_development_dependency 'irb'
|
50
52
|
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.51.
|
4
|
+
version: 0.51.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-01
|
11
|
+
date: 2025-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|
@@ -344,6 +344,20 @@ dependencies:
|
|
344
344
|
- - "~>"
|
345
345
|
- !ruby/object:Gem::Version
|
346
346
|
version: '3.6'
|
347
|
+
- !ruby/object:Gem::Dependency
|
348
|
+
name: irb
|
349
|
+
requirement: !ruby/object:Gem::Requirement
|
350
|
+
requirements:
|
351
|
+
- - ">="
|
352
|
+
- !ruby/object:Gem::Version
|
353
|
+
version: '0'
|
354
|
+
type: :development
|
355
|
+
prerelease: false
|
356
|
+
version_requirements: !ruby/object:Gem::Requirement
|
357
|
+
requirements:
|
358
|
+
- - ">="
|
359
|
+
- !ruby/object:Gem::Version
|
360
|
+
version: '0'
|
347
361
|
description: IDE tools for code completion, inline documentation, and static analysis
|
348
362
|
email: admin@castwide.com
|
349
363
|
executables:
|