solargraph 0.51.2 → 0.54.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/.github/workflows/plugins.yml +40 -0
- data/.github/workflows/rspec.yml +1 -3
- data/.github/workflows/typecheck.yml +34 -0
- data/.yardopts +2 -2
- data/CHANGELOG.md +127 -5
- data/README.md +13 -16
- data/SPONSORS.md +1 -7
- data/lib/solargraph/api_map/cache.rb +50 -20
- data/lib/solargraph/api_map/source_to_yard.rb +17 -10
- data/lib/solargraph/api_map/store.rb +60 -15
- data/lib/solargraph/api_map.rb +282 -123
- data/lib/solargraph/bench.rb +3 -2
- data/lib/solargraph/cache.rb +29 -5
- data/lib/solargraph/complex_type/type_methods.rb +122 -39
- data/lib/solargraph/complex_type/unique_type.rb +310 -76
- data/lib/solargraph/complex_type.rb +166 -44
- data/lib/solargraph/convention.rb +0 -1
- data/lib/solargraph/converters/dd.rb +5 -0
- data/lib/solargraph/converters/dl.rb +3 -0
- data/lib/solargraph/converters/dt.rb +3 -0
- data/lib/solargraph/diagnostics/rubocop.rb +8 -7
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +1 -0
- data/lib/solargraph/diagnostics/type_check.rb +1 -0
- data/lib/solargraph/diagnostics.rb +2 -2
- data/lib/solargraph/doc_map.rb +187 -0
- data/lib/solargraph/gem_pins.rb +72 -0
- data/lib/solargraph/language_server/host/diagnoser.rb +2 -2
- data/lib/solargraph/language_server/host/dispatch.rb +22 -5
- data/lib/solargraph/language_server/host/message_worker.rb +49 -5
- data/lib/solargraph/language_server/host/sources.rb +8 -65
- data/lib/solargraph/language_server/host.rb +65 -84
- data/lib/solargraph/language_server/message/base.rb +19 -12
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +3 -1
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +13 -1
- data/lib/solargraph/language_server/message/initialize.rb +19 -2
- data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
- data/lib/solargraph/language_server/message/text_document/definition.rb +3 -3
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +3 -3
- data/lib/solargraph/language_server/message/text_document/formatting.rb +1 -0
- data/lib/solargraph/language_server/message/text_document/hover.rb +3 -1
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +3 -3
- data/lib/solargraph/language_server/message/text_document.rb +0 -1
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +5 -0
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +2 -2
- data/lib/solargraph/language_server/progress.rb +135 -0
- data/lib/solargraph/language_server/transport/adapter.rb +16 -1
- data/lib/solargraph/language_server/transport/data_reader.rb +2 -0
- data/lib/solargraph/language_server.rb +1 -0
- data/lib/solargraph/library.rb +207 -111
- data/lib/solargraph/location.rb +15 -1
- data/lib/solargraph/page.rb +6 -0
- data/lib/solargraph/parser/comment_ripper.rb +4 -0
- data/lib/solargraph/parser/node_methods.rb +47 -7
- data/lib/solargraph/parser/node_processor/base.rb +11 -1
- data/lib/solargraph/parser/node_processor.rb +1 -0
- data/lib/solargraph/parser/{legacy → parser_gem}/class_methods.rb +31 -9
- data/lib/solargraph/parser/{legacy → parser_gem}/flawed_builder.rb +3 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_chainer.rb +62 -43
- data/lib/solargraph/parser/parser_gem/node_methods.rb +495 -0
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/alias_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +57 -0
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/begin_node.rb +1 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/block_node.rb +3 -2
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/casgn_node.rb +2 -2
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/cvasgn_node.rb +1 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/def_node.rb +7 -20
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/defs_node.rb +2 -2
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/gvasgn_node.rb +1 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/ivasgn_node.rb +2 -2
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/lvasgn_node.rb +4 -4
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +53 -0
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/namespace_node.rb +2 -2
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/orasgn_node.rb +1 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/resbody_node.rb +3 -3
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/sclass_node.rb +1 -1
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/send_node.rb +8 -6
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/sym_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors.rb +56 -0
- data/lib/solargraph/parser/parser_gem.rb +12 -0
- data/lib/solargraph/parser/region.rb +1 -1
- data/lib/solargraph/parser/snippet.rb +2 -0
- data/lib/solargraph/parser.rb +8 -12
- data/lib/solargraph/pin/base.rb +78 -10
- data/lib/solargraph/pin/base_variable.rb +40 -7
- data/lib/solargraph/pin/block.rb +69 -46
- data/lib/solargraph/pin/callable.rb +147 -0
- data/lib/solargraph/pin/closure.rb +23 -3
- data/lib/solargraph/pin/common.rb +6 -6
- data/lib/solargraph/pin/conversions.rb +36 -5
- data/lib/solargraph/pin/delegated_method.rb +6 -2
- data/lib/solargraph/pin/documenting.rb +25 -32
- data/lib/solargraph/pin/instance_variable.rb +6 -2
- data/lib/solargraph/pin/local_variable.rb +13 -1
- data/lib/solargraph/pin/method.rb +205 -32
- data/lib/solargraph/pin/namespace.rb +20 -7
- data/lib/solargraph/pin/parameter.rb +41 -36
- data/lib/solargraph/pin/proxy_type.rb +1 -1
- data/lib/solargraph/pin/reference/override.rb +2 -2
- data/lib/solargraph/pin/reference.rb +8 -0
- data/lib/solargraph/pin/search.rb +3 -3
- data/lib/solargraph/pin/signature.rb +8 -14
- data/lib/solargraph/pin.rb +4 -2
- data/lib/solargraph/range.rb +4 -6
- data/lib/solargraph/rbs_map/conversions.rb +326 -76
- data/lib/solargraph/rbs_map/core_fills.rb +16 -33
- data/lib/solargraph/rbs_map/core_map.rb +3 -13
- data/lib/solargraph/rbs_map/stdlib_map.rb +2 -8
- data/lib/solargraph/rbs_map.rb +32 -13
- data/lib/solargraph/shell.rb +95 -72
- data/lib/solargraph/source/chain/array.rb +33 -0
- data/lib/solargraph/source/chain/block_symbol.rb +13 -0
- data/lib/solargraph/source/chain/block_variable.rb +1 -1
- data/lib/solargraph/source/chain/call.rb +152 -69
- data/lib/solargraph/source/chain/constant.rb +15 -1
- data/lib/solargraph/source/chain/if.rb +23 -0
- data/lib/solargraph/source/chain/link.rb +17 -2
- data/lib/solargraph/source/chain/or.rb +2 -2
- data/lib/solargraph/source/chain/z_super.rb +3 -3
- data/lib/solargraph/source/chain.rb +85 -26
- data/lib/solargraph/source/change.rb +3 -0
- data/lib/solargraph/source/cursor.rb +16 -2
- data/lib/solargraph/source/source_chainer.rb +8 -5
- data/lib/solargraph/source/updater.rb +1 -0
- data/lib/solargraph/source.rb +120 -148
- data/lib/solargraph/source_map/clip.rb +16 -27
- data/lib/solargraph/source_map/data.rb +30 -0
- data/lib/solargraph/source_map/mapper.rb +15 -3
- data/lib/solargraph/source_map.rb +48 -24
- data/lib/solargraph/type_checker/checks.rb +10 -2
- data/lib/solargraph/type_checker/rules.rb +6 -1
- data/lib/solargraph/type_checker.rb +150 -39
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/views/environment.erb +3 -5
- data/lib/solargraph/workspace/config.rb +9 -6
- data/lib/solargraph/workspace.rb +30 -3
- data/lib/solargraph/yard_map/cache.rb +6 -0
- data/lib/solargraph/yard_map/helpers.rb +1 -1
- data/lib/solargraph/yard_map/mapper/to_method.rb +16 -3
- data/lib/solargraph/yard_map/mapper.rb +1 -1
- data/lib/solargraph/yard_map/to_method.rb +11 -4
- data/lib/solargraph/yard_map.rb +1 -292
- data/lib/solargraph/yard_tags.rb +20 -0
- data/lib/solargraph/yardoc.rb +52 -0
- data/lib/solargraph.rb +6 -4
- data/solargraph.gemspec +7 -6
- metadata +71 -82
- data/lib/solargraph/api_map/bundler_methods.rb +0 -22
- data/lib/solargraph/documentor.rb +0 -76
- data/lib/solargraph/language_server/host/cataloger.rb +0 -56
- data/lib/solargraph/parser/legacy/node_methods.rb +0 -325
- data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +0 -23
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +0 -50
- data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +0 -15
- data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +0 -18
- data/lib/solargraph/parser/legacy/node_processors.rb +0 -55
- data/lib/solargraph/parser/legacy.rb +0 -12
- data/lib/solargraph/parser/rubyvm/class_methods.rb +0 -153
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +0 -160
- data/lib/solargraph/parser/rubyvm/node_methods.rb +0 -317
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +0 -85
- data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +0 -42
- data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +0 -33
- data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +0 -23
- data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +0 -75
- data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +0 -68
- data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +0 -23
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +0 -38
- data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +0 -39
- data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +0 -20
- data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +0 -27
- data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +0 -39
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +0 -26
- data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +0 -15
- data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +0 -51
- data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +0 -32
- data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +0 -15
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +0 -279
- data/lib/solargraph/parser/rubyvm/node_processors.rb +0 -64
- data/lib/solargraph/parser/rubyvm/node_wrapper.rb +0 -47
- data/lib/solargraph/parser/rubyvm.rb +0 -40
- data/lib/solargraph/rbs_map/core_signs.rb +0 -33
- data/lib/yard-solargraph.rb +0 -33
data/lib/solargraph/cache.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'rbs'
|
2
3
|
|
3
4
|
module Solargraph
|
4
5
|
module Cache
|
@@ -14,7 +15,7 @@ module Solargraph
|
|
14
15
|
File.join(Dir.home, '.cache', 'solargraph')
|
15
16
|
end
|
16
17
|
|
17
|
-
# The working directory for the current Ruby and Solargraph versions.
|
18
|
+
# The working directory for the current Ruby, RBS, and Solargraph versions.
|
18
19
|
#
|
19
20
|
# @return [String]
|
20
21
|
def work_dir
|
@@ -23,9 +24,21 @@ module Solargraph
|
|
23
24
|
File.join(base_dir, "ruby-#{RUBY_VERSION}", "rbs-#{RBS::VERSION}", "solargraph-#{Solargraph::VERSION}")
|
24
25
|
end
|
25
26
|
|
27
|
+
# Append the given path to the current cache directory (`work_dir`).
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# Cache.join('date-3.4.1.ser')
|
31
|
+
#
|
32
|
+
# @param path [Array<String>]
|
33
|
+
# @return [String]
|
34
|
+
def join *path
|
35
|
+
File.join(work_dir, *path)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @param path [Array<String>]
|
26
39
|
# @return [Array<Solargraph::Pin::Base>, nil]
|
27
40
|
def load *path
|
28
|
-
file =
|
41
|
+
file = join(*path)
|
29
42
|
return nil unless File.file?(file)
|
30
43
|
Marshal.load(File.read(file, mode: 'rb'))
|
31
44
|
rescue StandardError => e
|
@@ -34,17 +47,28 @@ module Solargraph
|
|
34
47
|
nil
|
35
48
|
end
|
36
49
|
|
37
|
-
|
50
|
+
def exist? *path
|
51
|
+
File.file? join(*path)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @param path [Array<String>]
|
55
|
+
# @param pins [Array<Pin::Base>]
|
56
|
+
# @return [void]
|
38
57
|
def save *path, pins
|
39
|
-
return false if pins.empty?
|
40
58
|
file = File.join(work_dir, *path)
|
41
59
|
base = File.dirname(file)
|
42
60
|
FileUtils.mkdir_p base unless File.directory?(base)
|
43
61
|
ser = Marshal.dump(pins)
|
44
62
|
File.write file, ser, mode: 'wb'
|
45
|
-
true
|
46
63
|
end
|
47
64
|
|
65
|
+
# @return [void]
|
66
|
+
# @param path [Array<String>]
|
67
|
+
def uncache *path
|
68
|
+
FileUtils.rm_rf File.join(work_dir, *path), secure: true
|
69
|
+
end
|
70
|
+
|
71
|
+
# @return [void]
|
48
72
|
def clear
|
49
73
|
FileUtils.rm_rf base_dir, secure: true
|
50
74
|
end
|
@@ -2,20 +2,46 @@
|
|
2
2
|
|
3
3
|
module Solargraph
|
4
4
|
class ComplexType
|
5
|
-
# Methods for accessing type data
|
5
|
+
# Methods for accessing type data available from
|
6
|
+
# both ComplexType and UniqueType.
|
6
7
|
#
|
8
|
+
# @abstract This mixin relies on these -
|
9
|
+
# instance variables:
|
10
|
+
# @name: String
|
11
|
+
# @subtypes: Array<ComplexType>
|
12
|
+
# @rooted: boolish
|
13
|
+
# methods:
|
14
|
+
# transform()
|
15
|
+
# all_params()
|
16
|
+
# rooted?()
|
17
|
+
# can_root_name?()
|
7
18
|
module TypeMethods
|
19
|
+
# @!method transform(new_name = nil, &transform_type)
|
20
|
+
# @param new_name [String, nil]
|
21
|
+
# @yieldparam t [UniqueType]
|
22
|
+
# @yieldreturn [UniqueType]
|
23
|
+
# @return [UniqueType, nil]
|
24
|
+
# @!method all_params
|
25
|
+
# @return [Array<ComplexType>]
|
26
|
+
# @!method rooted?
|
27
|
+
# @!method can_root_name?(name_to_check = nil)
|
28
|
+
# @param name_to_check [String, nil]
|
29
|
+
|
8
30
|
# @return [String]
|
9
31
|
attr_reader :name
|
10
32
|
|
11
|
-
# @return [
|
12
|
-
attr_reader :
|
33
|
+
# @return [Array<ComplexType>]
|
34
|
+
attr_reader :subtypes
|
13
35
|
|
14
36
|
# @return [String]
|
15
|
-
|
37
|
+
def tag
|
38
|
+
@tag ||= "#{name}#{substring}"
|
39
|
+
end
|
16
40
|
|
17
|
-
# @return [
|
18
|
-
|
41
|
+
# @return [String]
|
42
|
+
def rooted_tag
|
43
|
+
@rooted_tag ||= rooted_name + rooted_substring
|
44
|
+
end
|
19
45
|
|
20
46
|
# @return [Boolean]
|
21
47
|
def duck_type?
|
@@ -24,13 +50,11 @@ module Solargraph
|
|
24
50
|
|
25
51
|
# @return [Boolean]
|
26
52
|
def nil_type?
|
27
|
-
@nil_type
|
28
|
-
@nil_type
|
53
|
+
@nil_type ||= (name.casecmp('nil') == 0)
|
29
54
|
end
|
30
55
|
|
31
|
-
|
32
|
-
|
33
|
-
!substring.empty?
|
56
|
+
def tuple?
|
57
|
+
@tuple_type ||= (name == 'Tuple') || (name == 'Array' && subtypes.length >= 1 && fixed_parameters?)
|
34
58
|
end
|
35
59
|
|
36
60
|
def void?
|
@@ -45,19 +69,44 @@ module Solargraph
|
|
45
69
|
name == 'undefined'
|
46
70
|
end
|
47
71
|
|
72
|
+
# @param generics_to_erase [Enumerable<String>]
|
73
|
+
# @return [self]
|
74
|
+
def erase_generics(generics_to_erase)
|
75
|
+
transform do |type|
|
76
|
+
if type.name == ComplexType::GENERIC_TAG_NAME
|
77
|
+
if type.all_params.length == 1 && generics_to_erase.include?(type.all_params.first.to_s)
|
78
|
+
ComplexType::UNDEFINED
|
79
|
+
else
|
80
|
+
type
|
81
|
+
end
|
82
|
+
else
|
83
|
+
type
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# @return [Symbol, nil]
|
89
|
+
attr_reader :parameters_type
|
90
|
+
|
91
|
+
PARAMETERS_TYPE_BY_STARTING_TAG = {
|
92
|
+
'{' => :hash,
|
93
|
+
'(' => :fixed,
|
94
|
+
'<' => :list
|
95
|
+
}.freeze
|
96
|
+
|
48
97
|
# @return [Boolean]
|
49
98
|
def list_parameters?
|
50
|
-
|
99
|
+
parameters_type == :list
|
51
100
|
end
|
52
101
|
|
53
102
|
# @return [Boolean]
|
54
103
|
def fixed_parameters?
|
55
|
-
|
104
|
+
parameters_type == :fixed
|
56
105
|
end
|
57
106
|
|
58
107
|
# @return [Boolean]
|
59
108
|
def hash_parameters?
|
60
|
-
|
109
|
+
parameters_type == :hash
|
61
110
|
end
|
62
111
|
|
63
112
|
# @return [Array<ComplexType>]
|
@@ -80,46 +129,80 @@ module Solargraph
|
|
80
129
|
end.call
|
81
130
|
end
|
82
131
|
|
83
|
-
|
132
|
+
def namespace_type
|
133
|
+
return ComplexType.parse('::Object') if duck_type?
|
134
|
+
return ComplexType.parse('::NilClass') if nil_type?
|
135
|
+
return subtypes.first if (name == 'Class' || name == 'Module') && !subtypes.empty?
|
136
|
+
self
|
137
|
+
end
|
138
|
+
|
139
|
+
# @return [String]
|
140
|
+
def rooted_namespace
|
141
|
+
return namespace unless rooted? && can_root_name?(namespace)
|
142
|
+
"::#{namespace}"
|
143
|
+
end
|
144
|
+
|
145
|
+
# @return [String]
|
146
|
+
def rooted_name
|
147
|
+
return name unless @rooted && can_root_name?
|
148
|
+
"::#{name}"
|
149
|
+
end
|
150
|
+
|
151
|
+
# @return [String]
|
152
|
+
def substring
|
153
|
+
@substring ||= generate_substring_from(&:tags)
|
154
|
+
end
|
155
|
+
|
156
|
+
# @return [String]
|
157
|
+
def rooted_substring
|
158
|
+
@rooted_substring = generate_substring_from(&:rooted_tags)
|
159
|
+
end
|
160
|
+
|
161
|
+
# @return [String]
|
162
|
+
def generate_substring_from(&to_str)
|
163
|
+
key_types_str = key_types.map(&to_str).join(', ')
|
164
|
+
subtypes_str = subtypes.map(&to_str).join(', ')
|
165
|
+
if key_types.none?(&:defined?) && subtypes.none?(&:defined?)
|
166
|
+
''
|
167
|
+
elsif key_types.empty? && subtypes.empty?
|
168
|
+
''
|
169
|
+
elsif hash_parameters?
|
170
|
+
"{#{key_types_str} => #{subtypes_str}}"
|
171
|
+
elsif fixed_parameters?
|
172
|
+
"(#{subtypes_str})"
|
173
|
+
else
|
174
|
+
"<#{subtypes_str}>"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# @return [::Symbol] :class or :instance
|
84
179
|
def scope
|
85
180
|
@scope ||= :instance if duck_type? || nil_type?
|
86
181
|
@scope ||= (name == 'Class' || name == 'Module') && !subtypes.empty? ? :class : :instance
|
87
182
|
end
|
88
183
|
|
184
|
+
# @param other [Object]
|
89
185
|
def == other
|
90
186
|
return false unless self.class == other.class
|
91
187
|
tag == other.tag
|
92
188
|
end
|
93
189
|
|
94
|
-
def rooted?
|
95
|
-
@rooted
|
96
|
-
end
|
97
|
-
|
98
190
|
# Generate a ComplexType that fully qualifies this type's namespaces.
|
99
191
|
#
|
100
192
|
# @param api_map [ApiMap] The ApiMap that performs qualification
|
101
193
|
# @param context [String] The namespace from which to resolve names
|
102
|
-
# @return [ComplexType] The generated ComplexType
|
194
|
+
# @return [self, ComplexType, UniqueType] The generated ComplexType
|
103
195
|
def qualify api_map, context = ''
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
rtypes = value_types.map { |t| t.qualify api_map, context }.uniq
|
115
|
-
if list_parameters?
|
116
|
-
Solargraph::ComplexType.parse("#{fqns}<#{rtypes.map(&:tag).join(', ')}>")
|
117
|
-
elsif fixed_parameters?
|
118
|
-
Solargraph::ComplexType.parse("#{fqns}(#{rtypes.map(&:tag).join(', ')})")
|
119
|
-
elsif hash_parameters?
|
120
|
-
Solargraph::ComplexType.parse("#{fqns}{#{ltypes.map(&:tag).join(', ')} => #{rtypes.map(&:tag).join(', ')}}")
|
121
|
-
else
|
122
|
-
Solargraph::ComplexType.parse(fqns)
|
196
|
+
transform do |t|
|
197
|
+
next t if t.name == GENERIC_TAG_NAME
|
198
|
+
next t if t.duck_type? || t.void? || t.undefined?
|
199
|
+
recon = (t.rooted? ? '' : context)
|
200
|
+
fqns = api_map.qualify(t.name, recon)
|
201
|
+
if fqns.nil?
|
202
|
+
next UniqueType::BOOLEAN if t.tag == 'Boolean'
|
203
|
+
next UniqueType::UNDEFINED
|
204
|
+
end
|
205
|
+
t.recreate(new_name: fqns, make_rooted: true)
|
123
206
|
end
|
124
207
|
end
|
125
208
|
|