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,110 +1,110 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class ApiMap
|
|
5
|
-
class Cache
|
|
6
|
-
def initialize
|
|
7
|
-
# @type [Hash{String => Array<Pin::Method>}]
|
|
8
|
-
@methods = {}
|
|
9
|
-
# @type [Hash{String, Array<String> => Array<Pin::Base>}]
|
|
10
|
-
@constants = {}
|
|
11
|
-
# @type [Hash{String => String}]
|
|
12
|
-
@qualified_namespaces = {}
|
|
13
|
-
# @type [Hash{String => Pin::Method}]
|
|
14
|
-
@receiver_definitions = {}
|
|
15
|
-
# @type [Hash{String => SourceMap::Clip}]
|
|
16
|
-
@clips = {}
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def to_s
|
|
20
|
-
self.class.to_s
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# avoid enormous dump
|
|
24
|
-
def inspect
|
|
25
|
-
to_s
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# @param fqns [String]
|
|
29
|
-
# @param scope [Symbol]
|
|
30
|
-
# @param visibility [Array<Symbol>]
|
|
31
|
-
# @param deep [Boolean]
|
|
32
|
-
# @return [Array<Pin::Method>]
|
|
33
|
-
def get_methods fqns, scope, visibility, deep
|
|
34
|
-
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# @param fqns [String]
|
|
38
|
-
# @param scope [Symbol]
|
|
39
|
-
# @param visibility [Array<Symbol>]
|
|
40
|
-
# @param deep [Boolean]
|
|
41
|
-
# @param value [Array<Pin::Method>]
|
|
42
|
-
# @return [void]
|
|
43
|
-
def set_methods fqns, scope, visibility, deep, value
|
|
44
|
-
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# @param namespace [String]
|
|
48
|
-
# @param contexts [Array<String>]
|
|
49
|
-
# @return [Array<Pin::Base>]
|
|
50
|
-
def get_constants namespace, contexts
|
|
51
|
-
@constants["#{namespace}|#{contexts}"]
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @param namespace [String]
|
|
55
|
-
# @param contexts [Array<String>]
|
|
56
|
-
# @param value [Array<Pin::Base>]
|
|
57
|
-
# @return [void]
|
|
58
|
-
def set_constants namespace, contexts, value
|
|
59
|
-
@constants["#{namespace}|#{contexts}"] = value
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# @param name [String]
|
|
63
|
-
# @param context [String]
|
|
64
|
-
# @return [String]
|
|
65
|
-
def get_qualified_namespace name, context
|
|
66
|
-
@qualified_namespaces["#{name}|#{context}"]
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# @param name [String]
|
|
70
|
-
# @param context [String]
|
|
71
|
-
# @param value [String]
|
|
72
|
-
# @return [void]
|
|
73
|
-
def set_qualified_namespace name, context, value
|
|
74
|
-
@qualified_namespaces["#{name}|#{context}"] = value
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# @param path [String]
|
|
78
|
-
# @return [Pin::Method]
|
|
79
|
-
def get_receiver_definition path
|
|
80
|
-
@receiver_definitions[path]
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# @param path [String]
|
|
84
|
-
# @param pin [Pin::Method]
|
|
85
|
-
# @return [void]
|
|
86
|
-
def set_receiver_definition path, pin
|
|
87
|
-
@receiver_definitions[path] = pin
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# @return [void]
|
|
91
|
-
def clear
|
|
92
|
-
return if empty?
|
|
93
|
-
|
|
94
|
-
all_caches.each(&:clear)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# @return [Boolean]
|
|
98
|
-
def empty?
|
|
99
|
-
all_caches.all?(&:empty?)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
private
|
|
103
|
-
|
|
104
|
-
# @return [Array<Object>]
|
|
105
|
-
def all_caches
|
|
106
|
-
[@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class ApiMap
|
|
5
|
+
class Cache
|
|
6
|
+
def initialize
|
|
7
|
+
# @type [Hash{String => Array<Pin::Method>}]
|
|
8
|
+
@methods = {}
|
|
9
|
+
# @type [Hash{String, Array<String> => Array<Pin::Base>}]
|
|
10
|
+
@constants = {}
|
|
11
|
+
# @type [Hash{String => String, nil}]
|
|
12
|
+
@qualified_namespaces = {}
|
|
13
|
+
# @type [Hash{String => Pin::Method}]
|
|
14
|
+
@receiver_definitions = {}
|
|
15
|
+
# @type [Hash{String => SourceMap::Clip}]
|
|
16
|
+
@clips = {}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_s
|
|
20
|
+
self.class.to_s
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# avoid enormous dump
|
|
24
|
+
def inspect
|
|
25
|
+
to_s
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param fqns [String]
|
|
29
|
+
# @param scope [Symbol]
|
|
30
|
+
# @param visibility [Array<Symbol>]
|
|
31
|
+
# @param deep [Boolean]
|
|
32
|
+
# @return [Array<Pin::Method>]
|
|
33
|
+
def get_methods fqns, scope, visibility, deep
|
|
34
|
+
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @param fqns [String]
|
|
38
|
+
# @param scope [Symbol]
|
|
39
|
+
# @param visibility [Array<Symbol>]
|
|
40
|
+
# @param deep [Boolean]
|
|
41
|
+
# @param value [Array<Pin::Method>]
|
|
42
|
+
# @return [void]
|
|
43
|
+
def set_methods fqns, scope, visibility, deep, value
|
|
44
|
+
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @param namespace [String]
|
|
48
|
+
# @param contexts [Array<String>]
|
|
49
|
+
# @return [Array<Pin::Base>]
|
|
50
|
+
def get_constants namespace, contexts
|
|
51
|
+
@constants["#{namespace}|#{contexts}"]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @param namespace [String]
|
|
55
|
+
# @param contexts [Array<String>]
|
|
56
|
+
# @param value [Array<Pin::Base>]
|
|
57
|
+
# @return [void]
|
|
58
|
+
def set_constants namespace, contexts, value
|
|
59
|
+
@constants["#{namespace}|#{contexts}"] = value
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @param name [String]
|
|
63
|
+
# @param context [String]
|
|
64
|
+
# @return [String, nil]
|
|
65
|
+
def get_qualified_namespace name, context
|
|
66
|
+
@qualified_namespaces["#{name}|#{context}"]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @param name [String]
|
|
70
|
+
# @param context [String]
|
|
71
|
+
# @param value [String, nil]
|
|
72
|
+
# @return [void]
|
|
73
|
+
def set_qualified_namespace name, context, value
|
|
74
|
+
@qualified_namespaces["#{name}|#{context}"] = value
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# @param path [String]
|
|
78
|
+
# @return [Pin::Method]
|
|
79
|
+
def get_receiver_definition path
|
|
80
|
+
@receiver_definitions[path]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @param path [String]
|
|
84
|
+
# @param pin [Pin::Method]
|
|
85
|
+
# @return [void]
|
|
86
|
+
def set_receiver_definition path, pin
|
|
87
|
+
@receiver_definitions[path] = pin
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# @return [void]
|
|
91
|
+
def clear
|
|
92
|
+
return if empty?
|
|
93
|
+
|
|
94
|
+
all_caches.each(&:clear)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @return [Boolean]
|
|
98
|
+
def empty?
|
|
99
|
+
all_caches.all?(&:empty?)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
private
|
|
103
|
+
|
|
104
|
+
# @return [Array<Object>]
|
|
105
|
+
def all_caches
|
|
106
|
+
[@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|