solargraph 0.58.2 → 0.59.0.dev.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/.envrc +3 -0
- data/.github/workflows/linting.yml +4 -5
- data/.github/workflows/plugins.yml +41 -34
- data/.github/workflows/rspec.yml +44 -23
- data/.github/workflows/typecheck.yml +2 -2
- data/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +50 -966
- data/Gemfile +3 -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 +13 -3
- data/lib/solargraph/api_map/index.rb +23 -18
- data/lib/solargraph/api_map/source_to_yard.rb +22 -9
- data/lib/solargraph/api_map/store.rb +33 -28
- data/lib/solargraph/api_map.rb +150 -82
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +28 -17
- data/lib/solargraph/complex_type/unique_type.rb +218 -57
- data/lib/solargraph/complex_type.rb +170 -57
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- 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 +15 -15
- data/lib/solargraph/convention/gemspec.rb +23 -23
- data/lib/solargraph/convention/rakefile.rb +17 -17
- 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 +78 -78
- data/lib/solargraph/converters/dd.rb +19 -17
- data/lib/solargraph/converters/dl.rb +17 -15
- data/lib/solargraph/converters/dt.rb +17 -15
- data/lib/solargraph/converters/misc.rb +3 -1
- 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 +37 -41
- data/lib/solargraph/doc_map.rb +133 -373
- data/lib/solargraph/equality.rb +4 -4
- data/lib/solargraph/gem_pins.rb +21 -20
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- 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 +30 -22
- data/lib/solargraph/language_server/message/base.rb +97 -97
- data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
- 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 +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/initialize.rb +197 -191
- 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 +23 -16
- 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 +18 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
- 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/workspace/did_change_configuration.rb +41 -35
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
- data/lib/solargraph/language_server/message.rb +94 -94
- data/lib/solargraph/language_server/request.rb +29 -27
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/library.rb +85 -44
- data/lib/solargraph/location.rb +17 -14
- data/lib/solargraph/logging.rb +24 -4
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +19 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +326 -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 +32 -14
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +50 -25
- data/lib/solargraph/parser/parser_gem/node_methods.rb +91 -70
- 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 +12 -12
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
- 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/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/until_node.rb +29 -29
- 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 +14 -12
- data/lib/solargraph/parser/region.rb +9 -3
- data/lib/solargraph/parser/snippet.rb +3 -1
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +126 -80
- 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 +65 -21
- data/lib/solargraph/pin/closure.rb +7 -10
- data/lib/solargraph/pin/common.rb +24 -6
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/constant.rb +43 -45
- 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 +153 -104
- data/lib/solargraph/pin/method_alias.rb +8 -0
- data/lib/solargraph/pin/namespace.rb +19 -12
- data/lib/solargraph/pin/parameter.rb +100 -36
- data/lib/solargraph/pin/proxy_type.rb +4 -1
- data/lib/solargraph/pin/reference/override.rb +1 -1
- data/lib/solargraph/pin/reference/superclass.rb +2 -0
- data/lib/solargraph/pin/reference.rb +19 -0
- data/lib/solargraph/pin/search.rb +3 -2
- data/lib/solargraph/pin/signature.rb +15 -12
- 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 +490 -73
- data/lib/solargraph/position.rb +14 -10
- data/lib/solargraph/range.rb +16 -15
- data/lib/solargraph/rbs_map/conversions.rb +343 -214
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- 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 +77 -32
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +128 -73
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +96 -56
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +5 -1
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +8 -5
- 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 +99 -109
- data/lib/solargraph/source/chain/literal.rb +9 -6
- data/lib/solargraph/source/chain/or.rb +10 -4
- data/lib/solargraph/source/chain/q_call.rb +13 -11
- data/lib/solargraph/source/chain/variable.rb +15 -13
- data/lib/solargraph/source/chain/z_super.rb +28 -30
- data/lib/solargraph/source/chain.rb +49 -38
- data/lib/solargraph/source/change.rb +12 -5
- data/lib/solargraph/source/cursor.rb +23 -17
- 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 +48 -29
- data/lib/solargraph/source_map/data.rb +4 -1
- data/lib/solargraph/source_map/mapper.rb +71 -42
- data/lib/solargraph/source_map.rb +21 -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 +195 -120
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +13 -10
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +1 -0
- data/lib/solargraph/workspace.rb +149 -30
- data/lib/solargraph/yard_map/helpers.rb +8 -3
- 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 +13 -8
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +33 -23
- data/lib/solargraph.rb +29 -8
- data/rbs/fills/rubygems/0/dependency.rbs +193 -0
- data/rbs/fills/tuple/tuple.rbs +28 -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 +36 -34
- metadata +38 -33
- 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/lib/solargraph/position.rb
CHANGED
|
@@ -21,13 +21,8 @@ module Solargraph
|
|
|
21
21
|
@character = character
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
25
|
-
protected def equality_fields
|
|
26
|
-
[line, character]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
24
|
# @param other [Position]
|
|
30
|
-
def <=>
|
|
25
|
+
def <=> other
|
|
31
26
|
return nil unless other.is_a?(Position)
|
|
32
27
|
if line == other.line
|
|
33
28
|
character <=> other.character
|
|
@@ -63,15 +58,16 @@ module Solargraph
|
|
|
63
58
|
line = -1
|
|
64
59
|
last_line_index = 0
|
|
65
60
|
|
|
61
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
66
62
|
while (newline_index = text.index("\n", newline_index + 1)) && line <= position.line
|
|
67
63
|
line += 1
|
|
68
64
|
break if line == position.line
|
|
69
65
|
|
|
70
|
-
line_length = newline_index - last_line_index
|
|
71
66
|
last_line_index = newline_index
|
|
72
67
|
end
|
|
73
68
|
|
|
74
|
-
last_line_index += 1 if position.line
|
|
69
|
+
last_line_index += 1 if position.line.positive?
|
|
70
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
75
71
|
last_line_index + position.character
|
|
76
72
|
end
|
|
77
73
|
|
|
@@ -101,12 +97,15 @@ module Solargraph
|
|
|
101
97
|
character = offset
|
|
102
98
|
newline_index = -1
|
|
103
99
|
|
|
100
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
104
101
|
while (newline_index = text.index("\n", newline_index + 1)) && newline_index < offset
|
|
105
102
|
line += 1
|
|
103
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
106
104
|
character = offset - newline_index - 1
|
|
107
105
|
end
|
|
108
|
-
character = 0 if character.nil?
|
|
106
|
+
character = 0 if character.nil? && (cursor - offset).between?(0, 1)
|
|
109
107
|
raise InvalidOffsetError if character.nil?
|
|
108
|
+
# @sg-ignore flow sensitive typing needs to handle 'raise if'
|
|
110
109
|
Position.new(line, character)
|
|
111
110
|
end
|
|
112
111
|
|
|
@@ -125,8 +124,13 @@ module Solargraph
|
|
|
125
124
|
|
|
126
125
|
def == other
|
|
127
126
|
return false unless other.is_a?(Position)
|
|
128
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
129
127
|
line == other.line and character == other.character
|
|
130
128
|
end
|
|
129
|
+
|
|
130
|
+
protected
|
|
131
|
+
|
|
132
|
+
def equality_fields
|
|
133
|
+
[line, character]
|
|
134
|
+
end
|
|
131
135
|
end
|
|
132
136
|
end
|
data/lib/solargraph/range.rb
CHANGED
|
@@ -19,20 +19,12 @@ module Solargraph
|
|
|
19
19
|
@ending = ending
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
# @sg-ignore Fix "Not enough arguments to Module#protected"
|
|
23
|
-
protected def equality_fields
|
|
24
|
-
[start, ending]
|
|
25
|
-
end
|
|
26
|
-
|
|
27
22
|
# @param other [BasicObject]
|
|
28
|
-
def <=>
|
|
23
|
+
def <=> other
|
|
29
24
|
return nil unless other.is_a?(Range)
|
|
30
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
31
25
|
if start == other.start
|
|
32
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
33
26
|
ending <=> other.ending
|
|
34
27
|
else
|
|
35
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
36
28
|
start <=> other.start
|
|
37
29
|
end
|
|
38
30
|
end
|
|
@@ -40,7 +32,7 @@ module Solargraph
|
|
|
40
32
|
# Get a hash of the range. This representation is suitable for use in
|
|
41
33
|
# the language server protocol.
|
|
42
34
|
#
|
|
43
|
-
# @return [Hash
|
|
35
|
+
# @return [Hash{Symbol => Position}]
|
|
44
36
|
def to_hash
|
|
45
37
|
{
|
|
46
38
|
start: start.to_hash,
|
|
@@ -54,8 +46,11 @@ module Solargraph
|
|
|
54
46
|
# @return [Boolean]
|
|
55
47
|
def contain? position
|
|
56
48
|
position = Position.normalize(position)
|
|
49
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
57
50
|
return false if position.line < start.line || position.line > ending.line
|
|
51
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
58
52
|
return false if position.line == start.line && position.character < start.character
|
|
53
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
59
54
|
return false if position.line == ending.line && position.character > ending.character
|
|
60
55
|
true
|
|
61
56
|
end
|
|
@@ -63,9 +58,11 @@ module Solargraph
|
|
|
63
58
|
# True if the range contains the specified position and the position does not precede it.
|
|
64
59
|
#
|
|
65
60
|
# @param position [Position, Array(Integer, Integer)]
|
|
61
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
66
62
|
# @return [Boolean]
|
|
67
63
|
def include? position
|
|
68
64
|
position = Position.normalize(position)
|
|
65
|
+
# @sg-ignore flow sensitive typing should be able to handle redefinition
|
|
69
66
|
contain?(position) && !(position.line == start.line && position.character == start.character)
|
|
70
67
|
end
|
|
71
68
|
|
|
@@ -82,12 +79,11 @@ module Solargraph
|
|
|
82
79
|
|
|
83
80
|
# Get a range from a node.
|
|
84
81
|
#
|
|
85
|
-
# @param node [Parser::AST::Node]
|
|
82
|
+
# @param node [::Parser::AST::Node]
|
|
86
83
|
# @return [Range, nil]
|
|
87
84
|
def self.from_node node
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
end
|
|
85
|
+
return unless node&.loc&.expression
|
|
86
|
+
from_expr(node.loc.expression)
|
|
91
87
|
end
|
|
92
88
|
|
|
93
89
|
# Get a range from a Parser range, usually found in
|
|
@@ -101,12 +97,17 @@ module Solargraph
|
|
|
101
97
|
|
|
102
98
|
def == other
|
|
103
99
|
return false unless other.is_a?(Range)
|
|
104
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
105
100
|
start == other.start && ending == other.ending
|
|
106
101
|
end
|
|
107
102
|
|
|
108
103
|
def inspect
|
|
109
104
|
"#<#{self.class} #{start.inspect} to #{ending.inspect}>"
|
|
110
105
|
end
|
|
106
|
+
|
|
107
|
+
protected
|
|
108
|
+
|
|
109
|
+
def equality_fields
|
|
110
|
+
[start, ending]
|
|
111
|
+
end
|
|
111
112
|
end
|
|
112
113
|
end
|