solargraph 0.59.0.dev.1 → 0.59.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/.github/workflows/linting.yml +3 -1
- data/.github/workflows/plugins.yml +12 -3
- data/.github/workflows/rspec.yml +9 -54
- data/.github/workflows/typecheck.yml +2 -1
- data/.gitignore +1 -0
- data/.rubocop.yml +38 -6
- data/.rubocop_todo.yml +40 -931
- data/CHANGELOG.md +22 -1
- data/Gemfile +3 -1
- data/Rakefile +25 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/constants.rb +0 -1
- data/lib/solargraph/api_map/index.rb +11 -11
- data/lib/solargraph/api_map/source_to_yard.rb +9 -8
- data/lib/solargraph/api_map/store.rb +28 -20
- data/lib/solargraph/api_map.rb +70 -41
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/type_methods.rb +14 -16
- data/lib/solargraph/complex_type/unique_type.rb +56 -47
- data/lib/solargraph/complex_type.rb +70 -62
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +4 -4
- data/lib/solargraph/convention/data_definition.rb +1 -1
- 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 +1 -1
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +3 -3
- data/lib/solargraph/convention/struct_definition.rb +3 -3
- 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/rubocop.rb +10 -10
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +3 -3
- data/lib/solargraph/diagnostics/type_check.rb +10 -10
- data/lib/solargraph/diagnostics/update_errors.rb +37 -41
- data/lib/solargraph/doc_map.rb +370 -132
- data/lib/solargraph/equality.rb +3 -3
- data/lib/solargraph/gem_pins.rb +19 -18
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +2 -3
- data/lib/solargraph/language_server/host/message_worker.rb +2 -2
- data/lib/solargraph/language_server/host/sources.rb +1 -1
- data/lib/solargraph/language_server/host.rb +24 -21
- 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 +10 -11
- 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 +8 -8
- data/lib/solargraph/language_server/message/text_document/definition.rb +41 -34
- 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 -21
- data/lib/solargraph/language_server/message/text_document/formatting.rb +6 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +3 -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 +2 -2
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -19
- 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 -19
- 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 +68 -95
- data/lib/solargraph/location.rb +10 -12
- data/lib/solargraph/logging.rb +4 -6
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +12 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +32 -44
- data/lib/solargraph/parser/node_processor/base.rb +4 -4
- data/lib/solargraph/parser/node_processor.rb +1 -1
- data/lib/solargraph/parser/parser_gem/class_methods.rb +4 -6
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +20 -20
- data/lib/solargraph/parser/parser_gem/node_methods.rb +66 -65
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +12 -12
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +1 -2
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +3 -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 +3 -3
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +3 -5
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +118 -112
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem.rb +14 -12
- data/lib/solargraph/parser/snippet.rb +2 -0
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +76 -64
- data/lib/solargraph/pin/base_variable.rb +28 -71
- data/lib/solargraph/pin/block.rb +3 -2
- data/lib/solargraph/pin/breakable.rb +2 -0
- data/lib/solargraph/pin/callable.rb +23 -26
- data/lib/solargraph/pin/closure.rb +5 -4
- data/lib/solargraph/pin/common.rb +5 -2
- data/lib/solargraph/pin/compound_statement.rb +3 -3
- data/lib/solargraph/pin/constant.rb +43 -45
- data/lib/solargraph/pin/conversions.rb +9 -4
- data/lib/solargraph/pin/delegated_method.rb +4 -4
- data/lib/solargraph/pin/documenting.rb +3 -2
- data/lib/solargraph/pin/local_variable.rb +4 -4
- data/lib/solargraph/pin/method.rb +74 -70
- data/lib/solargraph/pin/namespace.rb +13 -12
- data/lib/solargraph/pin/parameter.rb +28 -27
- data/lib/solargraph/pin/proxy_type.rb +2 -0
- data/lib/solargraph/pin/reference/type_alias.rb +16 -0
- data/lib/solargraph/pin/reference.rb +18 -0
- data/lib/solargraph/pin/search.rb +2 -2
- data/lib/solargraph/pin/signature.rb +9 -14
- data/lib/solargraph/pin/symbol.rb +1 -0
- data/lib/solargraph/pin/until.rb +1 -3
- data/lib/solargraph/pin/while.rb +1 -3
- data/lib/solargraph/pin_cache.rb +71 -488
- data/lib/solargraph/position.rb +38 -17
- data/lib/solargraph/range.rb +10 -9
- data/lib/solargraph/rbs_map/conversions.rb +327 -221
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- data/lib/solargraph/rbs_map/stdlib_map.rb +0 -1
- data/lib/solargraph/rbs_map.rb +5 -15
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +224 -66
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +49 -44
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +3 -1
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +8 -6
- data/lib/solargraph/source/chain/if.rb +11 -10
- data/lib/solargraph/source/chain/instance_variable.rb +3 -1
- data/lib/solargraph/source/chain/link.rb +99 -109
- data/lib/solargraph/source/chain/literal.rb +4 -6
- data/lib/solargraph/source/chain/or.rb +2 -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 +26 -16
- data/lib/solargraph/source/change.rb +3 -3
- data/lib/solargraph/source/cursor.rb +18 -18
- data/lib/solargraph/source/encoding_fixes.rb +6 -7
- data/lib/solargraph/source/source_chainer.rb +46 -32
- data/lib/solargraph/source/updater.rb +1 -1
- data/lib/solargraph/source.rb +27 -29
- data/lib/solargraph/source_map/clip.rb +38 -30
- data/lib/solargraph/source_map/mapper.rb +51 -47
- data/lib/solargraph/source_map.rb +8 -4
- data/lib/solargraph/type_checker/rules.rb +8 -8
- data/lib/solargraph/type_checker.rb +95 -102
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +11 -10
- data/lib/solargraph/workspace/gemspecs.rb +3 -3
- data/lib/solargraph/workspace.rb +45 -165
- data/lib/solargraph/yard_map/helpers.rb +6 -2
- data/lib/solargraph/yard_map/mapper/to_method.rb +8 -6
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -1
- data/lib/solargraph/yard_map/mapper.rb +12 -12
- data/lib/solargraph/yard_map.rb +17 -18
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +26 -33
- data/lib/solargraph.rb +7 -5
- data/solargraph.gemspec +36 -35
- metadata +33 -38
data/lib/solargraph/position.rb
CHANGED
|
@@ -21,12 +21,8 @@ module Solargraph
|
|
|
21
21
|
@character = character
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
protected def equality_fields
|
|
25
|
-
[line, character]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
24
|
# @param other [Position]
|
|
29
|
-
def <=>
|
|
25
|
+
def <=> other
|
|
30
26
|
return nil unless other.is_a?(Position)
|
|
31
27
|
if line == other.line
|
|
32
28
|
character <=> other.character
|
|
@@ -57,7 +53,24 @@ module Solargraph
|
|
|
57
53
|
# @return [Integer]
|
|
58
54
|
def self.to_offset text, position
|
|
59
55
|
return 0 if text.empty?
|
|
60
|
-
|
|
56
|
+
|
|
57
|
+
newline_index = -1
|
|
58
|
+
line = -1
|
|
59
|
+
last_line_index = 0
|
|
60
|
+
|
|
61
|
+
# @sg-ignore Typechecker thinks `newline_index` inside of the assignment
|
|
62
|
+
# can be nil
|
|
63
|
+
while (newline_index = text.index("\n", newline_index + 1)) && line <= position.line
|
|
64
|
+
line += 1
|
|
65
|
+
break if line == position.line
|
|
66
|
+
|
|
67
|
+
last_line_index = newline_index
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
last_line_index += 1 if position.line.positive?
|
|
71
|
+
# @sg-ignore `last_line_index` is always an Integer because `newline_index`
|
|
72
|
+
# is never nil inside the while block
|
|
73
|
+
last_line_index + position.character
|
|
61
74
|
end
|
|
62
75
|
|
|
63
76
|
# Get a numeric offset for the specified text and a position identified
|
|
@@ -73,25 +86,27 @@ module Solargraph
|
|
|
73
86
|
|
|
74
87
|
# Get a position for the specified text and offset.
|
|
75
88
|
#
|
|
89
|
+
# @raise [InvalidOffsetError] if the offset is outside the text range
|
|
90
|
+
#
|
|
76
91
|
# @param text [String]
|
|
77
92
|
# @param offset [Integer]
|
|
78
93
|
# @return [Position]
|
|
79
94
|
def self.from_offset text, offset
|
|
95
|
+
raise InvalidOffsetError if offset > text.length
|
|
96
|
+
|
|
80
97
|
cursor = 0
|
|
81
98
|
line = 0
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
character = offset - cursor
|
|
89
|
-
break
|
|
90
|
-
end
|
|
91
|
-
cursor += line_length
|
|
99
|
+
character = offset
|
|
100
|
+
newline_index = -1
|
|
101
|
+
|
|
102
|
+
# @sg-ignore Typechecker thinks `newline_index` inside of the assignment
|
|
103
|
+
# can be nil
|
|
104
|
+
while (newline_index = text.index("\n", newline_index + 1)) && newline_index < offset
|
|
92
105
|
line += 1
|
|
106
|
+
# @sg-ignore `newline_index` is always an Integer inside the while block
|
|
107
|
+
character = offset - newline_index - 1
|
|
93
108
|
end
|
|
94
|
-
character = 0 if character.nil?
|
|
109
|
+
character = 0 if character.nil? && (cursor - offset).between?(0, 1)
|
|
95
110
|
raise InvalidOffsetError if character.nil?
|
|
96
111
|
# @sg-ignore flow sensitive typing needs to handle 'raise if'
|
|
97
112
|
Position.new(line, character)
|
|
@@ -114,5 +129,11 @@ module Solargraph
|
|
|
114
129
|
return false unless other.is_a?(Position)
|
|
115
130
|
line == other.line and character == other.character
|
|
116
131
|
end
|
|
132
|
+
|
|
133
|
+
protected
|
|
134
|
+
|
|
135
|
+
def equality_fields
|
|
136
|
+
[line, character]
|
|
137
|
+
end
|
|
117
138
|
end
|
|
118
139
|
end
|
data/lib/solargraph/range.rb
CHANGED
|
@@ -19,12 +19,8 @@ module Solargraph
|
|
|
19
19
|
@ending = ending
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
protected def equality_fields
|
|
23
|
-
[start, ending]
|
|
24
|
-
end
|
|
25
|
-
|
|
26
22
|
# @param other [BasicObject]
|
|
27
|
-
def <=>
|
|
23
|
+
def <=> other
|
|
28
24
|
return nil unless other.is_a?(Range)
|
|
29
25
|
if start == other.start
|
|
30
26
|
ending <=> other.ending
|
|
@@ -36,7 +32,7 @@ module Solargraph
|
|
|
36
32
|
# Get a hash of the range. This representation is suitable for use in
|
|
37
33
|
# the language server protocol.
|
|
38
34
|
#
|
|
39
|
-
# @return [Hash
|
|
35
|
+
# @return [Hash{Symbol => Position}]
|
|
40
36
|
def to_hash
|
|
41
37
|
{
|
|
42
38
|
start: start.to_hash,
|
|
@@ -86,9 +82,8 @@ module Solargraph
|
|
|
86
82
|
# @param node [::Parser::AST::Node]
|
|
87
83
|
# @return [Range, nil]
|
|
88
84
|
def self.from_node node
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
end
|
|
85
|
+
return unless node&.loc&.expression
|
|
86
|
+
from_expr(node.loc.expression)
|
|
92
87
|
end
|
|
93
88
|
|
|
94
89
|
# Get a range from a Parser range, usually found in
|
|
@@ -108,5 +103,11 @@ module Solargraph
|
|
|
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
|