solargraph 0.54.0 → 0.58.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 +127 -0
- data/.github/workflows/plugins.yml +184 -6
- data/.github/workflows/rspec.yml +55 -5
- data/.github/workflows/typecheck.yml +8 -3
- data/.gitignore +7 -0
- data/.overcommit.yml +72 -0
- data/.rspec +1 -0
- data/.rubocop.yml +66 -0
- data/.rubocop_todo.yml +1279 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +171 -0
- data/README.md +20 -6
- data/Rakefile +125 -13
- data/bin/solargraph +8 -5
- data/lib/solargraph/api_map/cache.rb +13 -3
- data/lib/solargraph/api_map/constants.rb +279 -0
- data/lib/solargraph/api_map/index.rb +193 -0
- data/lib/solargraph/api_map/source_to_yard.rb +13 -4
- data/lib/solargraph/api_map/store.rb +207 -132
- data/lib/solargraph/api_map.rb +394 -261
- data/lib/solargraph/bench.rb +18 -1
- data/lib/solargraph/complex_type/type_methods.rb +29 -12
- data/lib/solargraph/complex_type/unique_type.rb +205 -26
- data/lib/solargraph/complex_type.rb +126 -26
- data/lib/solargraph/convention/active_support_concern.rb +111 -0
- data/lib/solargraph/convention/base.rb +20 -3
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -0
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -0
- data/lib/solargraph/convention/data_definition.rb +105 -0
- data/lib/solargraph/convention/gemspec.rb +3 -2
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -0
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -0
- data/lib/solargraph/convention/struct_definition.rb +164 -0
- data/lib/solargraph/convention.rb +36 -4
- data/lib/solargraph/diagnostics/rubocop.rb +6 -1
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
- data/lib/solargraph/doc_map.rb +316 -64
- data/lib/solargraph/environ.rb +9 -2
- data/lib/solargraph/equality.rb +34 -0
- data/lib/solargraph/gem_pins.rb +64 -38
- data/lib/solargraph/language_server/host/dispatch.rb +2 -0
- data/lib/solargraph/language_server/host/message_worker.rb +54 -5
- data/lib/solargraph/language_server/host.rb +36 -18
- data/lib/solargraph/language_server/message/base.rb +20 -12
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +2 -0
- data/lib/solargraph/language_server/message/extended/document.rb +5 -2
- data/lib/solargraph/language_server/message/extended/document_gems.rb +3 -3
- data/lib/solargraph/language_server/message/initialize.rb +3 -1
- data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
- data/lib/solargraph/language_server/message/text_document/definition.rb +5 -3
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +3 -3
- data/lib/solargraph/language_server/message/text_document/formatting.rb +23 -2
- data/lib/solargraph/language_server/message/text_document/hover.rb +1 -1
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +4 -3
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +2 -0
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +2 -2
- data/lib/solargraph/language_server/progress.rb +27 -2
- data/lib/solargraph/language_server/request.rb +4 -1
- data/lib/solargraph/library.rb +83 -73
- data/lib/solargraph/location.rb +45 -1
- data/lib/solargraph/logging.rb +12 -2
- data/lib/solargraph/page.rb +3 -0
- data/lib/solargraph/parser/comment_ripper.rb +20 -7
- data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -0
- data/lib/solargraph/parser/node_processor/base.rb +10 -5
- data/lib/solargraph/parser/node_processor.rb +26 -8
- data/lib/solargraph/parser/parser_gem/class_methods.rb +10 -18
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +13 -11
- data/lib/solargraph/parser/parser_gem/node_methods.rb +10 -19
- data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +26 -20
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +7 -4
- data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +6 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +4 -2
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +14 -2
- data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +8 -7
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +16 -6
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +64 -32
- data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -0
- data/lib/solargraph/parser/parser_gem/node_processors.rb +14 -0
- data/lib/solargraph/parser/region.rb +4 -1
- data/lib/solargraph/parser/snippet.rb +2 -0
- data/lib/solargraph/parser.rb +3 -5
- data/lib/solargraph/pin/base.rb +417 -42
- data/lib/solargraph/pin/base_variable.rb +21 -12
- data/lib/solargraph/pin/block.rb +9 -26
- data/lib/solargraph/pin/breakable.rb +9 -0
- data/lib/solargraph/pin/callable.rb +231 -0
- data/lib/solargraph/pin/closure.rb +30 -10
- data/lib/solargraph/pin/common.rb +12 -7
- data/lib/solargraph/pin/constant.rb +2 -0
- data/lib/solargraph/pin/conversions.rb +3 -2
- data/lib/solargraph/pin/delegated_method.rb +20 -1
- data/lib/solargraph/pin/documenting.rb +16 -0
- data/lib/solargraph/pin/instance_variable.rb +2 -2
- data/lib/solargraph/pin/keyword.rb +7 -2
- data/lib/solargraph/pin/local_variable.rb +15 -7
- data/lib/solargraph/pin/method.rb +241 -70
- data/lib/solargraph/pin/method_alias.rb +3 -0
- data/lib/solargraph/pin/namespace.rb +21 -13
- data/lib/solargraph/pin/parameter.rb +94 -32
- data/lib/solargraph/pin/proxy_type.rb +17 -7
- data/lib/solargraph/pin/reference/override.rb +24 -6
- data/lib/solargraph/pin/reference/require.rb +2 -2
- data/lib/solargraph/pin/reference/superclass.rb +5 -0
- data/lib/solargraph/pin/reference.rb +17 -0
- data/lib/solargraph/pin/search.rb +6 -1
- data/lib/solargraph/pin/signature.rb +39 -121
- data/lib/solargraph/pin/singleton.rb +1 -1
- data/lib/solargraph/pin/symbol.rb +8 -2
- data/lib/solargraph/pin/until.rb +18 -0
- data/lib/solargraph/pin/while.rb +18 -0
- data/lib/solargraph/pin.rb +8 -2
- data/lib/solargraph/pin_cache.rb +245 -0
- data/lib/solargraph/position.rb +19 -0
- data/lib/solargraph/range.rb +23 -4
- data/lib/solargraph/rbs_map/conversions.rb +315 -99
- data/lib/solargraph/rbs_map/core_fills.rb +50 -16
- data/lib/solargraph/rbs_map/core_map.rb +41 -11
- data/lib/solargraph/rbs_map/stdlib_map.rb +15 -5
- data/lib/solargraph/rbs_map.rb +87 -16
- data/lib/solargraph/shell.rb +117 -17
- data/lib/solargraph/source/chain/array.rb +13 -8
- data/lib/solargraph/source/chain/block_symbol.rb +1 -1
- data/lib/solargraph/source/chain/block_variable.rb +1 -1
- data/lib/solargraph/source/chain/call.rb +135 -66
- data/lib/solargraph/source/chain/constant.rb +3 -66
- data/lib/solargraph/source/chain/hash.rb +9 -3
- data/lib/solargraph/source/chain/head.rb +1 -1
- data/lib/solargraph/source/chain/if.rb +7 -2
- data/lib/solargraph/source/chain/link.rb +38 -6
- data/lib/solargraph/source/chain/literal.rb +27 -2
- data/lib/solargraph/source/chain/or.rb +2 -2
- data/lib/solargraph/source/chain/z_super.rb +1 -1
- data/lib/solargraph/source/chain.rb +140 -63
- data/lib/solargraph/source/change.rb +2 -2
- data/lib/solargraph/source/cursor.rb +4 -4
- data/lib/solargraph/source/source_chainer.rb +3 -3
- data/lib/solargraph/source.rb +110 -89
- data/lib/solargraph/source_map/clip.rb +22 -28
- data/lib/solargraph/source_map/data.rb +34 -0
- data/lib/solargraph/source_map/mapper.rb +11 -7
- data/lib/solargraph/source_map.rb +50 -43
- data/lib/solargraph/type_checker/checks.rb +4 -0
- data/lib/solargraph/type_checker/param_def.rb +2 -0
- data/lib/solargraph/type_checker/rules.rb +35 -8
- data/lib/solargraph/type_checker.rb +331 -189
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/views/_method.erb +10 -10
- data/lib/solargraph/views/_namespace.erb +3 -3
- data/lib/solargraph/views/document.erb +10 -10
- data/lib/solargraph/views/environment.erb +3 -5
- data/lib/solargraph/workspace/config.rb +25 -5
- data/lib/solargraph/workspace/require_paths.rb +97 -0
- data/lib/solargraph/workspace.rb +53 -72
- data/lib/solargraph/yard_map/helpers.rb +29 -1
- data/lib/solargraph/yard_map/mapper/to_constant.rb +8 -5
- data/lib/solargraph/yard_map/mapper/to_method.rb +55 -19
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +11 -7
- data/lib/solargraph/yard_map/mapper.rb +5 -3
- data/lib/solargraph/yard_map/to_method.rb +6 -3
- data/lib/solargraph/yardoc.rb +45 -10
- data/lib/solargraph.rb +35 -1
- data/rbs/fills/bundler/0/bundler.rbs +4271 -0
- data/rbs/fills/open3/0/open3.rbs +172 -0
- data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
- data/rbs/fills/rubygems/0/errors.rbs +364 -0
- data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
- data/rbs/fills/rubygems/0/specification.rbs +1753 -0
- data/rbs/fills/tuple/tuple.rbs +149 -0
- data/rbs_collection.yaml +19 -0
- data/sig/shims/ast/0/node.rbs +5 -0
- data/sig/shims/ast/2.4/.rbs_meta.yaml +9 -0
- data/sig/shims/ast/2.4/ast.rbs +73 -0
- data/sig/shims/parser/3.2.0.1/builders/default.rbs +195 -0
- data/sig/shims/parser/3.2.0.1/manifest.yaml +7 -0
- data/sig/shims/parser/3.2.0.1/parser.rbs +201 -0
- data/sig/shims/parser/3.2.0.1/polyfill.rbs +4 -0
- data/sig/shims/thor/1.2.0.1/.rbs_meta.yaml +9 -0
- data/sig/shims/thor/1.2.0.1/manifest.yaml +7 -0
- data/sig/shims/thor/1.2.0.1/thor.rbs +17 -0
- data/solargraph.gemspec +32 -10
- metadata +237 -37
- data/lib/.rubocop.yml +0 -22
- data/lib/solargraph/cache.rb +0 -77
- data/lib/solargraph/parser/node_methods.rb +0 -83
data/lib/solargraph/cache.rb
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'rbs'
|
|
3
|
-
|
|
4
|
-
module Solargraph
|
|
5
|
-
module Cache
|
|
6
|
-
class << self
|
|
7
|
-
# The base directory where cached documentation is installed.
|
|
8
|
-
#
|
|
9
|
-
# @return [String]
|
|
10
|
-
def base_dir
|
|
11
|
-
# The directory is not stored in a variable so it can be overridden
|
|
12
|
-
# in specs.
|
|
13
|
-
ENV['SOLARGRAPH_CACHE'] ||
|
|
14
|
-
(ENV['XDG_CACHE_HOME'] ? File.join(ENV['XDG_CACHE_HOME'], 'solargraph') : nil) ||
|
|
15
|
-
File.join(Dir.home, '.cache', 'solargraph')
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# The working directory for the current Ruby, RBS, and Solargraph versions.
|
|
19
|
-
#
|
|
20
|
-
# @return [String]
|
|
21
|
-
def work_dir
|
|
22
|
-
# The directory is not stored in a variable so it can be overridden
|
|
23
|
-
# in specs.
|
|
24
|
-
File.join(base_dir, "ruby-#{RUBY_VERSION}", "rbs-#{RBS::VERSION}", "solargraph-#{Solargraph::VERSION}")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Append the given path to the current cache directory (`work_dir`).
|
|
28
|
-
#
|
|
29
|
-
# @example
|
|
30
|
-
# Cache.join('date-3.4.1.ser')
|
|
31
|
-
#
|
|
32
|
-
# @param path [Array<String>]
|
|
33
|
-
# @return [String]
|
|
34
|
-
def join *path
|
|
35
|
-
File.join(work_dir, *path)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# @param path [Array<String>]
|
|
39
|
-
# @return [Array<Solargraph::Pin::Base>, nil]
|
|
40
|
-
def load *path
|
|
41
|
-
file = join(*path)
|
|
42
|
-
return nil unless File.file?(file)
|
|
43
|
-
Marshal.load(File.read(file, mode: 'rb'))
|
|
44
|
-
rescue StandardError => e
|
|
45
|
-
Solargraph.logger.warn "Failed to load cached file #{file}: [#{e.class}] #{e.message}"
|
|
46
|
-
FileUtils.rm_f file
|
|
47
|
-
nil
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def exist? *path
|
|
51
|
-
File.file? join(*path)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @param path [Array<String>]
|
|
55
|
-
# @param pins [Array<Pin::Base>]
|
|
56
|
-
# @return [void]
|
|
57
|
-
def save *path, pins
|
|
58
|
-
file = File.join(work_dir, *path)
|
|
59
|
-
base = File.dirname(file)
|
|
60
|
-
FileUtils.mkdir_p base unless File.directory?(base)
|
|
61
|
-
ser = Marshal.dump(pins)
|
|
62
|
-
File.write file, ser, mode: 'wb'
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# @return [void]
|
|
66
|
-
# @param path [Array<String>]
|
|
67
|
-
def uncache *path
|
|
68
|
-
FileUtils.rm_rf File.join(work_dir, *path), secure: true
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# @return [void]
|
|
72
|
-
def clear
|
|
73
|
-
FileUtils.rm_rf base_dir, secure: true
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Parser
|
|
3
|
-
class NodeMethods
|
|
4
|
-
module_function
|
|
5
|
-
|
|
6
|
-
# @abstract
|
|
7
|
-
# @param node [Parser::AST::Node]
|
|
8
|
-
# @return [String]
|
|
9
|
-
def unpack_name node
|
|
10
|
-
raise NotImplementedError
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# @abstract
|
|
14
|
-
# @todo Temporarily here for testing. Move to Solargraph::Parser.
|
|
15
|
-
# @param node [Parser::AST::Node]
|
|
16
|
-
# @return [Array<Parser::AST::Node>]
|
|
17
|
-
def call_nodes_from node
|
|
18
|
-
raise NotImplementedError
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Find all the nodes within the provided node that potentially return a
|
|
22
|
-
# value.
|
|
23
|
-
#
|
|
24
|
-
# The node parameter typically represents a method's logic, e.g., the
|
|
25
|
-
# second child (after the :args node) of a :def node. A simple one-line
|
|
26
|
-
# method would typically return itself, while a node with conditions
|
|
27
|
-
# would return the resulting node from each conditional branch. Nodes
|
|
28
|
-
# that follow a :return node are assumed to be unreachable. Nil values
|
|
29
|
-
# are converted to nil node types.
|
|
30
|
-
#
|
|
31
|
-
# @abstract
|
|
32
|
-
# @param node [Parser::AST::Node]
|
|
33
|
-
# @return [Array<Parser::AST::Node>]
|
|
34
|
-
def returns_from_method_body node
|
|
35
|
-
raise NotImplementedError
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# @abstract
|
|
39
|
-
# @param node [Parser::AST::Node]
|
|
40
|
-
#
|
|
41
|
-
# @return [Array<Parser::AST::Node>]
|
|
42
|
-
def const_nodes_from node
|
|
43
|
-
raise NotImplementedError
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# @abstract
|
|
47
|
-
# @param cursor [Solargraph::Source::Cursor]
|
|
48
|
-
# @return [Parser::AST::Node, nil]
|
|
49
|
-
def find_recipient_node cursor
|
|
50
|
-
raise NotImplementedError
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# @abstract
|
|
54
|
-
# @param node [Parser::AST::Node]
|
|
55
|
-
# @return [Array<AST::Node>] low-level value nodes in
|
|
56
|
-
# value position. Does not include explicit return
|
|
57
|
-
# statements
|
|
58
|
-
def value_position_nodes_only(node)
|
|
59
|
-
raise NotImplementedError
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# @abstract
|
|
63
|
-
# @param nodes [Enumerable<Parser::AST::Node>]
|
|
64
|
-
def any_splatted_call?(nodes)
|
|
65
|
-
raise NotImplementedError
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# @abstract
|
|
69
|
-
# @param node [Parser::AST::Node]
|
|
70
|
-
# @return [void]
|
|
71
|
-
def process node
|
|
72
|
-
raise NotImplementedError
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# @abstract
|
|
76
|
-
# @param node [Parser::AST::Node]
|
|
77
|
-
# @return [Hash{Parser::AST::Node => Chain}]
|
|
78
|
-
def convert_hash node
|
|
79
|
-
raise NotImplementedError
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|