solargraph 0.58.3 → 0.60.0
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/.envrc +3 -0
- data/.github/workflows/linting.yml +12 -5
- data/.github/workflows/plugins.yml +54 -34
- data/.github/workflows/rspec.yml +18 -28
- data/.github/workflows/typecheck.yml +6 -3
- data/.rubocop.yml +39 -6
- data/.rubocop_todo.yml +53 -966
- data/CHANGELOG.md +35 -0
- data/Gemfile +6 -1
- data/README.md +3 -3
- data/Rakefile +26 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/cache.rb +3 -3
- data/lib/solargraph/api_map/constants.rb +12 -3
- data/lib/solargraph/api_map/index.rb +42 -20
- data/lib/solargraph/api_map/source_to_yard.rb +22 -9
- data/lib/solargraph/api_map/store.rb +61 -36
- data/lib/solargraph/api_map.rb +192 -78
- data/lib/solargraph/bench.rb +2 -3
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +31 -18
- data/lib/solargraph/complex_type/unique_type.rb +225 -63
- data/lib/solargraph/complex_type.rb +177 -59
- data/lib/solargraph/convention/active_support_concern.rb +111 -111
- data/lib/solargraph/convention/base.rb +50 -50
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +1 -1
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +7 -5
- data/lib/solargraph/convention/data_definition.rb +5 -2
- data/lib/solargraph/convention/gemfile.rb +1 -1
- data/lib/solargraph/convention/gemspec.rb +1 -1
- data/lib/solargraph/convention/rakefile.rb +1 -1
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +2 -1
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +4 -3
- data/lib/solargraph/convention/struct_definition.rb +8 -4
- data/lib/solargraph/convention.rb +2 -2
- data/lib/solargraph/converters/dd.rb +2 -0
- data/lib/solargraph/converters/dl.rb +2 -0
- data/lib/solargraph/converters/dt.rb +2 -0
- data/lib/solargraph/converters/misc.rb +2 -0
- data/lib/solargraph/diagnostics/require_not_found.rb +1 -0
- data/lib/solargraph/diagnostics/rubocop.rb +11 -10
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
- data/lib/solargraph/diagnostics/type_check.rb +11 -10
- data/lib/solargraph/diagnostics/update_errors.rb +4 -8
- data/lib/solargraph/diagnostics.rb +55 -55
- data/lib/solargraph/doc_map.rb +39 -39
- data/lib/solargraph/environ.rb +52 -52
- data/lib/solargraph/equality.rb +4 -4
- data/lib/solargraph/gem_pins.rb +4 -15
- data/lib/solargraph/language_server/error_codes.rb +10 -10
- data/lib/solargraph/language_server/host/diagnoser.rb +1 -1
- data/lib/solargraph/language_server/host/dispatch.rb +3 -3
- data/lib/solargraph/language_server/host/message_worker.rb +4 -3
- data/lib/solargraph/language_server/host/sources.rb +2 -1
- data/lib/solargraph/language_server/host.rb +35 -28
- data/lib/solargraph/language_server/message/base.rb +1 -1
- data/lib/solargraph/language_server/message/client/register_capability.rb +1 -3
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +6 -8
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +12 -18
- data/lib/solargraph/language_server/message/extended/document.rb +1 -0
- data/lib/solargraph/language_server/message/extended/document_gems.rb +7 -7
- data/lib/solargraph/language_server/message/extended/download_core.rb +2 -1
- data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
- data/lib/solargraph/language_server/message/extended/search.rb +1 -1
- data/lib/solargraph/language_server/message/initialize.rb +20 -14
- data/lib/solargraph/language_server/message/initialized.rb +28 -28
- data/lib/solargraph/language_server/message/text_document/completion.rb +10 -8
- data/lib/solargraph/language_server/message/text_document/definition.rb +41 -32
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +17 -10
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -19
- data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +5 -5
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +13 -6
- data/lib/solargraph/language_server/message/text_document/references.rb +17 -10
- data/lib/solargraph/language_server/message/text_document/rename.rb +20 -13
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +3 -2
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -17
- data/lib/solargraph/language_server/message/text_document.rb +28 -28
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +34 -28
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +38 -30
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +23 -17
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
- data/lib/solargraph/language_server/message.rb +1 -1
- data/lib/solargraph/language_server/progress.rb +143 -143
- data/lib/solargraph/language_server/request.rb +4 -2
- data/lib/solargraph/language_server/transport/adapter.rb +68 -68
- data/lib/solargraph/language_server/transport/data_reader.rb +11 -13
- data/lib/solargraph/language_server/uri_helpers.rb +2 -2
- data/lib/solargraph/language_server.rb +20 -20
- data/lib/solargraph/library.rb +57 -38
- data/lib/solargraph/location.rb +17 -14
- data/lib/solargraph/logging.rb +22 -4
- data/lib/solargraph/page.rb +1 -1
- data/lib/solargraph/parser/comment_ripper.rb +19 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +324 -108
- data/lib/solargraph/parser/node_processor/base.rb +34 -4
- data/lib/solargraph/parser/node_processor.rb +8 -7
- data/lib/solargraph/parser/parser_gem/class_methods.rb +30 -14
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +51 -25
- data/lib/solargraph/parser/parser_gem/node_methods.rb +222 -72
- data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +24 -24
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +4 -4
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +13 -11
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +9 -0
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +11 -12
- data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +36 -36
- data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +24 -24
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +9 -8
- data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +24 -24
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +36 -6
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +5 -3
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +64 -40
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +3 -3
- data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -5
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +124 -113
- data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +20 -20
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +6 -2
- data/lib/solargraph/parser/parser_gem/node_processors.rb +4 -0
- data/lib/solargraph/parser/parser_gem.rb +2 -0
- data/lib/solargraph/parser/region.rb +9 -3
- data/lib/solargraph/parser/snippet.rb +3 -1
- data/lib/solargraph/parser.rb +2 -0
- data/lib/solargraph/pin/base.rb +156 -84
- data/lib/solargraph/pin/base_variable.rb +273 -24
- data/lib/solargraph/pin/block.rb +29 -6
- data/lib/solargraph/pin/breakable.rb +7 -1
- data/lib/solargraph/pin/callable.rb +67 -23
- data/lib/solargraph/pin/closure.rb +7 -10
- data/lib/solargraph/pin/common.rb +36 -6
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/constant.rb +3 -5
- data/lib/solargraph/pin/conversions.rb +10 -4
- data/lib/solargraph/pin/delegated_method.rb +19 -8
- data/lib/solargraph/pin/documenting.rb +4 -2
- data/lib/solargraph/pin/instance_variable.rb +5 -1
- data/lib/solargraph/pin/keyword.rb +0 -4
- data/lib/solargraph/pin/local_variable.rb +15 -59
- data/lib/solargraph/pin/method.rb +205 -111
- data/lib/solargraph/pin/method_alias.rb +8 -0
- data/lib/solargraph/pin/namespace.rb +19 -12
- data/lib/solargraph/pin/parameter.rb +102 -36
- data/lib/solargraph/pin/proxy_type.rb +4 -1
- data/lib/solargraph/pin/reference/override.rb +1 -1
- data/lib/solargraph/pin/reference/require.rb +14 -14
- data/lib/solargraph/pin/reference/superclass.rb +2 -0
- data/lib/solargraph/pin/reference/type_alias.rb +16 -0
- data/lib/solargraph/pin/reference.rb +20 -0
- data/lib/solargraph/pin/search.rb +8 -7
- data/lib/solargraph/pin/signature.rb +15 -12
- data/lib/solargraph/pin/singleton.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +2 -1
- data/lib/solargraph/pin/until.rb +2 -4
- data/lib/solargraph/pin/while.rb +2 -4
- data/lib/solargraph/pin.rb +2 -0
- data/lib/solargraph/pin_cache.rb +22 -19
- data/lib/solargraph/position.rb +17 -10
- data/lib/solargraph/range.rb +16 -15
- data/lib/solargraph/rbs_map/conversions.rb +278 -191
- data/lib/solargraph/rbs_map/core_fills.rb +18 -11
- data/lib/solargraph/rbs_map/core_map.rb +24 -17
- data/lib/solargraph/rbs_map/stdlib_map.rb +33 -5
- data/lib/solargraph/rbs_map.rb +76 -32
- data/lib/solargraph/rbs_translator.rb +206 -0
- data/lib/solargraph/server_methods.rb +1 -1
- data/lib/solargraph/shell.rb +330 -71
- data/lib/solargraph/source/chain/array.rb +3 -12
- data/lib/solargraph/source/chain/block_symbol.rb +13 -13
- data/lib/solargraph/source/chain/block_variable.rb +13 -13
- data/lib/solargraph/source/chain/call.rb +91 -119
- data/lib/solargraph/source/chain/class_variable.rb +1 -1
- data/lib/solargraph/source/chain/constant.rb +5 -1
- data/lib/solargraph/source/chain/global_variable.rb +1 -1
- data/lib/solargraph/source/chain/hash.rb +8 -5
- data/lib/solargraph/source/chain/head.rb +19 -19
- data/lib/solargraph/source/chain/if.rb +12 -10
- data/lib/solargraph/source/chain/instance_variable.rb +24 -1
- data/lib/solargraph/source/chain/link.rb +12 -22
- data/lib/solargraph/source/chain/literal.rb +22 -15
- data/lib/solargraph/source/chain/or.rb +10 -4
- data/lib/solargraph/source/chain/q_call.rb +2 -0
- data/lib/solargraph/source/chain/variable.rb +3 -1
- data/lib/solargraph/source/chain/z_super.rb +1 -3
- data/lib/solargraph/source/chain.rb +51 -38
- data/lib/solargraph/source/change.rb +12 -5
- data/lib/solargraph/source/cursor.rb +33 -18
- data/lib/solargraph/source/encoding_fixes.rb +6 -7
- data/lib/solargraph/source/source_chainer.rb +56 -32
- data/lib/solargraph/source/updater.rb +5 -1
- data/lib/solargraph/source.rb +59 -35
- data/lib/solargraph/source_map/clip.rb +54 -30
- data/lib/solargraph/source_map/data.rb +4 -1
- data/lib/solargraph/source_map/mapper.rb +28 -131
- data/lib/solargraph/source_map.rb +35 -9
- data/lib/solargraph/type_checker/problem.rb +3 -1
- data/lib/solargraph/type_checker/rules.rb +81 -8
- data/lib/solargraph/type_checker.rb +196 -122
- data/lib/solargraph/version.rb +19 -1
- data/lib/solargraph/workspace/config.rb +14 -11
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +1 -0
- data/lib/solargraph/workspace.rb +50 -28
- data/lib/solargraph/yard_map/cache.rb +25 -25
- data/lib/solargraph/yard_map/directives/attribute_directive.rb +65 -0
- data/lib/solargraph/yard_map/directives/domain_directive.rb +30 -0
- data/lib/solargraph/yard_map/directives/method_directive.rb +51 -0
- data/lib/solargraph/yard_map/directives/override_directive.rb +30 -0
- data/lib/solargraph/yard_map/directives/parse_directive.rb +53 -0
- data/lib/solargraph/yard_map/directives/visibility_directive.rb +70 -0
- data/lib/solargraph/yard_map/directives.rb +35 -0
- data/lib/solargraph/yard_map/helpers.rb +8 -3
- data/lib/solargraph/yard_map/macro.rb +113 -0
- data/lib/solargraph/yard_map/mapper/to_constant.rb +28 -28
- data/lib/solargraph/yard_map/mapper/to_method.rb +13 -7
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +2 -1
- data/lib/solargraph/yard_map/mapper.rb +31 -8
- data/lib/solargraph/yard_map.rb +19 -18
- data/lib/solargraph/yard_tags.rb +2 -2
- data/lib/solargraph/yardoc.rb +7 -4
- data/lib/solargraph.rb +34 -10
- data/rbs/fills/rubygems/0/dependency.rbs +193 -0
- data/rbs/shims/ast/0/node.rbs +1 -1
- data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
- data/solargraph.gemspec +38 -35
- metadata +64 -42
- data/lib/solargraph/type_checker/checks.rb +0 -124
- data/lib/solargraph/type_checker/param_def.rb +0 -37
- data/lib/solargraph/yard_map/to_method.rb +0 -89
- data/rbs/fills/tuple/tuple.rbs +0 -149
|
@@ -21,27 +21,31 @@ module Solargraph
|
|
|
21
21
|
# - pinsets[0] = core Ruby pins
|
|
22
22
|
# - pinsets[1] = documentation/gem pins
|
|
23
23
|
# - pinsets[2] = convention pins
|
|
24
|
-
# - pinsets[3] = workspace source pins
|
|
24
|
+
# - pinsets[3] = workspace source pins (aka. "iced_pins")
|
|
25
25
|
# - pinsets[4] = currently open file pins
|
|
26
26
|
# @return [Boolean] True if the index was updated
|
|
27
|
-
def update *pinsets
|
|
28
|
-
return catalog(pinsets) if pinsets.length != @pinsets.length
|
|
27
|
+
def update *pinsets, &block
|
|
28
|
+
return catalog(pinsets, &block) if pinsets.length != @pinsets.length
|
|
29
29
|
|
|
30
30
|
changed = pinsets.find_index.with_index { |pinset, idx| @pinsets[idx] != pinset }
|
|
31
31
|
return false unless changed
|
|
32
32
|
|
|
33
33
|
# @todo Fix this map
|
|
34
34
|
@fqns_pins_map = nil
|
|
35
|
-
return catalog(pinsets) if changed
|
|
35
|
+
return catalog(pinsets) if changed.zero?
|
|
36
36
|
|
|
37
|
+
# @sg-ignore Need to add nil check here
|
|
37
38
|
pinsets[changed..].each_with_index do |pins, idx|
|
|
38
39
|
@pinsets[changed + idx] = pins
|
|
39
40
|
@indexes[changed + idx] = if pins.empty?
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
@indexes[changed + idx - 1]
|
|
42
|
+
else
|
|
43
|
+
@indexes[changed + idx - 1].merge(pins)
|
|
44
|
+
end
|
|
44
45
|
end
|
|
46
|
+
# @type [Index]
|
|
47
|
+
@index = @indexes.last.clone
|
|
48
|
+
@index = @index.merge(block.call) if block
|
|
45
49
|
constants.clear
|
|
46
50
|
cached_qualify_superclass.clear
|
|
47
51
|
true
|
|
@@ -59,10 +63,10 @@ module Solargraph
|
|
|
59
63
|
# @param visibility [Array<Symbol>]
|
|
60
64
|
# @return [Enumerable<Solargraph::Pin::Namespace, Solargraph::Pin::Constant>]
|
|
61
65
|
def get_constants fqns, visibility = [:public]
|
|
62
|
-
namespace_children(fqns).select
|
|
63
|
-
# @sg-ignore flow
|
|
66
|
+
namespace_children(fqns).select do |pin|
|
|
67
|
+
# @sg-ignore flow sensitive typing not smart enough to handle this case
|
|
64
68
|
!pin.name.empty? && (pin.is_a?(Pin::Namespace) || pin.is_a?(Pin::Constant)) && visibility.include?(pin.visibility)
|
|
65
|
-
|
|
69
|
+
end
|
|
66
70
|
end
|
|
67
71
|
|
|
68
72
|
# @param fqns [String]
|
|
@@ -70,18 +74,18 @@ module Solargraph
|
|
|
70
74
|
# @param visibility [Array<Symbol>]
|
|
71
75
|
# @return [Enumerable<Solargraph::Pin::Method>]
|
|
72
76
|
def get_methods fqns, scope: :instance, visibility: [:public]
|
|
73
|
-
|
|
74
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
77
|
+
namespace_children(fqns).select do |pin|
|
|
75
78
|
pin.is_a?(Pin::Method) && pin.scope == scope && visibility.include?(pin.visibility)
|
|
76
79
|
end
|
|
77
|
-
GemPins.combine_method_pins_by_path(all_pins)
|
|
78
80
|
end
|
|
79
81
|
|
|
80
|
-
BOOLEAN_SUPERCLASS_PIN = Pin::Reference::Superclass.new(name: 'Boolean', closure: Pin::ROOT_PIN,
|
|
81
|
-
|
|
82
|
+
BOOLEAN_SUPERCLASS_PIN = Pin::Reference::Superclass.new(name: 'Boolean', closure: Pin::ROOT_PIN,
|
|
83
|
+
source: :solargraph)
|
|
84
|
+
OBJECT_SUPERCLASS_PIN = Pin::Reference::Superclass.new(name: 'Object', closure: Pin::ROOT_PIN,
|
|
85
|
+
source: :solargraph)
|
|
82
86
|
|
|
83
|
-
# @param fqns [String]
|
|
84
|
-
# @return [Pin::Reference::Superclass]
|
|
87
|
+
# @param fqns [String, nil]
|
|
88
|
+
# @return [Pin::Reference::Superclass, nil]
|
|
85
89
|
def get_superclass fqns
|
|
86
90
|
return nil if fqns.nil? || fqns.empty?
|
|
87
91
|
return BOOLEAN_SUPERCLASS_PIN if %w[TrueClass FalseClass].include?(fqns)
|
|
@@ -126,20 +130,20 @@ module Solargraph
|
|
|
126
130
|
index.path_pin_hash[path]
|
|
127
131
|
end
|
|
128
132
|
|
|
129
|
-
# @param fqns [String]
|
|
133
|
+
# @param fqns [String, nil]
|
|
130
134
|
# @param scope [Symbol] :class or :instance
|
|
131
135
|
# @return [Enumerable<Solargraph::Pin::Base>]
|
|
132
|
-
def get_instance_variables
|
|
133
|
-
all_instance_variables.select
|
|
136
|
+
def get_instance_variables fqns, scope = :instance
|
|
137
|
+
all_instance_variables.select do |pin|
|
|
134
138
|
pin.binder.namespace == fqns && pin.binder.scope == scope
|
|
135
|
-
|
|
139
|
+
end
|
|
136
140
|
end
|
|
137
141
|
|
|
138
142
|
# @param fqns [String]
|
|
139
143
|
#
|
|
140
144
|
# @return [Enumerable<Solargraph::Pin::ClassVariable>]
|
|
141
|
-
def get_class_variables
|
|
142
|
-
namespace_children(fqns).select { |pin| pin.is_a?(Pin::ClassVariable)}
|
|
145
|
+
def get_class_variables fqns
|
|
146
|
+
namespace_children(fqns).select { |pin| pin.is_a?(Pin::ClassVariable) }
|
|
143
147
|
end
|
|
144
148
|
|
|
145
149
|
# @return [Enumerable<Solargraph::Pin::Base>]
|
|
@@ -149,7 +153,7 @@ module Solargraph
|
|
|
149
153
|
|
|
150
154
|
# @param fqns [String]
|
|
151
155
|
# @return [Boolean]
|
|
152
|
-
def namespace_exists?
|
|
156
|
+
def namespace_exists? fqns
|
|
153
157
|
fqns_pins(fqns).any?
|
|
154
158
|
end
|
|
155
159
|
|
|
@@ -165,7 +169,7 @@ module Solargraph
|
|
|
165
169
|
|
|
166
170
|
# @param fqns [String]
|
|
167
171
|
# @return [Array<String>]
|
|
168
|
-
def domains
|
|
172
|
+
def domains fqns
|
|
169
173
|
result = []
|
|
170
174
|
fqns_pins(fqns).each do |nspin|
|
|
171
175
|
result.concat nspin.domains
|
|
@@ -173,12 +177,12 @@ module Solargraph
|
|
|
173
177
|
result
|
|
174
178
|
end
|
|
175
179
|
|
|
176
|
-
# @return [Hash{String =>
|
|
180
|
+
# @return [Hash{String => YardMap::Macro}]
|
|
177
181
|
def named_macros
|
|
178
182
|
@named_macros ||= begin
|
|
179
183
|
result = {}
|
|
180
184
|
pins.each do |pin|
|
|
181
|
-
pin.macros.select{|m| m.tag.tag_name == 'macro' && !m.tag.text.empty? }.each do |macro|
|
|
185
|
+
pin.macros.select { |m| m.tag.tag_name == 'macro' && !m.tag.text.empty? }.each do |macro|
|
|
182
186
|
next if macro.tag.name.nil? || macro.tag.name.empty?
|
|
183
187
|
result[macro.tag.name] = macro
|
|
184
188
|
end
|
|
@@ -199,7 +203,7 @@ module Solargraph
|
|
|
199
203
|
index.pins_by_class klass
|
|
200
204
|
end
|
|
201
205
|
|
|
202
|
-
# @param fqns [String]
|
|
206
|
+
# @param fqns [String, nil]
|
|
203
207
|
# @return [Array<Solargraph::Pin::Namespace>]
|
|
204
208
|
def fqns_pins fqns
|
|
205
209
|
return [] if fqns.nil?
|
|
@@ -217,7 +221,7 @@ module Solargraph
|
|
|
217
221
|
# Get all ancestors (superclasses, includes, prepends, extends) for a namespace
|
|
218
222
|
# @param fqns [String] The fully qualified namespace
|
|
219
223
|
# @return [Array<String>] Array of ancestor namespaces including the original
|
|
220
|
-
def get_ancestors
|
|
224
|
+
def get_ancestors fqns
|
|
221
225
|
return [] if fqns.nil? || fqns.empty?
|
|
222
226
|
|
|
223
227
|
ancestors = [fqns]
|
|
@@ -244,8 +248,11 @@ module Solargraph
|
|
|
244
248
|
next if refs.nil?
|
|
245
249
|
# @param ref [String]
|
|
246
250
|
refs.map(&:type).map(&:to_s).each do |ref|
|
|
251
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
247
252
|
next if ref.nil? || ref.empty? || visited.include?(ref)
|
|
253
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
248
254
|
ancestors << ref
|
|
255
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
249
256
|
queue << ref
|
|
250
257
|
end
|
|
251
258
|
end
|
|
@@ -257,7 +264,7 @@ module Solargraph
|
|
|
257
264
|
# @param fqns [String]
|
|
258
265
|
#
|
|
259
266
|
# @return [Array<Solargraph::Pin::Reference>]
|
|
260
|
-
def get_ancestor_references
|
|
267
|
+
def get_ancestor_references fqns
|
|
261
268
|
(get_prepends(fqns) + get_includes(fqns) + [get_superclass(fqns)]).compact
|
|
262
269
|
end
|
|
263
270
|
|
|
@@ -266,17 +273,33 @@ module Solargraph
|
|
|
266
273
|
@constants ||= Constants.new(self)
|
|
267
274
|
end
|
|
268
275
|
|
|
276
|
+
# @param name [String]
|
|
277
|
+
# @return [ComplexType, nil]
|
|
278
|
+
def unalias name
|
|
279
|
+
index.alias_hash[name]
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
# @return [Array<String>]
|
|
283
|
+
def macro_method_names
|
|
284
|
+
index.macro_method_names
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
# @return [Hash{String => Array<Pin::Method>}]
|
|
288
|
+
def macro_method_name_pins
|
|
289
|
+
index.macro_method_name_pins
|
|
290
|
+
end
|
|
291
|
+
|
|
269
292
|
private
|
|
270
293
|
|
|
271
294
|
# @return [Index]
|
|
272
295
|
def index
|
|
273
|
-
@
|
|
296
|
+
@index ||= Index.new
|
|
274
297
|
end
|
|
275
298
|
|
|
276
299
|
# @param pinsets [Array<Array<Pin::Base>>]
|
|
277
300
|
#
|
|
278
|
-
# @return [
|
|
279
|
-
def catalog pinsets
|
|
301
|
+
# @return [true]
|
|
302
|
+
def catalog pinsets, &block
|
|
280
303
|
@pinsets = pinsets
|
|
281
304
|
# @type [Array<Index>]
|
|
282
305
|
@indexes = []
|
|
@@ -287,6 +310,8 @@ module Solargraph
|
|
|
287
310
|
@indexes.push(@indexes.last&.merge(pins) || Solargraph::ApiMap::Index.new(pins))
|
|
288
311
|
end
|
|
289
312
|
end
|
|
313
|
+
@index = @indexes.last.clone
|
|
314
|
+
@index = @index.merge(block.call) if block
|
|
290
315
|
constants.clear
|
|
291
316
|
cached_qualify_superclass.clear
|
|
292
317
|
true
|
|
@@ -308,7 +333,7 @@ module Solargraph
|
|
|
308
333
|
index.pins_by_class(Pin::Symbol)
|
|
309
334
|
end
|
|
310
335
|
|
|
311
|
-
# @return [Hash{String => Array<
|
|
336
|
+
# @return [Hash{String => Array<Pin::Reference::Superclass>}]
|
|
312
337
|
def superclass_references
|
|
313
338
|
index.superclass_references
|
|
314
339
|
end
|
|
@@ -347,7 +372,7 @@ module Solargraph
|
|
|
347
372
|
|
|
348
373
|
# @param fqns [String]
|
|
349
374
|
# @return [Pin::Reference::Superclass, nil]
|
|
350
|
-
def try_special_superclasses
|
|
375
|
+
def try_special_superclasses fqns
|
|
351
376
|
return OBJECT_SUPERCLASS_PIN if fqns == 'Boolean'
|
|
352
377
|
return OBJECT_SUPERCLASS_PIN if !%w[BasicObject Object].include?(fqns) && namespace_exists?(fqns)
|
|
353
378
|
|