solargraph 0.58.1 → 0.58.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/.gitignore +1 -0
- data/CHANGELOG.md +7 -1
- data/lib/solargraph/api_map/cache.rb +110 -110
- data/lib/solargraph/api_map/constants.rb +279 -279
- data/lib/solargraph/api_map/index.rb +193 -193
- data/lib/solargraph/api_map/source_to_yard.rb +97 -97
- data/lib/solargraph/api_map/store.rb +384 -384
- data/lib/solargraph/api_map.rb +945 -945
- data/lib/solargraph/complex_type/type_methods.rb +228 -228
- data/lib/solargraph/complex_type/unique_type.rb +482 -482
- data/lib/solargraph/complex_type.rb +444 -444
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
- data/lib/solargraph/convention/data_definition.rb +105 -105
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
- data/lib/solargraph/convention/struct_definition.rb +164 -164
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
- data/lib/solargraph/diagnostics/rubocop.rb +118 -118
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -68
- data/lib/solargraph/diagnostics/type_check.rb +55 -55
- data/lib/solargraph/doc_map.rb +439 -439
- data/lib/solargraph/equality.rb +34 -34
- data/lib/solargraph/gem_pins.rb +98 -98
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +130 -130
- data/lib/solargraph/language_server/host/message_worker.rb +112 -112
- data/lib/solargraph/language_server/host/sources.rb +99 -99
- data/lib/solargraph/language_server/host.rb +878 -878
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
- data/lib/solargraph/language_server/message/extended/document.rb +23 -23
- data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
- data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -148
- data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/library.rb +683 -683
- data/lib/solargraph/location.rb +82 -82
- data/lib/solargraph/logging.rb +37 -37
- data/lib/solargraph/parser/comment_ripper.rb +69 -69
- data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
- data/lib/solargraph/parser/node_processor/base.rb +92 -92
- data/lib/solargraph/parser/node_processor.rb +62 -62
- data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -149
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
- data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -486
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -52
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -291
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
- data/lib/solargraph/parser/region.rb +69 -69
- data/lib/solargraph/parser/snippet.rb +17 -17
- data/lib/solargraph/pin/base.rb +729 -729
- data/lib/solargraph/pin/base_variable.rb +126 -126
- data/lib/solargraph/pin/block.rb +104 -104
- data/lib/solargraph/pin/breakable.rb +9 -9
- data/lib/solargraph/pin/callable.rb +231 -231
- data/lib/solargraph/pin/closure.rb +72 -72
- data/lib/solargraph/pin/common.rb +79 -79
- data/lib/solargraph/pin/conversions.rb +123 -123
- data/lib/solargraph/pin/delegated_method.rb +120 -120
- data/lib/solargraph/pin/documenting.rb +114 -114
- data/lib/solargraph/pin/instance_variable.rb +34 -34
- data/lib/solargraph/pin/keyword.rb +20 -20
- data/lib/solargraph/pin/local_variable.rb +75 -75
- data/lib/solargraph/pin/method.rb +672 -672
- data/lib/solargraph/pin/method_alias.rb +34 -34
- data/lib/solargraph/pin/namespace.rb +115 -115
- data/lib/solargraph/pin/parameter.rb +275 -275
- data/lib/solargraph/pin/proxy_type.rb +39 -39
- data/lib/solargraph/pin/reference/override.rb +47 -47
- data/lib/solargraph/pin/reference/superclass.rb +15 -15
- data/lib/solargraph/pin/reference.rb +39 -39
- data/lib/solargraph/pin/search.rb +61 -61
- data/lib/solargraph/pin/signature.rb +61 -61
- data/lib/solargraph/pin/symbol.rb +53 -53
- data/lib/solargraph/pin/until.rb +18 -18
- data/lib/solargraph/pin/while.rb +18 -18
- data/lib/solargraph/pin.rb +44 -44
- data/lib/solargraph/pin_cache.rb +245 -245
- data/lib/solargraph/position.rb +132 -119
- data/lib/solargraph/range.rb +112 -112
- data/lib/solargraph/rbs_map/conversions.rb +823 -823
- data/lib/solargraph/rbs_map/core_map.rb +58 -58
- data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
- data/lib/solargraph/rbs_map.rb +163 -163
- data/lib/solargraph/shell.rb +352 -352
- data/lib/solargraph/source/chain/call.rb +337 -337
- data/lib/solargraph/source/chain/constant.rb +26 -26
- data/lib/solargraph/source/chain/hash.rb +34 -34
- data/lib/solargraph/source/chain/if.rb +28 -28
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/literal.rb +48 -48
- data/lib/solargraph/source/chain/or.rb +23 -23
- data/lib/solargraph/source/chain.rb +291 -291
- data/lib/solargraph/source/change.rb +82 -82
- data/lib/solargraph/source/cursor.rb +166 -166
- data/lib/solargraph/source/source_chainer.rb +194 -194
- data/lib/solargraph/source/updater.rb +55 -55
- data/lib/solargraph/source.rb +498 -498
- data/lib/solargraph/source_map/clip.rb +226 -226
- data/lib/solargraph/source_map/data.rb +34 -34
- data/lib/solargraph/source_map/mapper.rb +259 -259
- data/lib/solargraph/source_map.rb +212 -212
- data/lib/solargraph/type_checker/checks.rb +124 -124
- data/lib/solargraph/type_checker/param_def.rb +37 -37
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +84 -84
- data/lib/solargraph/type_checker.rb +814 -814
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +255 -255
- data/lib/solargraph/workspace/require_paths.rb +97 -97
- data/lib/solargraph/workspace.rb +220 -220
- data/lib/solargraph/yard_map/helpers.rb +44 -44
- data/lib/solargraph/yard_map/mapper/to_method.rb +130 -130
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -31
- data/lib/solargraph/yard_map/mapper.rb +79 -79
- data/lib/solargraph/yard_map/to_method.rb +89 -89
- data/lib/solargraph/yardoc.rb +87 -87
- data/lib/solargraph.rb +105 -105
- data/rbs_collection.yaml +1 -1
- metadata +12 -12
- /data/{sig → rbs}/shims/ast/0/node.rbs +0 -0
- /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
- /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class Source
|
|
5
|
-
class Chain
|
|
6
|
-
class Constant < Link
|
|
7
|
-
def initialize word
|
|
8
|
-
@word = word
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def resolve api_map, name_pin, locals
|
|
12
|
-
return [Pin::ROOT_PIN] if word.empty?
|
|
13
|
-
if word.start_with?('::')
|
|
14
|
-
base = word[2..-1]
|
|
15
|
-
gates = ['']
|
|
16
|
-
else
|
|
17
|
-
base = word
|
|
18
|
-
gates = name_pin.gates
|
|
19
|
-
end
|
|
20
|
-
fqns = api_map.resolve(base, gates)
|
|
21
|
-
api_map.get_path_pins(fqns)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class Source
|
|
5
|
+
class Chain
|
|
6
|
+
class Constant < Link
|
|
7
|
+
def initialize word
|
|
8
|
+
@word = word
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def resolve api_map, name_pin, locals
|
|
12
|
+
return [Pin::ROOT_PIN] if word.empty?
|
|
13
|
+
if word.start_with?('::')
|
|
14
|
+
base = word[2..-1]
|
|
15
|
+
gates = ['']
|
|
16
|
+
else
|
|
17
|
+
base = word
|
|
18
|
+
gates = name_pin.gates
|
|
19
|
+
end
|
|
20
|
+
fqns = api_map.resolve(base, gates)
|
|
21
|
+
api_map.get_path_pins(fqns)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class Source
|
|
5
|
-
class Chain
|
|
6
|
-
class Hash < Literal
|
|
7
|
-
# @param type [String]
|
|
8
|
-
# @param node [Parser::AST::Node]
|
|
9
|
-
# @param splatted [Boolean]
|
|
10
|
-
def initialize type, node, splatted = false
|
|
11
|
-
super(type, node)
|
|
12
|
-
@splatted = splatted
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
16
|
-
protected def equality_fields
|
|
17
|
-
super + [@splatted]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def word
|
|
21
|
-
@word ||= "<#{@type}>"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def resolve api_map, name_pin, locals
|
|
25
|
-
[Pin::ProxyType.anonymous(@complex_type, source: :chain)]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def splatted?
|
|
29
|
-
@splatted
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class Source
|
|
5
|
+
class Chain
|
|
6
|
+
class Hash < Literal
|
|
7
|
+
# @param type [String]
|
|
8
|
+
# @param node [Parser::AST::Node]
|
|
9
|
+
# @param splatted [Boolean]
|
|
10
|
+
def initialize type, node, splatted = false
|
|
11
|
+
super(type, node)
|
|
12
|
+
@splatted = splatted
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
16
|
+
protected def equality_fields
|
|
17
|
+
super + [@splatted]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def word
|
|
21
|
+
@word ||= "<#{@type}>"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def resolve api_map, name_pin, locals
|
|
25
|
+
[Pin::ProxyType.anonymous(@complex_type, source: :chain)]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def splatted?
|
|
29
|
+
@splatted
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class Source
|
|
5
|
-
class Chain
|
|
6
|
-
class If < Link
|
|
7
|
-
def word
|
|
8
|
-
'<if>'
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# @param links [::Array<Chain>]
|
|
12
|
-
def initialize links
|
|
13
|
-
@links = links
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
17
|
-
protected def equality_fields
|
|
18
|
-
super + [@links]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def resolve api_map, name_pin, locals
|
|
22
|
-
types = @links.map { |link| link.infer(api_map, name_pin, locals) }
|
|
23
|
-
[Solargraph::Pin::ProxyType.anonymous(Solargraph::ComplexType.try_parse(types.map(&:tag).uniq.join(', ')), source: :chain)]
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class Source
|
|
5
|
+
class Chain
|
|
6
|
+
class If < Link
|
|
7
|
+
def word
|
|
8
|
+
'<if>'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @param links [::Array<Chain>]
|
|
12
|
+
def initialize links
|
|
13
|
+
@links = links
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
17
|
+
protected def equality_fields
|
|
18
|
+
super + [@links]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def resolve api_map, name_pin, locals
|
|
22
|
+
types = @links.map { |link| link.infer(api_map, name_pin, locals) }
|
|
23
|
+
[Solargraph::Pin::ProxyType.anonymous(Solargraph::ComplexType.try_parse(types.map(&:tag).uniq.join(', ')), source: :chain)]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class Source
|
|
5
|
-
class Chain
|
|
6
|
-
class InstanceVariable < Link
|
|
7
|
-
def resolve api_map, name_pin, locals
|
|
8
|
-
api_map.get_instance_variable_pins(name_pin.binder.namespace, name_pin.binder.scope).select{|p| p.name == word}
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class Source
|
|
5
|
+
class Chain
|
|
6
|
+
class InstanceVariable < Link
|
|
7
|
+
def resolve api_map, name_pin, locals
|
|
8
|
+
api_map.get_instance_variable_pins(name_pin.binder.namespace, name_pin.binder.scope).select{|p| p.name == word}
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'parser'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
class Source
|
|
7
|
-
class Chain
|
|
8
|
-
class Literal < Link
|
|
9
|
-
def word
|
|
10
|
-
@word ||= "<#{@type}>"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
attr_reader :value
|
|
14
|
-
|
|
15
|
-
# @param type [String]
|
|
16
|
-
# @param node [Parser::AST::Node, Object]
|
|
17
|
-
def initialize type, node
|
|
18
|
-
if node.is_a?(::Parser::AST::Node)
|
|
19
|
-
if node.type == :true
|
|
20
|
-
@value = true
|
|
21
|
-
elsif node.type == :false
|
|
22
|
-
@value = false
|
|
23
|
-
elsif [:int, :sym].include?(node.type)
|
|
24
|
-
@value = node.children.first
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
@type = type
|
|
28
|
-
@literal_type = ComplexType.try_parse(@value.inspect)
|
|
29
|
-
@complex_type = ComplexType.try_parse(type)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
33
|
-
protected def equality_fields
|
|
34
|
-
super + [@value, @type, @literal_type, @complex_type]
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def resolve api_map, name_pin, locals
|
|
38
|
-
if api_map.super_and_sub?(@complex_type.name, @literal_type.name)
|
|
39
|
-
[Pin::ProxyType.anonymous(@literal_type, source: :chain)]
|
|
40
|
-
else
|
|
41
|
-
# we don't support this value as a literal type
|
|
42
|
-
[Pin::ProxyType.anonymous(@complex_type, source: :chain)]
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'parser'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
class Source
|
|
7
|
+
class Chain
|
|
8
|
+
class Literal < Link
|
|
9
|
+
def word
|
|
10
|
+
@word ||= "<#{@type}>"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
attr_reader :value
|
|
14
|
+
|
|
15
|
+
# @param type [String]
|
|
16
|
+
# @param node [Parser::AST::Node, Object]
|
|
17
|
+
def initialize type, node
|
|
18
|
+
if node.is_a?(::Parser::AST::Node)
|
|
19
|
+
if node.type == :true
|
|
20
|
+
@value = true
|
|
21
|
+
elsif node.type == :false
|
|
22
|
+
@value = false
|
|
23
|
+
elsif [:int, :sym].include?(node.type)
|
|
24
|
+
@value = node.children.first
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
@type = type
|
|
28
|
+
@literal_type = ComplexType.try_parse(@value.inspect)
|
|
29
|
+
@complex_type = ComplexType.try_parse(type)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
33
|
+
protected def equality_fields
|
|
34
|
+
super + [@value, @type, @literal_type, @complex_type]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def resolve api_map, name_pin, locals
|
|
38
|
+
if api_map.super_and_sub?(@complex_type.name, @literal_type.name)
|
|
39
|
+
[Pin::ProxyType.anonymous(@literal_type, source: :chain)]
|
|
40
|
+
else
|
|
41
|
+
# we don't support this value as a literal type
|
|
42
|
+
[Pin::ProxyType.anonymous(@complex_type, source: :chain)]
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class Source
|
|
5
|
-
class Chain
|
|
6
|
-
class Or < Link
|
|
7
|
-
def word
|
|
8
|
-
'<or>'
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# @param links [::Array<Chain>]
|
|
12
|
-
def initialize links
|
|
13
|
-
@links = links
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def resolve api_map, name_pin, locals
|
|
17
|
-
types = @links.map { |link| link.infer(api_map, name_pin, locals) }
|
|
18
|
-
[Solargraph::Pin::ProxyType.anonymous(Solargraph::ComplexType.new(types.uniq), source: :chain)]
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class Source
|
|
5
|
+
class Chain
|
|
6
|
+
class Or < Link
|
|
7
|
+
def word
|
|
8
|
+
'<or>'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @param links [::Array<Chain>]
|
|
12
|
+
def initialize links
|
|
13
|
+
@links = links
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def resolve api_map, name_pin, locals
|
|
17
|
+
types = @links.map { |link| link.infer(api_map, name_pin, locals) }
|
|
18
|
+
[Solargraph::Pin::ProxyType.anonymous(Solargraph::ComplexType.new(types.uniq), source: :chain)]
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|