solargraph 0.58.1 → 0.59.0.dev.1
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 +4 -5
- data/.github/workflows/plugins.yml +40 -36
- data/.github/workflows/rspec.yml +45 -13
- data/.github/workflows/typecheck.yml +2 -2
- data/.rubocop_todo.yml +27 -49
- data/README.md +3 -3
- data/Rakefile +1 -0
- data/lib/solargraph/api_map/cache.rb +110 -110
- data/lib/solargraph/api_map/constants.rb +289 -279
- data/lib/solargraph/api_map/index.rb +204 -193
- data/lib/solargraph/api_map/source_to_yard.rb +109 -97
- data/lib/solargraph/api_map/store.rb +387 -384
- data/lib/solargraph/api_map.rb +1000 -945
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +242 -228
- data/lib/solargraph/complex_type/unique_type.rb +632 -482
- data/lib/solargraph/complex_type.rb +549 -444
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +93 -91
- data/lib/solargraph/convention/data_definition.rb +108 -105
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +62 -61
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +103 -102
- data/lib/solargraph/convention/struct_definition.rb +168 -164
- data/lib/solargraph/diagnostics/require_not_found.rb +54 -53
- data/lib/solargraph/diagnostics/rubocop.rb +119 -118
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +70 -68
- data/lib/solargraph/diagnostics/type_check.rb +56 -55
- data/lib/solargraph/doc_map.rb +200 -439
- data/lib/solargraph/equality.rb +34 -34
- data/lib/solargraph/gem_pins.rb +97 -98
- data/lib/solargraph/language_server/host/dispatch.rb +131 -130
- data/lib/solargraph/language_server/host/message_worker.rb +113 -112
- data/lib/solargraph/language_server/host/sources.rb +100 -99
- data/lib/solargraph/language_server/host.rb +883 -878
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +109 -114
- data/lib/solargraph/language_server/message/extended/document.rb +24 -23
- data/lib/solargraph/language_server/message/text_document/completion.rb +58 -56
- data/lib/solargraph/language_server/message/text_document/definition.rb +42 -40
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +28 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +150 -148
- data/lib/solargraph/language_server/message/text_document/hover.rb +60 -58
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +25 -24
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +27 -25
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +25 -23
- data/lib/solargraph/library.rb +729 -683
- data/lib/solargraph/location.rb +87 -82
- data/lib/solargraph/logging.rb +57 -37
- data/lib/solargraph/parser/comment_ripper.rb +76 -69
- data/lib/solargraph/parser/flow_sensitive_typing.rb +483 -255
- data/lib/solargraph/parser/node_processor/base.rb +122 -92
- data/lib/solargraph/parser/node_processor.rb +63 -62
- data/lib/solargraph/parser/parser_gem/class_methods.rb +167 -149
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +191 -166
- data/lib/solargraph/parser/parser_gem/node_methods.rb +506 -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 +61 -59
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +24 -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 +60 -53
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +53 -23
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +41 -40
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +30 -29
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +61 -59
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
- data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +39 -38
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +53 -52
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +296 -291
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +33 -29
- data/lib/solargraph/parser/parser_gem/node_processors.rb +74 -70
- data/lib/solargraph/parser/region.rb +75 -69
- data/lib/solargraph/parser/snippet.rb +17 -17
- data/lib/solargraph/pin/base.rb +761 -729
- data/lib/solargraph/pin/base_variable.rb +418 -126
- data/lib/solargraph/pin/block.rb +126 -104
- data/lib/solargraph/pin/breakable.rb +13 -9
- data/lib/solargraph/pin/callable.rb +278 -231
- data/lib/solargraph/pin/closure.rb +68 -72
- data/lib/solargraph/pin/common.rb +94 -79
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/conversions.rb +124 -123
- data/lib/solargraph/pin/delegated_method.rb +131 -120
- data/lib/solargraph/pin/documenting.rb +115 -114
- data/lib/solargraph/pin/instance_variable.rb +38 -34
- data/lib/solargraph/pin/keyword.rb +16 -20
- data/lib/solargraph/pin/local_variable.rb +31 -75
- data/lib/solargraph/pin/method.rb +720 -672
- data/lib/solargraph/pin/method_alias.rb +42 -34
- data/lib/solargraph/pin/namespace.rb +121 -115
- data/lib/solargraph/pin/parameter.rb +338 -275
- data/lib/solargraph/pin/proxy_type.rb +40 -39
- data/lib/solargraph/pin/reference/override.rb +47 -47
- data/lib/solargraph/pin/reference/superclass.rb +17 -15
- data/lib/solargraph/pin/reference.rb +41 -39
- data/lib/solargraph/pin/search.rb +62 -61
- data/lib/solargraph/pin/signature.rb +69 -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 +46 -44
- data/lib/solargraph/pin_cache.rb +665 -245
- data/lib/solargraph/position.rb +118 -119
- data/lib/solargraph/range.rb +112 -112
- data/lib/solargraph/rbs_map/conversions.rb +846 -823
- data/lib/solargraph/rbs_map/core_map.rb +65 -58
- data/lib/solargraph/rbs_map/stdlib_map.rb +72 -43
- data/lib/solargraph/rbs_map.rb +217 -163
- data/lib/solargraph/shell.rb +397 -352
- data/lib/solargraph/source/chain/call.rb +372 -337
- data/lib/solargraph/source/chain/constant.rb +28 -26
- data/lib/solargraph/source/chain/hash.rb +35 -34
- data/lib/solargraph/source/chain/if.rb +29 -28
- data/lib/solargraph/source/chain/instance_variable.rb +34 -13
- data/lib/solargraph/source/chain/literal.rb +53 -48
- data/lib/solargraph/source/chain/or.rb +31 -23
- data/lib/solargraph/source/chain.rb +294 -291
- data/lib/solargraph/source/change.rb +89 -82
- data/lib/solargraph/source/cursor.rb +172 -166
- data/lib/solargraph/source/source_chainer.rb +204 -194
- data/lib/solargraph/source/updater.rb +59 -55
- data/lib/solargraph/source.rb +524 -498
- data/lib/solargraph/source_map/clip.rb +237 -226
- data/lib/solargraph/source_map/data.rb +37 -34
- data/lib/solargraph/source_map/mapper.rb +282 -259
- data/lib/solargraph/source_map.rb +220 -212
- data/lib/solargraph/type_checker/problem.rb +34 -32
- data/lib/solargraph/type_checker/rules.rb +157 -84
- data/lib/solargraph/type_checker.rb +895 -814
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +257 -255
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +98 -97
- data/lib/solargraph/workspace.rb +362 -220
- data/lib/solargraph/yard_map/helpers.rb +45 -44
- data/lib/solargraph/yard_map/mapper/to_method.rb +134 -130
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +32 -31
- data/lib/solargraph/yard_map/mapper.rb +84 -79
- data/lib/solargraph/yardoc.rb +97 -87
- data/lib/solargraph.rb +126 -105
- data/rbs/fills/rubygems/0/dependency.rbs +193 -0
- data/rbs/fills/tuple/tuple.rbs +28 -0
- data/rbs/shims/ast/0/node.rbs +5 -0
- data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
- data/rbs_collection.yaml +1 -1
- data/solargraph.gemspec +2 -1
- metadata +22 -17
- 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/sig/shims/ast/0/node.rbs +0 -5
- /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,39 +1,40 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class ProxyType < Base
|
|
6
|
-
# @param return_type [ComplexType]
|
|
7
|
-
# @param gates [Array<String>, nil] Namespaces to try while resolving non-rooted types
|
|
8
|
-
# @param binder [ComplexType, ComplexType::UniqueType, nil]
|
|
9
|
-
# @param gates [Array<String>, nil]
|
|
10
|
-
def initialize return_type: ComplexType::UNDEFINED, binder: nil, gates: nil, **splat
|
|
11
|
-
super(**splat)
|
|
12
|
-
@gates = gates
|
|
13
|
-
@return_type = return_type
|
|
14
|
-
@binder = binder if binder
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def context
|
|
18
|
-
@return_type
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @param context [ComplexType, ComplexType::UniqueType] Used as context for this pin
|
|
22
|
-
# @param closure [Pin::Namespace, nil] Used as the closure for this pin
|
|
23
|
-
# @param binder [ComplexType, ComplexType::UniqueType, nil]
|
|
24
|
-
# @return [ProxyType]
|
|
25
|
-
def self.anonymous context, closure: nil, binder: nil, **kwargs
|
|
26
|
-
unless closure
|
|
27
|
-
parts = context.namespace.split('::')
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
#
|
|
33
|
-
ProxyType.new(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class ProxyType < Base
|
|
6
|
+
# @param return_type [ComplexType, ComplexType::UniqueType]
|
|
7
|
+
# @param gates [Array<String>, nil] Namespaces to try while resolving non-rooted types
|
|
8
|
+
# @param binder [ComplexType, ComplexType::UniqueType, nil]
|
|
9
|
+
# @param gates [Array<String>, nil]
|
|
10
|
+
def initialize return_type: ComplexType::UNDEFINED, binder: nil, gates: nil, **splat
|
|
11
|
+
super(**splat)
|
|
12
|
+
@gates = gates
|
|
13
|
+
@return_type = return_type
|
|
14
|
+
@binder = binder if binder
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def context
|
|
18
|
+
@return_type
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @param context [ComplexType, ComplexType::UniqueType] Used as context for this pin
|
|
22
|
+
# @param closure [Pin::Namespace, nil] Used as the closure for this pin
|
|
23
|
+
# @param binder [ComplexType, ComplexType::UniqueType, nil]
|
|
24
|
+
# @return [ProxyType]
|
|
25
|
+
def self.anonymous context, closure: nil, binder: nil, **kwargs
|
|
26
|
+
unless closure
|
|
27
|
+
parts = context.namespace.split('::')
|
|
28
|
+
# @sg-ignore Need to add nil check here
|
|
29
|
+
namespace = parts[0..-2].join('::').to_s
|
|
30
|
+
closure = Solargraph::Pin::Namespace.new(name: namespace, source: :proxy_type)
|
|
31
|
+
end
|
|
32
|
+
# name = parts.last.to_s
|
|
33
|
+
# ProxyType.new(nil, namespace, name, return_type)
|
|
34
|
+
ProxyType.new(
|
|
35
|
+
closure: closure, return_type: context, binder: binder || context, **kwargs
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Override < Reference
|
|
7
|
-
# @return [::Array<YARD::Tags::Tag>]
|
|
8
|
-
attr_reader :tags
|
|
9
|
-
|
|
10
|
-
# @return [::Array
|
|
11
|
-
attr_reader :delete
|
|
12
|
-
|
|
13
|
-
def closure
|
|
14
|
-
nil
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# @param location [Location, nil]
|
|
18
|
-
# @param name [String]
|
|
19
|
-
# @param tags [::Array<YARD::Tags::Tag>]
|
|
20
|
-
# @param delete [::Array<Symbol>]
|
|
21
|
-
# @param splat [Hash]
|
|
22
|
-
def initialize location, name, tags, delete = [], **splat
|
|
23
|
-
super(location: location, name: name, **splat)
|
|
24
|
-
@tags = tags
|
|
25
|
-
@delete = delete
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# @param name [String]
|
|
29
|
-
# @param tags [::Array<String>]
|
|
30
|
-
# @param delete [::Array<Symbol>]
|
|
31
|
-
# @param splat [Hash]
|
|
32
|
-
# @return [Solargraph::Pin::Reference::Override]
|
|
33
|
-
def self.method_return name, *tags, delete: [], **splat
|
|
34
|
-
new(nil, name, [YARD::Tags::Tag.new('return', '', tags)], delete, **splat)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# @param name [String]
|
|
38
|
-
# @param comment [String]
|
|
39
|
-
# @param splat [Hash]
|
|
40
|
-
# @return [Solargraph::Pin::Reference::Override]
|
|
41
|
-
def self.from_comment name, comment, **splat
|
|
42
|
-
new(nil, name, Solargraph::Source.parse_docstring(comment).to_docstring.tags, **splat)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Override < Reference
|
|
7
|
+
# @return [::Array<YARD::Tags::Tag>]
|
|
8
|
+
attr_reader :tags
|
|
9
|
+
|
|
10
|
+
# @return [::Array<::Symbol>]
|
|
11
|
+
attr_reader :delete
|
|
12
|
+
|
|
13
|
+
def closure
|
|
14
|
+
nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @param location [Location, nil]
|
|
18
|
+
# @param name [String]
|
|
19
|
+
# @param tags [::Array<YARD::Tags::Tag>]
|
|
20
|
+
# @param delete [::Array<Symbol>]
|
|
21
|
+
# @param splat [Hash]
|
|
22
|
+
def initialize location, name, tags, delete = [], **splat
|
|
23
|
+
super(location: location, name: name, **splat)
|
|
24
|
+
@tags = tags
|
|
25
|
+
@delete = delete
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param name [String]
|
|
29
|
+
# @param tags [::Array<String>]
|
|
30
|
+
# @param delete [::Array<Symbol>]
|
|
31
|
+
# @param splat [Hash]
|
|
32
|
+
# @return [Solargraph::Pin::Reference::Override]
|
|
33
|
+
def self.method_return name, *tags, delete: [], **splat
|
|
34
|
+
new(nil, name, [YARD::Tags::Tag.new('return', '', tags)], delete, **splat)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @param name [String]
|
|
38
|
+
# @param comment [String]
|
|
39
|
+
# @param splat [Hash]
|
|
40
|
+
# @return [Solargraph::Pin::Reference::Override]
|
|
41
|
+
def self.from_comment name, comment, **splat
|
|
42
|
+
new(nil, name, Solargraph::Source.parse_docstring(comment).to_docstring.tags, **splat)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
# A Superclass reference pin.
|
|
7
|
-
#
|
|
8
|
-
class Superclass < Reference
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
# A Superclass reference pin.
|
|
7
|
+
#
|
|
8
|
+
class Superclass < Reference
|
|
9
|
+
# @sg-ignore Need to add nil check here
|
|
10
|
+
def reference_gates
|
|
11
|
+
# @sg-ignore Need to add nil check here
|
|
12
|
+
@reference_gates ||= closure.gates - [closure.path]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,39 +1,41 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference < Base
|
|
6
|
-
autoload :Require, 'solargraph/pin/reference/require'
|
|
7
|
-
autoload :Superclass, 'solargraph/pin/reference/superclass'
|
|
8
|
-
autoload :Include, 'solargraph/pin/reference/include'
|
|
9
|
-
autoload :Prepend, 'solargraph/pin/reference/prepend'
|
|
10
|
-
autoload :Extend, 'solargraph/pin/reference/extend'
|
|
11
|
-
autoload :Override, 'solargraph/pin/reference/override'
|
|
12
|
-
|
|
13
|
-
attr_reader :generic_values
|
|
14
|
-
|
|
15
|
-
# @param generic_values [Array<String>]
|
|
16
|
-
def initialize generic_values: [], **splat
|
|
17
|
-
super(**splat)
|
|
18
|
-
@generic_values = generic_values
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @return [ComplexType]
|
|
22
|
-
def type
|
|
23
|
-
@type ||= ComplexType.try_parse(
|
|
24
|
-
name +
|
|
25
|
-
if generic_values&.length&.> 0
|
|
26
|
-
"<#{generic_values.join(', ')}>"
|
|
27
|
-
else
|
|
28
|
-
''
|
|
29
|
-
end
|
|
30
|
-
)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# @
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference < Base
|
|
6
|
+
autoload :Require, 'solargraph/pin/reference/require'
|
|
7
|
+
autoload :Superclass, 'solargraph/pin/reference/superclass'
|
|
8
|
+
autoload :Include, 'solargraph/pin/reference/include'
|
|
9
|
+
autoload :Prepend, 'solargraph/pin/reference/prepend'
|
|
10
|
+
autoload :Extend, 'solargraph/pin/reference/extend'
|
|
11
|
+
autoload :Override, 'solargraph/pin/reference/override'
|
|
12
|
+
|
|
13
|
+
attr_reader :generic_values
|
|
14
|
+
|
|
15
|
+
# @param generic_values [Array<String>]
|
|
16
|
+
def initialize generic_values: [], **splat
|
|
17
|
+
super(**splat)
|
|
18
|
+
@generic_values = generic_values
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [ComplexType]
|
|
22
|
+
def type
|
|
23
|
+
@type ||= ComplexType.try_parse(
|
|
24
|
+
name +
|
|
25
|
+
if generic_values&.length&.> 0
|
|
26
|
+
"<#{generic_values.join(', ')}>"
|
|
27
|
+
else
|
|
28
|
+
''
|
|
29
|
+
end
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @sg-ignore Need to add nil check here
|
|
34
|
+
# @return [Array<String>]
|
|
35
|
+
def reference_gates
|
|
36
|
+
# @sg-ignore Need to add nil check here
|
|
37
|
+
closure.gates
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -1,61 +1,62 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'jaro_winkler'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module Pin
|
|
7
|
-
class Search
|
|
8
|
-
class Result
|
|
9
|
-
# @return [Float]
|
|
10
|
-
attr_reader :match
|
|
11
|
-
|
|
12
|
-
# @return [Pin::Base]
|
|
13
|
-
attr_reader :pin
|
|
14
|
-
|
|
15
|
-
# @param match [Float] The match score for the pin
|
|
16
|
-
# @param pin [Pin::Base]
|
|
17
|
-
def initialize match, pin
|
|
18
|
-
@match = match
|
|
19
|
-
@pin = pin
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# @param pins [::Array<Pin::Base>]
|
|
24
|
-
# @param query [String]
|
|
25
|
-
def initialize pins, query
|
|
26
|
-
@pins = pins
|
|
27
|
-
@query = query
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# @return [::Array<Pin::Base>]
|
|
31
|
-
def results
|
|
32
|
-
@results ||= do_query
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
37
|
-
# @return [::Array<Pin::Base>]
|
|
38
|
-
def do_query
|
|
39
|
-
return @pins if @query.nil? || @query.empty?
|
|
40
|
-
@pins.map do |pin|
|
|
41
|
-
match = [fuzzy_string_match(pin.path, @query), fuzzy_string_match(pin.name, @query)].max
|
|
42
|
-
Result.new(match, pin) if match > 0.7
|
|
43
|
-
end
|
|
44
|
-
.compact
|
|
45
|
-
# @param a [self]
|
|
46
|
-
# @param b [self]
|
|
47
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1050
|
|
48
|
-
.sort { |a, b| b.match <=> a.match }
|
|
49
|
-
.map(&:pin)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# @param str1 [String]
|
|
53
|
-
# @param str2 [String]
|
|
54
|
-
#
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'jaro_winkler'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module Pin
|
|
7
|
+
class Search
|
|
8
|
+
class Result
|
|
9
|
+
# @return [Float]
|
|
10
|
+
attr_reader :match
|
|
11
|
+
|
|
12
|
+
# @return [Pin::Base]
|
|
13
|
+
attr_reader :pin
|
|
14
|
+
|
|
15
|
+
# @param match [Float] The match score for the pin
|
|
16
|
+
# @param pin [Pin::Base]
|
|
17
|
+
def initialize match, pin
|
|
18
|
+
@match = match
|
|
19
|
+
@pin = pin
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @param pins [::Array<Pin::Base>]
|
|
24
|
+
# @param query [String]
|
|
25
|
+
def initialize pins, query
|
|
26
|
+
@pins = pins
|
|
27
|
+
@query = query
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [::Array<Pin::Base>]
|
|
31
|
+
def results
|
|
32
|
+
@results ||= do_query
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# @return [::Array<Pin::Base>]
|
|
38
|
+
def do_query
|
|
39
|
+
return @pins if @query.nil? || @query.empty?
|
|
40
|
+
@pins.map do |pin|
|
|
41
|
+
match = [fuzzy_string_match(pin.path, @query), fuzzy_string_match(pin.name, @query)].max
|
|
42
|
+
Result.new(match, pin) if match > 0.7
|
|
43
|
+
end
|
|
44
|
+
.compact
|
|
45
|
+
# @param a [self]
|
|
46
|
+
# @param b [self]
|
|
47
|
+
# @sg-ignore https://github.com/castwide/solargraph/pull/1050
|
|
48
|
+
.sort { |a, b| b.match <=> a.match }
|
|
49
|
+
.map(&:pin)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @param str1 [String]
|
|
53
|
+
# @param str2 [String]
|
|
54
|
+
#
|
|
55
|
+
# @return [Float]
|
|
56
|
+
def fuzzy_string_match str1, str2
|
|
57
|
+
return 1.0 + (str2.length.to_f / str1.length.to_f) if str1.downcase.include?(str2.downcase)
|
|
58
|
+
JaroWinkler.similarity(str1, str2, ignore_case: true)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -1,61 +1,69 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class Signature < Callable
|
|
4
|
-
# allow signature to be created before method pin, then set this
|
|
5
|
-
# to the method pin
|
|
6
|
-
attr_writer :closure
|
|
7
|
-
|
|
8
|
-
def initialize **splat
|
|
9
|
-
super(**splat)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def generics
|
|
13
|
-
@
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class Signature < Callable
|
|
4
|
+
# allow signature to be created before method pin, then set this
|
|
5
|
+
# to the method pin
|
|
6
|
+
attr_writer :closure
|
|
7
|
+
|
|
8
|
+
def initialize **splat
|
|
9
|
+
super(**splat)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def generics
|
|
13
|
+
# @type [Array<::String, nil>]
|
|
14
|
+
@generics ||= [].freeze
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def identity
|
|
18
|
+
@identity ||= "signature#{object_id}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attr_writer :closure
|
|
22
|
+
|
|
23
|
+
# @ sg-ignore need boolish support for ? methods
|
|
24
|
+
def dodgy_return_type_source?
|
|
25
|
+
super || closure&.dodgy_return_type_source?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def type_location
|
|
29
|
+
super || closure&.type_location
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def location
|
|
33
|
+
super || closure&.location
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def typify api_map
|
|
37
|
+
# @sg-ignore Need to add nil check here
|
|
38
|
+
if return_type.defined?
|
|
39
|
+
# @sg-ignore Need to add nil check here
|
|
40
|
+
qualified = return_type.qualify(api_map, closure.namespace)
|
|
41
|
+
# @sg-ignore Need to add nil check here
|
|
42
|
+
logger.debug { "Signature#typify(self=#{self}) => #{qualified.rooted_tags.inspect}" }
|
|
43
|
+
return qualified
|
|
44
|
+
end
|
|
45
|
+
return ComplexType::UNDEFINED if closure.nil?
|
|
46
|
+
return ComplexType::UNDEFINED unless closure.is_a?(Pin::Method)
|
|
47
|
+
# @sg-ignore need is_a? support
|
|
48
|
+
# @type [Array<Pin::Method>]
|
|
49
|
+
method_stack = closure.rest_of_stack api_map
|
|
50
|
+
logger.debug { "Signature#typify(self=#{self}) - method_stack: #{method_stack}" }
|
|
51
|
+
method_stack.each do |pin|
|
|
52
|
+
sig = pin.signatures.find { |s| s.arity == self.arity }
|
|
53
|
+
next unless sig
|
|
54
|
+
# @sg-ignore Need to add nil check here
|
|
55
|
+
unless sig.return_type.undefined?
|
|
56
|
+
# @sg-ignore Need to add nil check here
|
|
57
|
+
qualified = sig.return_type.qualify(api_map, closure.namespace)
|
|
58
|
+
# @sg-ignore Need to add nil check here
|
|
59
|
+
logger.debug { "Signature#typify(self=#{self}) => #{qualified.rooted_tags.inspect}" }
|
|
60
|
+
return qualified
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
out = super
|
|
64
|
+
logger.debug { "Signature#typify(self=#{self}) => #{out}" }
|
|
65
|
+
out
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Symbol < Base
|
|
6
|
-
# @param location [Solargraph::Location]
|
|
7
|
-
# @param name [String]
|
|
8
|
-
def initialize(location, name, **kwargs)
|
|
9
|
-
# @sg-ignore "Unrecognized keyword argument kwargs to Solargraph::Pin::Base#initialize"
|
|
10
|
-
super(location: location, name: name, **kwargs)
|
|
11
|
-
# @name = name
|
|
12
|
-
# @location = location
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def namespace
|
|
16
|
-
''
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def path
|
|
20
|
-
''
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def closure
|
|
24
|
-
@closure ||= Pin::ROOT_PIN
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def completion_item_kind
|
|
28
|
-
Solargraph::LanguageServer::CompletionItemKinds::KEYWORD
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def comments
|
|
32
|
-
''
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def return_type
|
|
36
|
-
@return_type ||= Solargraph::ComplexType::SYMBOL
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def directives
|
|
40
|
-
[]
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# @return [::Symbol]
|
|
44
|
-
def visibility
|
|
45
|
-
:public
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def deprecated?
|
|
49
|
-
false
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Symbol < Base
|
|
6
|
+
# @param location [Solargraph::Location, nil]
|
|
7
|
+
# @param name [String]
|
|
8
|
+
def initialize(location, name, **kwargs)
|
|
9
|
+
# @sg-ignore "Unrecognized keyword argument kwargs to Solargraph::Pin::Base#initialize"
|
|
10
|
+
super(location: location, name: name, **kwargs)
|
|
11
|
+
# @name = name
|
|
12
|
+
# @location = location
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def namespace
|
|
16
|
+
''
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
''
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def closure
|
|
24
|
+
@closure ||= Pin::ROOT_PIN
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def completion_item_kind
|
|
28
|
+
Solargraph::LanguageServer::CompletionItemKinds::KEYWORD
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def comments
|
|
32
|
+
''
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def return_type
|
|
36
|
+
@return_type ||= Solargraph::ComplexType::SYMBOL
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def directives
|
|
40
|
+
[]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [::Symbol]
|
|
44
|
+
def visibility
|
|
45
|
+
:public
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def deprecated?
|
|
49
|
+
false
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|