solargraph 0.51.1 → 0.51.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 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: