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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 353848ebb4c6cbcd1d29568a94ca2350bcfc3278292439f20ca193ac3feebbe4
4
- data.tar.gz: d679687c21c2749452b8f32580c5bd0d3753c2b5422a1d0e2a5789044b3892c9
3
+ metadata.gz: c031e57a0f9eb482a517ed584966ecfff9fd431aaee66d6c97d624393b56fb99
4
+ data.tar.gz: d6cc56999dc9da2073584a54f5b2ed045e24e573c84408359a9c7f94f8bd8571
5
5
  SHA512:
6
- metadata.gz: 9ea698ddf8c609f6f912a02cd0b6b9952719c7d4f5398a68c1662004db285f1b6a0ee2ad2bedb60fecff61cd559ed9f685bb19a3594f59de591c4f8f659c2622
7
- data.tar.gz: '020828068d62bded6d4ed1f205fdcc7cc961d108df8c6e2060d429c69a02e53652b1dd8587d6c697ae81109d50b7f8de2abf84240606a76c30bce24cbf0d43ab'
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)
@@ -124,7 +124,7 @@ module Solargraph
124
124
  def selfy?
125
125
  @name == 'self' || @key_types.any?(&:selfy?) || @subtypes.any?(&:selfy?)
126
126
  end
127
-
127
+
128
128
  UNDEFINED = UniqueType.new('undefined')
129
129
  BOOLEAN = UniqueType.new('Boolean')
130
130
  end
@@ -19,11 +19,12 @@ module Solargraph
19
19
  # @param context [String]
20
20
  # @return [ComplexType]
21
21
  def qualify api_map, context = ''
22
- types = @items.map do |t|
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(&:to_s))
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
- result.push Chain::BlockVariable.new("&#{n.children[0].children[0].to_s}")
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
- # if lit == '::Hash'
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.children.each do |u|
10
- loc = get_node_location(u)
11
- locals.push Solargraph::Pin::Parameter.new(
12
- location: loc,
13
- closure: region.closure,
14
- comments: comments_for(node),
15
- name: u.children[0].to_s,
16
- assignment: u.children[1],
17
- asgn_code: u.children[1] ? region.code_for(u.children[1]) : nil,
18
- presence: region.closure.location.range,
19
- decl: get_decl(u)
20
- )
21
- region.closure.parameters.push locals.last
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, 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 :block, Legacy::NodeProcessors::BlockNode
50
- register :or_asgn, Legacy::NodeProcessors::OrasgnNode
51
- register :sym, Legacy::NodeProcessors::SymNode
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")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.51.1'
4
+ VERSION = '0.51.2'
5
5
  end
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.1
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-23 00:00:00.000000000 Z
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: