solargraph 0.54.5 → 0.55.4

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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/typecheck.yml +1 -1
  3. data/CHANGELOG.md +27 -0
  4. data/lib/solargraph/api_map/store.rb +9 -4
  5. data/lib/solargraph/api_map.rb +116 -39
  6. data/lib/solargraph/complex_type/type_methods.rb +1 -0
  7. data/lib/solargraph/complex_type/unique_type.rb +91 -9
  8. data/lib/solargraph/complex_type.rb +35 -6
  9. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +60 -0
  10. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +100 -0
  11. data/lib/solargraph/convention/struct_definition.rb +101 -0
  12. data/lib/solargraph/convention.rb +1 -0
  13. data/lib/solargraph/doc_map.rb +83 -23
  14. data/lib/solargraph/gem_pins.rb +2 -1
  15. data/lib/solargraph/language_server/host/message_worker.rb +10 -7
  16. data/lib/solargraph/language_server/host.rb +3 -1
  17. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +1 -0
  18. data/lib/solargraph/location.rb +8 -0
  19. data/lib/solargraph/logging.rb +1 -0
  20. data/lib/solargraph/parser/comment_ripper.rb +12 -6
  21. data/lib/solargraph/parser/flow_sensitive_typing.rb +227 -0
  22. data/lib/solargraph/parser/node_methods.rb +14 -0
  23. data/lib/solargraph/parser/node_processor.rb +3 -2
  24. data/lib/solargraph/parser/parser_gem/class_methods.rb +9 -0
  25. data/lib/solargraph/parser/parser_gem/node_chainer.rb +10 -10
  26. data/lib/solargraph/parser/parser_gem/node_methods.rb +4 -2
  27. data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +2 -1
  28. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +21 -0
  29. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +4 -2
  30. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +4 -2
  31. data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +23 -2
  32. data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +2 -1
  33. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +6 -3
  34. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +2 -1
  35. data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +2 -1
  36. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +21 -0
  37. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +4 -2
  38. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +2 -1
  39. data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +29 -6
  40. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +41 -0
  41. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
  42. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -3
  43. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +28 -16
  44. data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +2 -1
  45. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -0
  46. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -0
  47. data/lib/solargraph/parser/parser_gem/node_processors.rb +10 -0
  48. data/lib/solargraph/parser/region.rb +1 -1
  49. data/lib/solargraph/parser.rb +1 -0
  50. data/lib/solargraph/pin/base.rb +34 -5
  51. data/lib/solargraph/pin/base_variable.rb +7 -1
  52. data/lib/solargraph/pin/block.rb +2 -0
  53. data/lib/solargraph/pin/breakable.rb +9 -0
  54. data/lib/solargraph/pin/callable.rb +5 -3
  55. data/lib/solargraph/pin/closure.rb +6 -1
  56. data/lib/solargraph/pin/common.rb +5 -0
  57. data/lib/solargraph/pin/delegated_method.rb +20 -1
  58. data/lib/solargraph/pin/documenting.rb +16 -0
  59. data/lib/solargraph/pin/keyword.rb +7 -2
  60. data/lib/solargraph/pin/local_variable.rb +7 -1
  61. data/lib/solargraph/pin/method.rb +34 -27
  62. data/lib/solargraph/pin/namespace.rb +17 -9
  63. data/lib/solargraph/pin/parameter.rb +17 -5
  64. data/lib/solargraph/pin/proxy_type.rb +12 -6
  65. data/lib/solargraph/pin/reference/override.rb +10 -6
  66. data/lib/solargraph/pin/reference/require.rb +2 -2
  67. data/lib/solargraph/pin/signature.rb +4 -0
  68. data/lib/solargraph/pin/singleton.rb +1 -1
  69. data/lib/solargraph/pin/symbol.rb +3 -2
  70. data/lib/solargraph/pin/until.rb +18 -0
  71. data/lib/solargraph/pin/while.rb +18 -0
  72. data/lib/solargraph/pin.rb +4 -1
  73. data/lib/solargraph/rbs_map/conversions.rb +172 -56
  74. data/lib/solargraph/rbs_map/core_fills.rb +32 -16
  75. data/lib/solargraph/rbs_map/core_map.rb +3 -2
  76. data/lib/solargraph/shell.rb +1 -0
  77. data/lib/solargraph/source/chain/array.rb +11 -7
  78. data/lib/solargraph/source/chain/block_symbol.rb +1 -1
  79. data/lib/solargraph/source/chain/block_variable.rb +1 -1
  80. data/lib/solargraph/source/chain/call.rb +53 -23
  81. data/lib/solargraph/source/chain/constant.rb +1 -1
  82. data/lib/solargraph/source/chain/hash.rb +4 -3
  83. data/lib/solargraph/source/chain/head.rb +1 -1
  84. data/lib/solargraph/source/chain/if.rb +1 -1
  85. data/lib/solargraph/source/chain/link.rb +2 -0
  86. data/lib/solargraph/source/chain/literal.rb +22 -2
  87. data/lib/solargraph/source/chain/or.rb +1 -1
  88. data/lib/solargraph/source/chain/z_super.rb +1 -1
  89. data/lib/solargraph/source/chain.rb +78 -48
  90. data/lib/solargraph/source/source_chainer.rb +2 -2
  91. data/lib/solargraph/source_map/clip.rb +3 -1
  92. data/lib/solargraph/source_map/mapper.rb +9 -5
  93. data/lib/solargraph/type_checker/checks.rb +4 -0
  94. data/lib/solargraph/type_checker.rb +35 -8
  95. data/lib/solargraph/version.rb +1 -1
  96. data/lib/solargraph/yard_map/mapper/to_constant.rb +4 -2
  97. data/lib/solargraph/yard_map/mapper/to_method.rb +55 -15
  98. data/lib/solargraph/yard_map/mapper/to_namespace.rb +4 -2
  99. data/lib/solargraph/yard_map/mapper.rb +4 -3
  100. data/lib/solargraph/yard_map/to_method.rb +4 -2
  101. data/lib/solargraph.rb +20 -0
  102. data/rbs/fills/tuple.rbs +150 -0
  103. metadata +15 -2
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.54.5'
4
+ VERSION = '0.55.4'
5
5
  end
@@ -10,14 +10,16 @@ module Solargraph
10
10
  def self.make code_object, closure = nil, spec = nil
11
11
  closure ||= Solargraph::Pin::Namespace.new(
12
12
  name: code_object.namespace.to_s,
13
- gates: [code_object.namespace.to_s]
13
+ gates: [code_object.namespace.to_s],
14
+ source: :yardoc,
14
15
  )
15
16
  Pin::Constant.new(
16
17
  location: object_location(code_object, spec),
17
18
  closure: closure,
18
19
  name: code_object.name.to_s,
19
20
  comments: code_object.docstring ? code_object.docstring.all.to_s : '',
20
- visibility: code_object.visibility
21
+ visibility: code_object.visibility,
22
+ source: :yardoc
21
23
  )
22
24
  end
23
25
  end
@@ -6,6 +6,11 @@ module Solargraph
6
6
  module ToMethod
7
7
  extend YardMap::Helpers
8
8
 
9
+ VISIBILITY_OVERRIDE = {
10
+ # YARD pays attention to 'private' statements prior to class methods but shouldn't
11
+ ["Rails::Engine", :class, "find_root_with_flag"] => :public
12
+ }
13
+
9
14
  # @param code_object [YARD::CodeObjects::Base]
10
15
  # @param name [String, nil]
11
16
  # @param scope [Symbol, nil]
@@ -16,29 +21,63 @@ module Solargraph
16
21
  def self.make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
17
22
  closure ||= Solargraph::Pin::Namespace.new(
18
23
  name: code_object.namespace.to_s,
19
- gates: [code_object.namespace.to_s]
24
+ gates: [code_object.namespace.to_s],
25
+ type: code_object.namespace.is_a?(YARD::CodeObjects::ClassObject) ? :class : :module,
26
+ source: :yardoc,
20
27
  )
21
28
  location = object_location(code_object, spec)
22
29
  name ||= code_object.name.to_s
23
30
  return_type = ComplexType::SELF if name == 'new'
24
31
  comments = code_object.docstring ? code_object.docstring.all.to_s : ''
25
- pin = Pin::Method.new(
26
- location: location,
27
- closure: closure,
28
- name: name,
29
- comments: comments,
30
- scope: scope || code_object.scope,
31
- visibility: visibility || code_object.visibility,
32
- # @todo Might need to convert overloads to signatures
33
- parameters: [],
34
- explicit: code_object.is_explicit?,
35
- return_type: return_type
36
- )
37
- pin.parameters.concat get_parameters(code_object, location, comments, pin)
32
+ final_scope = scope || code_object.scope
33
+ override_key = [closure.path, final_scope, name]
34
+ final_visibility = VISIBILITY_OVERRIDE[override_key]
35
+ final_visibility ||= VISIBILITY_OVERRIDE[override_key[0..-2]]
36
+ final_visibility ||= :private if closure.path == 'Kernel' && Kernel.private_instance_methods(false).include?(name)
37
+ final_visibility ||= visibility
38
+ final_visibility ||= :private if code_object.module_function? && final_scope == :instance
39
+ final_visibility ||= :public if code_object.module_function? && final_scope == :class
40
+ final_visibility ||= code_object.visibility
41
+ if code_object.is_alias?
42
+ origin_code_object = code_object.namespace.aliases[code_object]
43
+ pin = Pin::MethodAlias.new(
44
+ name: name,
45
+ location: location,
46
+ original: origin_code_object.name.to_s,
47
+ closure: closure,
48
+ comments: comments,
49
+ scope: final_scope,
50
+ visibility: final_visibility,
51
+ explicit: code_object.is_explicit?,
52
+ return_type: return_type,
53
+ parameters: [],
54
+ source: :yardoc,
55
+ )
56
+ else
57
+ pin = Pin::Method.new(
58
+ location: location,
59
+ closure: closure,
60
+ name: name,
61
+ comments: comments,
62
+ scope: final_scope,
63
+ visibility: final_visibility,
64
+ # @todo Might need to convert overloads to signatures
65
+ explicit: code_object.is_explicit?,
66
+ return_type: return_type,
67
+ attribute: code_object.is_attribute?,
68
+ parameters: [],
69
+ source: :yardoc,
70
+ )
71
+ pin.parameters.concat get_parameters(code_object, location, comments, pin)
72
+ pin.parameters.freeze
73
+ end
74
+ logger.debug { "ToMethod.make: Just created method pin: #{pin.inspect}" }
38
75
  pin
39
76
  end
40
77
 
41
78
  class << self
79
+ include Logging
80
+
42
81
  private
43
82
 
44
83
  # @param code_object [YARD::CodeObjects::Base]
@@ -59,7 +98,8 @@ module Solargraph
59
98
  name: arg_name(a),
60
99
  presence: nil,
61
100
  decl: arg_type(a),
62
- asgn_code: a[1]
101
+ asgn_code: a[1],
102
+ source: :yardoc,
63
103
  )
64
104
  end
65
105
  end
@@ -11,7 +11,8 @@ module Solargraph
11
11
  closure ||= Solargraph::Pin::Namespace.new(
12
12
  name: code_object.namespace.to_s,
13
13
  closure: Pin::ROOT_PIN,
14
- gates: [code_object.namespace.to_s]
14
+ gates: [code_object.namespace.to_s],
15
+ source: :yardoc,
15
16
  )
16
17
  Pin::Namespace.new(
17
18
  location: object_location(code_object, spec),
@@ -19,7 +20,8 @@ module Solargraph
19
20
  comments: code_object.docstring ? code_object.docstring.all.to_s : '',
20
21
  type: code_object.is_a?(YARD::CodeObjects::ClassObject) ? :class : :module,
21
22
  visibility: code_object.visibility,
22
- closure: closure
23
+ closure: closure,
24
+ source: :yardoc,
23
25
  )
24
26
  end
25
27
  end
@@ -47,15 +47,16 @@ module Solargraph
47
47
  else
48
48
  code_object.superclass.to_s
49
49
  end
50
- result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin)
50
+ result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin, source: :yard_map)
51
51
  end
52
52
  code_object.class_mixins.each do |m|
53
- result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path)
53
+ result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path, source: :yard_map)
54
54
  end
55
55
  code_object.instance_mixins.each do |m|
56
56
  result.push Solargraph::Pin::Reference::Include.new(
57
57
  closure: nspin, # @todo Fix this
58
- name: m.path
58
+ name: m.path,
59
+ source: :yard_map
59
60
  )
60
61
  end
61
62
  elsif code_object.is_a?(YARD::CodeObjects::MethodObject)
@@ -23,7 +23,8 @@ module Solargraph
23
23
  name: arg_name(a),
24
24
  presence: nil,
25
25
  decl: arg_type(a),
26
- asgn_code: a[1]
26
+ asgn_code: a[1],
27
+ source: :yard_map
27
28
  )
28
29
  end
29
30
  end
@@ -78,7 +79,8 @@ module Solargraph
78
79
  scope: scope || code_object.scope,
79
80
  visibility: visibility || code_object.visibility,
80
81
  parameters: InnerMethods.get_parameters(code_object, location, comments),
81
- explicit: code_object.is_explicit?
82
+ explicit: code_object.is_explicit?,
83
+ source: :yard_map
82
84
  )
83
85
  end
84
86
  end
data/lib/solargraph.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Encoding.default_external = 'UTF-8'
4
4
 
5
+ require 'bundler'
5
6
  require 'set'
6
7
  require 'yard-solargraph'
7
8
  require 'solargraph/yard_tags'
@@ -52,6 +53,25 @@ module Solargraph
52
53
  dir = File.dirname(__FILE__)
53
54
  VIEWS_PATH = File.join(dir, 'solargraph', 'views')
54
55
 
56
+ # @param type [Symbol] Type of assert. Not used yet, but may be
57
+ # used in the future to allow configurable asserts mixes for
58
+ # different situations.
59
+ def self.asserts_on?(type)
60
+ @asserts_on ||= if ENV['SOLARGRAPH_ASSERTS'].nil? || ENV['SOLARGRAPH_ASSERTS'].empty?
61
+ false
62
+ elsif ENV['SOLARGRAPH_ASSERTS'] == 'on'
63
+ true
64
+ else
65
+ logger.warn "Unrecognized SOLARGRAPH_ASSERTS value: #{ENV['SOLARGRAPH_ASSERTS']}"
66
+ false
67
+ end
68
+ end
69
+
70
+ def self.assert_or_log(type, msg = nil, &block)
71
+ raise (msg || block.call) if asserts_on?(type) && ![:combine_with_visibility].include?(type)
72
+ logger.info msg, &block
73
+ end
74
+
55
75
  # A convenience method for Solargraph::Logging.logger.
56
76
  #
57
77
  # @return [Logger]
@@ -0,0 +1,150 @@
1
+ # <-- liberally borrowed from
2
+ # https://github.com/ruby/rbs/blob/master/core/array.rbs, which
3
+ # was generated from
4
+ # https://github.com/ruby/ruby/blob/master/array.c
5
+ # -->
6
+ module Solargraph
7
+ module Fills
8
+ class Tuple[unchecked out A,
9
+ unchecked out B = A,
10
+ unchecked out C = A | B,
11
+ unchecked out D = A | B | C,
12
+ unchecked out E = A | B | C | D,
13
+ unchecked out F = A | B | C | D | E,
14
+ unchecked out G = A | B | C | D | E | F,
15
+ unchecked out H = A | B | C | D | E | F | G,
16
+ unchecked out I = A | B | C | D | E | F | G | H,
17
+ unchecked out J = A | B | C | D | E | F | G | H | I] < Array[A | B | C | D | E | F | G | H | I | J]
18
+ # <!--
19
+ # rdoc-file=array.c
20
+ # - self[index] -> object or nil
21
+ # -->
22
+ # Returns elements from `self`; does not modify `self`.
23
+ #
24
+ # In brief:
25
+ #
26
+ # a = [:foo, 'bar', 2]
27
+ #
28
+ # # Single argument index: returns one element.
29
+ # a[0] # => :foo # Zero-based index.
30
+ #
31
+ # When a single integer argument `index` is given, returns the element at offset
32
+ # `index`:
33
+ #
34
+ # a = [:foo, 'bar', 2]
35
+ # a[0] # => :foo
36
+ # a[2] # => 2
37
+ # a # => [:foo, "bar", 2]
38
+ def []: (0 index) -> A
39
+ | (1 index) -> B
40
+ | (2 index) -> C
41
+ | (3 index) -> D
42
+ | (4 index) -> E
43
+ | (5 index) -> F
44
+ | (6 index) -> G
45
+ | (7 index) -> H
46
+ | (8 index) -> I
47
+ | (9 index) -> J
48
+ | (0 index) -> K
49
+ | (int index) -> nil
50
+
51
+ # <!--
52
+ # rdoc-file=array.c
53
+ # - at(index) -> object or nil
54
+ # -->
55
+ # Returns the element of `self` specified by the given `index` or `nil` if there
56
+ # is no such element; `index` must be an [integer-convertible
57
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
58
+ #
59
+ # For non-negative `index`, returns the element of `self` at offset `index`:
60
+ #
61
+ # a = [:foo, 'bar', 2]
62
+ # a.at(0) # => :foo
63
+ # a.at(2) # => 2
64
+ # a.at(2.0) # => 2
65
+ #
66
+ # Related: Array#[]; see also [Methods for
67
+ # Fetching](rdoc-ref:Array@Methods+for+Fetching).
68
+ #
69
+ def at: (0 index) -> A
70
+ | (1 index) -> B
71
+ | (2 index) -> C
72
+ | (3 index) -> D
73
+ | (4 index) -> E
74
+ | (5 index) -> F
75
+ | (6 index) -> G
76
+ | (7 index) -> H
77
+ | (8 index) -> I
78
+ | (9 index) -> J
79
+ | (int index) -> nil
80
+
81
+ # <!--
82
+ # rdoc-file=array.c
83
+ # - fetch(index) -> element
84
+ # - fetch(index, default_value) -> element or default_value
85
+ # - fetch(index) {|index| ... } -> element or block_return_value
86
+ # -->
87
+ # Returns the element of `self` at offset `index` if `index` is in range;
88
+ # `index` must be an [integer-convertible
89
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
90
+ #
91
+ # With the single argument `index` and no block, returns the element at offset
92
+ # `index`:
93
+ #
94
+ # a = [:foo, 'bar', 2]
95
+ # a.fetch(1) # => "bar"
96
+ # a.fetch(1.1) # => "bar"
97
+ #
98
+ # With arguments `index` and `default_value` (which may be any object) and no
99
+ # block, returns `default_value` if `index` is out-of-range:
100
+ #
101
+ # a = [:foo, 'bar', 2]
102
+ # a.fetch(1, nil) # => "bar"
103
+ # a.fetch(3, :foo) # => :foo
104
+ #
105
+ # With argument `index` and a block, returns the element at offset `index` if
106
+ # index is in range (and the block is not called); otherwise calls the block
107
+ # with index and returns its return value:
108
+ #
109
+ # a = [:foo, 'bar', 2]
110
+ # a.fetch(1) {|index| raise 'Cannot happen' } # => "bar"
111
+ # a.fetch(50) {|index| "Value for #{index}" } # => "Value for 50"
112
+ #
113
+ # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
114
+ #
115
+ def fetch: (0 index) -> A
116
+ | (1 index) -> B
117
+ | (2 index) -> C
118
+ | (3 index) -> D
119
+ | (4 index) -> E
120
+ | (5 index) -> F
121
+ | (6 index) -> G
122
+ | (7 index) -> H
123
+ | (8 index) -> I
124
+ | (9 index) -> J
125
+ | (int index) -> void
126
+ | [T] (0 index, T default) -> (A | T)
127
+ | [T] (1 index, T default) -> (B | T)
128
+ | [T] (2 index, T default) -> (C | T)
129
+ | [T] (3 index, T default) -> (D | T)
130
+ | [T] (4 index, T default) -> (E | T)
131
+ | [T] (5 index, T default) -> (F | T)
132
+ | [T] (6 index, T default) -> (G | T)
133
+ | [T] (7 index, T default) -> (H | T)
134
+ | [T] (8 index, T default) -> (I | T)
135
+ | [T] (9 index, T default) -> (J | T)
136
+ | [T] (int index, T default) -> (A | B | C | D | E | F |G | H | I | J | T)
137
+ | [T] (0 index) { (int index) -> T } -> (A | T)
138
+ | [T] (1 index) { (int index) -> T } -> (B | T)
139
+ | [T] (2 index) { (int index) -> T } -> (C | T)
140
+ | [T] (3 index) { (int index) -> T } -> (D | T)
141
+ | [T] (4 index) { (int index) -> T } -> (E | T)
142
+ | [T] (5 index) { (int index) -> T } -> (F | T)
143
+ | [T] (6 index) { (int index) -> T } -> (G | T)
144
+ | [T] (7 index) { (int index) -> T } -> (H | T)
145
+ | [T] (8 index) { (int index) -> T } -> (I | T)
146
+ | [T] (9 index) { (int index) -> T } -> (J | T)
147
+ | [T] (int index) { (int index) -> T } -> (A | B | C | D | E | F |G | H | I | J | T)
148
+ end
149
+ end
150
+ 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.5
4
+ version: 0.55.4
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-05-17 00:00:00.000000000 Z
11
+ date: 2025-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -410,6 +410,9 @@ files:
410
410
  - lib/solargraph/convention/gemfile.rb
411
411
  - lib/solargraph/convention/gemspec.rb
412
412
  - lib/solargraph/convention/rakefile.rb
413
+ - lib/solargraph/convention/struct_definition.rb
414
+ - lib/solargraph/convention/struct_definition/struct_assignment_node.rb
415
+ - lib/solargraph/convention/struct_definition/struct_definition_node.rb
413
416
  - lib/solargraph/converters/dd.rb
414
417
  - lib/solargraph/converters/dl.rb
415
418
  - lib/solargraph/converters/dt.rb
@@ -493,6 +496,7 @@ files:
493
496
  - lib/solargraph/page.rb
494
497
  - lib/solargraph/parser.rb
495
498
  - lib/solargraph/parser/comment_ripper.rb
499
+ - lib/solargraph/parser/flow_sensitive_typing.rb
496
500
  - lib/solargraph/parser/node_methods.rb
497
501
  - lib/solargraph/parser/node_processor.rb
498
502
  - lib/solargraph/parser/node_processor/base.rb
@@ -503,6 +507,7 @@ files:
503
507
  - lib/solargraph/parser/parser_gem/node_methods.rb
504
508
  - lib/solargraph/parser/parser_gem/node_processors.rb
505
509
  - lib/solargraph/parser/parser_gem/node_processors/alias_node.rb
510
+ - lib/solargraph/parser/parser_gem/node_processors/and_node.rb
506
511
  - lib/solargraph/parser/parser_gem/node_processors/args_node.rb
507
512
  - lib/solargraph/parser/parser_gem/node_processors/begin_node.rb
508
513
  - lib/solargraph/parser/parser_gem/node_processors/block_node.rb
@@ -511,21 +516,26 @@ files:
511
516
  - lib/solargraph/parser/parser_gem/node_processors/def_node.rb
512
517
  - lib/solargraph/parser/parser_gem/node_processors/defs_node.rb
513
518
  - lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb
519
+ - lib/solargraph/parser/parser_gem/node_processors/if_node.rb
514
520
  - lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb
515
521
  - lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb
516
522
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
517
523
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
524
+ - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
518
525
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
519
526
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
520
527
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
521
528
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
522
529
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
530
+ - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
531
+ - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
523
532
  - lib/solargraph/parser/region.rb
524
533
  - lib/solargraph/parser/snippet.rb
525
534
  - lib/solargraph/pin.rb
526
535
  - lib/solargraph/pin/base.rb
527
536
  - lib/solargraph/pin/base_variable.rb
528
537
  - lib/solargraph/pin/block.rb
538
+ - lib/solargraph/pin/breakable.rb
529
539
  - lib/solargraph/pin/callable.rb
530
540
  - lib/solargraph/pin/class_variable.rb
531
541
  - lib/solargraph/pin/closure.rb
@@ -556,6 +566,8 @@ files:
556
566
  - lib/solargraph/pin/signature.rb
557
567
  - lib/solargraph/pin/singleton.rb
558
568
  - lib/solargraph/pin/symbol.rb
569
+ - lib/solargraph/pin/until.rb
570
+ - lib/solargraph/pin/while.rb
559
571
  - lib/solargraph/position.rb
560
572
  - lib/solargraph/range.rb
561
573
  - lib/solargraph/rbs_map.rb
@@ -619,6 +631,7 @@ files:
619
631
  - lib/solargraph/yard_map/to_method.rb
620
632
  - lib/solargraph/yard_tags.rb
621
633
  - lib/solargraph/yardoc.rb
634
+ - rbs/fills/tuple.rbs
622
635
  - solargraph.gemspec
623
636
  homepage: https://solargraph.org
624
637
  licenses: