solargraph 0.58.0 → 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/.envrc +3 -0
- data/.gitattributes +2 -0
- data/.github/workflows/linting.yml +6 -5
- data/.github/workflows/plugins.yml +48 -35
- data/.github/workflows/rspec.yml +15 -28
- data/.github/workflows/typecheck.yml +3 -2
- data/.gitignore +1 -0
- data/.rubocop.yml +38 -6
- data/.rubocop_todo.yml +53 -966
- data/CHANGELOG.md +24 -0
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +26 -23
- data/bin/solargraph +9 -8
- data/lib/solargraph/api_map/cache.rb +110 -110
- data/lib/solargraph/api_map/constants.rb +288 -279
- data/lib/solargraph/api_map/index.rb +204 -193
- data/lib/solargraph/api_map/source_to_yard.rb +110 -97
- data/lib/solargraph/api_map/store.rb +395 -384
- data/lib/solargraph/api_map.rb +1029 -945
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +240 -228
- data/lib/solargraph/complex_type/unique_type.rb +641 -482
- data/lib/solargraph/complex_type.rb +557 -444
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- 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/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 +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/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 +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/diagnostics/update_errors.rb +37 -41
- data/lib/solargraph/doc_map.rb +438 -439
- data/lib/solargraph/equality.rb +34 -34
- data/lib/solargraph/gem_pins.rb +98 -98
- 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 +130 -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 +886 -878
- 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 +108 -114
- data/lib/solargraph/language_server/message/extended/document.rb +24 -23
- 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 +58 -56
- data/lib/solargraph/language_server/message/text_document/definition.rb +49 -40
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +36 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +150 -148
- data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
- 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 +25 -24
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +33 -25
- 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 +33 -23
- 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 +702 -683
- data/lib/solargraph/location.rb +85 -82
- data/lib/solargraph/logging.rb +55 -37
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +84 -69
- data/lib/solargraph/parser/flow_sensitive_typing.rb +471 -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 +165 -149
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +191 -166
- data/lib/solargraph/parser/parser_gem/node_methods.rb +507 -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 +45 -46
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +60 -53
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +53 -23
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +42 -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 +51 -52
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +302 -291
- 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 +33 -29
- data/lib/solargraph/parser/parser_gem/node_processors.rb +74 -70
- data/lib/solargraph/parser/parser_gem.rb +14 -12
- data/lib/solargraph/parser/region.rb +75 -69
- data/lib/solargraph/parser/snippet.rb +19 -17
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +773 -729
- data/lib/solargraph/pin/base_variable.rb +375 -126
- data/lib/solargraph/pin/block.rb +127 -104
- data/lib/solargraph/pin/breakable.rb +15 -9
- data/lib/solargraph/pin/callable.rb +275 -231
- data/lib/solargraph/pin/closure.rb +69 -72
- data/lib/solargraph/pin/common.rb +97 -79
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/constant.rb +43 -45
- data/lib/solargraph/pin/conversions.rb +129 -123
- data/lib/solargraph/pin/delegated_method.rb +131 -120
- data/lib/solargraph/pin/documenting.rb +116 -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 +724 -672
- data/lib/solargraph/pin/method_alias.rb +42 -34
- data/lib/solargraph/pin/namespace.rb +122 -115
- data/lib/solargraph/pin/parameter.rb +339 -275
- data/lib/solargraph/pin/proxy_type.rb +42 -39
- data/lib/solargraph/pin/reference/override.rb +47 -47
- data/lib/solargraph/pin/reference/superclass.rb +17 -15
- data/lib/solargraph/pin/reference/type_alias.rb +16 -0
- data/lib/solargraph/pin/reference.rb +59 -39
- data/lib/solargraph/pin/search.rb +62 -61
- data/lib/solargraph/pin/signature.rb +64 -61
- data/lib/solargraph/pin/symbol.rb +54 -53
- data/lib/solargraph/pin/until.rb +16 -18
- data/lib/solargraph/pin/while.rb +16 -18
- data/lib/solargraph/pin.rb +46 -44
- data/lib/solargraph/pin_cache.rb +248 -245
- data/lib/solargraph/position.rb +139 -119
- data/lib/solargraph/range.rb +113 -112
- data/lib/solargraph/rbs_map/conversions.rb +952 -823
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- data/lib/solargraph/rbs_map/core_map.rb +65 -58
- data/lib/solargraph/rbs_map/stdlib_map.rb +71 -43
- data/lib/solargraph/rbs_map.rb +207 -163
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +555 -352
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +377 -337
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +30 -26
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +37 -34
- data/lib/solargraph/source/chain/if.rb +30 -28
- data/lib/solargraph/source/chain/instance_variable.rb +36 -13
- data/lib/solargraph/source/chain/link.rb +99 -109
- data/lib/solargraph/source/chain/literal.rb +51 -48
- data/lib/solargraph/source/chain/or.rb +29 -23
- 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 +304 -291
- data/lib/solargraph/source/change.rb +89 -82
- data/lib/solargraph/source/cursor.rb +172 -166
- data/lib/solargraph/source/encoding_fixes.rb +22 -23
- data/lib/solargraph/source/source_chainer.rb +218 -194
- data/lib/solargraph/source/updater.rb +59 -55
- data/lib/solargraph/source.rb +522 -498
- data/lib/solargraph/source_map/clip.rb +245 -226
- data/lib/solargraph/source_map/data.rb +37 -34
- data/lib/solargraph/source_map/mapper.rb +286 -259
- data/lib/solargraph/source_map.rb +224 -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 +888 -814
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/workspace/config.rb +258 -255
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +98 -97
- data/lib/solargraph/workspace.rb +242 -220
- data/lib/solargraph/yard_map/helpers.rb +49 -44
- data/lib/solargraph/yard_map/mapper/to_method.rb +136 -130
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +32 -31
- data/lib/solargraph/yard_map/mapper.rb +84 -79
- data/lib/solargraph/yard_map.rb +17 -18
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +90 -87
- data/lib/solargraph.rb +128 -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 +37 -35
- metadata +52 -51
- 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
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
## 0.59.0 - May 13, 2026
|
|
2
|
+
- Ensure pathname is required for rbs in shell caching processes (#1183)
|
|
3
|
+
- Pre-release branch 2026-01-12 (#1152)
|
|
4
|
+
- 2026-01-27 dev branch (#1165)
|
|
5
|
+
- Position linting (#1179)
|
|
6
|
+
- Revert YARD and RBS pin caching (#1180)
|
|
7
|
+
- Ensure pathname is required for rbs in shell caching processes (#1183)
|
|
8
|
+
- Limit default include glob to current directory (#1184)
|
|
9
|
+
- Require Ruby >= 3.1.0
|
|
10
|
+
- Require RBS >= 3.10.0
|
|
11
|
+
- Stub combine_same_type_arity_signatures (#1186)
|
|
12
|
+
|
|
13
|
+
## 0.58.3 - March 9, 2026
|
|
14
|
+
- Ignore workspace dependencies in cache processes (#1174)
|
|
15
|
+
|
|
16
|
+
## 0.58.2 - January 19, 2026
|
|
17
|
+
- Avoid rbs pollution (#1146)
|
|
18
|
+
- Fix 'solargraph pin --references ClassName' private method call (#1150)
|
|
19
|
+
- Improve memory efficiency of Position class (#1054)
|
|
20
|
+
- Raise InvalidOffsetError for offsets > text (#1155)
|
|
21
|
+
|
|
22
|
+
## 0.58.1 - January 2, 2026
|
|
23
|
+
- Normalize line endings to LF (#1142)
|
|
24
|
+
|
|
1
25
|
## 0.58.0 - January 1, 2026
|
|
2
26
|
- Faster constant resolution (#1083)
|
|
3
27
|
- [regression] Handle RBS static method aliases (#1094)
|
data/Gemfile
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
source 'https://rubygems.org'
|
|
2
4
|
|
|
3
5
|
gemspec name: 'solargraph'
|
|
4
6
|
|
|
5
7
|
# Local gemfile for development tools, etc.
|
|
6
|
-
local_gemfile = File.expand_path(
|
|
8
|
+
local_gemfile = File.expand_path('.Gemfile', __dir__)
|
|
7
9
|
instance_eval File.read local_gemfile if File.exist? local_gemfile
|
data/README.md
CHANGED
|
@@ -51,6 +51,8 @@ Plug-ins and extensions are available for the following editors:
|
|
|
51
51
|
|
|
52
52
|
Solargraph's behavior can be controlled via optional [configuration](https://solargraph.org/guides/configuration) files. The highest priority file is a `.solargraph.yml` file at the root of the project. If not present, any global configuration at `~/.config/solargraph/config.yml` will apply. The path to the global configuration can be overridden with the `SOLARGRAPH_GLOBAL_CONFIG` environment variable.
|
|
53
53
|
|
|
54
|
+
Use `bundle exec solargraph config` to create a configuration file.
|
|
55
|
+
|
|
54
56
|
### Plugins
|
|
55
57
|
|
|
56
58
|
Solargraph supports [plugins](https://solargraph.org/guides/plugins) that implement their own Solargraph features, such as diagnostics reporters and conventions to provide LSP features and type-checking, e.g. for frameworks which use metaprogramming and/or DSLs.
|
|
@@ -132,9 +134,7 @@ See [https://solargraph.org/guides](https://solargraph.org/guides) for more tips
|
|
|
132
134
|
|
|
133
135
|
### Development
|
|
134
136
|
|
|
135
|
-
To see more logging when typechecking or running specs, set the
|
|
136
|
-
`SOLARGRAPH_LOG` environment variable to `debug` or `info`. `warn` is
|
|
137
|
-
the default value.
|
|
137
|
+
To see more logging when typechecking or running specs, set the `SOLARGRAPH_LOG` environment variable to `debug` or `info`. `warn` is the default value.
|
|
138
138
|
|
|
139
139
|
Code contributions are always appreciated. Feel free to fork the repo and submit pull requests. Check for open issues that could use help. Start new issues to discuss changes that have a major impact on the code or require large time commitments.
|
|
140
140
|
|
data/Rakefile
CHANGED
|
@@ -1,42 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rake'
|
|
2
4
|
require 'bundler/gem_tasks'
|
|
3
5
|
require 'fileutils'
|
|
4
6
|
require 'open3'
|
|
5
7
|
|
|
6
|
-
desc
|
|
8
|
+
desc 'Open a Pry session preloaded with this library'
|
|
7
9
|
task :console do
|
|
8
|
-
sh
|
|
10
|
+
sh 'pry -I lib -r solargraph.rb'
|
|
9
11
|
end
|
|
10
12
|
|
|
11
|
-
desc
|
|
13
|
+
desc 'Run the type checker'
|
|
12
14
|
task typecheck: [:typecheck_strong]
|
|
13
15
|
|
|
14
|
-
desc
|
|
16
|
+
desc 'Run the type checker at typed level - return code issues provable without annotations being correct'
|
|
15
17
|
task :typecheck_typed do
|
|
16
|
-
sh
|
|
18
|
+
sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level typed'
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
desc
|
|
21
|
+
desc 'Run the type checker at strict level - report issues using type annotations'
|
|
20
22
|
task :typecheck_strict do
|
|
21
|
-
sh
|
|
23
|
+
sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strict'
|
|
22
24
|
end
|
|
23
25
|
|
|
24
|
-
desc
|
|
26
|
+
desc 'Run the type checker at strong level - enforce that type annotations exist'
|
|
25
27
|
task :typecheck_strong do
|
|
26
|
-
sh
|
|
28
|
+
sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strong'
|
|
27
29
|
end
|
|
28
30
|
|
|
29
|
-
desc
|
|
31
|
+
desc 'Run the type checker at alpha level - run high-false-alarm checks'
|
|
30
32
|
task :typecheck_alpha do
|
|
31
|
-
sh
|
|
33
|
+
sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level alpha'
|
|
32
34
|
end
|
|
33
35
|
|
|
34
|
-
desc
|
|
36
|
+
desc 'Run RSpec tests, starting with the ones that failed last time'
|
|
35
37
|
task spec: %i[spec_failed undercover_no_fail full_spec] do
|
|
36
38
|
undercover
|
|
37
39
|
end
|
|
38
40
|
|
|
39
|
-
desc
|
|
41
|
+
desc 'Run all RSpec tests'
|
|
40
42
|
task :full_spec do
|
|
41
43
|
warn 'starting spec'
|
|
42
44
|
sh 'TEST_COVERAGE_COMMAND_NAME=full-new bundle exec rspec' # --profile'
|
|
@@ -63,19 +65,20 @@ def undercover
|
|
|
63
65
|
status
|
|
64
66
|
rescue StandardError => e
|
|
65
67
|
warn "hit error: #{e.message}"
|
|
68
|
+
# @sg-ignore Need to add nil check here
|
|
66
69
|
warn "Backtrace:\n#{e.backtrace.join("\n")}"
|
|
67
70
|
warn "output: #{output}"
|
|
68
|
-
puts
|
|
71
|
+
puts 'Flushing'
|
|
69
72
|
$stdout.flush
|
|
70
73
|
raise
|
|
71
74
|
end
|
|
72
75
|
|
|
73
|
-
desc
|
|
76
|
+
desc 'Check PR coverage'
|
|
74
77
|
task :undercover do
|
|
75
|
-
raise
|
|
78
|
+
raise 'Undercover failed' unless undercover.success?
|
|
76
79
|
end
|
|
77
80
|
|
|
78
|
-
desc
|
|
81
|
+
desc 'Branch-focused fast-feedback quality/spec/coverage checks'
|
|
79
82
|
task test: %i[overcommit spec typecheck] do
|
|
80
83
|
# do these in order
|
|
81
84
|
Rake::Task['typecheck_strict'].invoke
|
|
@@ -83,18 +86,18 @@ task test: %i[overcommit spec typecheck] do
|
|
|
83
86
|
Rake::Task['typecheck_alpha'].invoke
|
|
84
87
|
end
|
|
85
88
|
|
|
86
|
-
desc
|
|
89
|
+
desc 'Re-run failed specs. Add --fail-fast in your .rspec-local file if desired.'
|
|
87
90
|
task :spec_failed do
|
|
88
91
|
# allow user to check out any persistent failures while looking for
|
|
89
92
|
# more in the whole test suite
|
|
90
93
|
sh 'TEST_COVERAGE_COMMAND_NAME=next-failure bundle exec rspec --only-failures || true'
|
|
91
94
|
end
|
|
92
95
|
|
|
93
|
-
desc
|
|
96
|
+
desc 'Run undercover and show output without failing the task if it fails'
|
|
94
97
|
task :undercover_no_fail do
|
|
95
98
|
undercover
|
|
96
99
|
rescue StandardError
|
|
97
|
-
puts
|
|
100
|
+
puts 'Undercover failed, but continuing with other tasks.'
|
|
98
101
|
end
|
|
99
102
|
|
|
100
103
|
# @return [void]
|
|
@@ -103,7 +106,7 @@ def simplecov_collate
|
|
|
103
106
|
require 'simplecov-lcov'
|
|
104
107
|
require 'undercover/simplecov_formatter'
|
|
105
108
|
|
|
106
|
-
SimpleCov.collate(Dir[
|
|
109
|
+
SimpleCov.collate(Dir['coverage/{next-failure,full,ad-hoc}/.resultset.json']) do
|
|
107
110
|
cname = 'combined'
|
|
108
111
|
command_name cname
|
|
109
112
|
new_dir = File.join('coverage', cname)
|
|
@@ -118,7 +121,7 @@ def simplecov_collate
|
|
|
118
121
|
])
|
|
119
122
|
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
|
|
120
123
|
end
|
|
121
|
-
puts
|
|
124
|
+
puts 'Simplecov collated results into coverage/combined/.resultset.json'
|
|
122
125
|
rescue StandardError => e
|
|
123
126
|
puts "Simplecov collate failed: #{e.message}"
|
|
124
127
|
ensure
|
|
@@ -130,7 +133,7 @@ task :simplecov_collate do
|
|
|
130
133
|
simplecov_collate
|
|
131
134
|
end
|
|
132
135
|
|
|
133
|
-
desc
|
|
136
|
+
desc 'Show quality checks on this development branch so far, including any staged files'
|
|
134
137
|
task :overcommit do
|
|
135
138
|
# OVERCOMMIT_DEBUG=1 will show more detail
|
|
136
139
|
sh 'SOLARGRAPH_ASSERTS=on bundle exec overcommit --run --diff origin/master'
|
data/bin/solargraph
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# turn off warning diagnostics from Ruby
|
|
5
|
+
$VERBOSE = nil
|
|
6
|
+
|
|
7
|
+
require 'solargraph'
|
|
8
|
+
|
|
9
|
+
Solargraph::Shell.start(ARGV)
|
|
@@ -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
|