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.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.gitattributes +2 -0
  4. data/.github/workflows/linting.yml +6 -5
  5. data/.github/workflows/plugins.yml +48 -35
  6. data/.github/workflows/rspec.yml +15 -28
  7. data/.github/workflows/typecheck.yml +3 -2
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +38 -6
  10. data/.rubocop_todo.yml +53 -966
  11. data/CHANGELOG.md +24 -0
  12. data/Gemfile +3 -1
  13. data/README.md +3 -3
  14. data/Rakefile +26 -23
  15. data/bin/solargraph +9 -8
  16. data/lib/solargraph/api_map/cache.rb +110 -110
  17. data/lib/solargraph/api_map/constants.rb +288 -279
  18. data/lib/solargraph/api_map/index.rb +204 -193
  19. data/lib/solargraph/api_map/source_to_yard.rb +110 -97
  20. data/lib/solargraph/api_map/store.rb +395 -384
  21. data/lib/solargraph/api_map.rb +1029 -945
  22. data/lib/solargraph/bench.rb +44 -45
  23. data/lib/solargraph/complex_type/conformance.rb +176 -0
  24. data/lib/solargraph/complex_type/type_methods.rb +240 -228
  25. data/lib/solargraph/complex_type/unique_type.rb +641 -482
  26. data/lib/solargraph/complex_type.rb +557 -444
  27. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  28. data/lib/solargraph/convention/data_definition/data_definition_node.rb +93 -91
  29. data/lib/solargraph/convention/data_definition.rb +108 -105
  30. data/lib/solargraph/convention/gemfile.rb +15 -15
  31. data/lib/solargraph/convention/gemspec.rb +23 -23
  32. data/lib/solargraph/convention/rakefile.rb +17 -17
  33. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +62 -61
  34. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +103 -102
  35. data/lib/solargraph/convention/struct_definition.rb +168 -164
  36. data/lib/solargraph/convention.rb +78 -78
  37. data/lib/solargraph/converters/dd.rb +19 -17
  38. data/lib/solargraph/converters/dl.rb +17 -15
  39. data/lib/solargraph/converters/dt.rb +17 -15
  40. data/lib/solargraph/converters/misc.rb +3 -1
  41. data/lib/solargraph/diagnostics/require_not_found.rb +54 -53
  42. data/lib/solargraph/diagnostics/rubocop.rb +119 -118
  43. data/lib/solargraph/diagnostics/rubocop_helpers.rb +70 -68
  44. data/lib/solargraph/diagnostics/type_check.rb +56 -55
  45. data/lib/solargraph/diagnostics/update_errors.rb +37 -41
  46. data/lib/solargraph/doc_map.rb +438 -439
  47. data/lib/solargraph/equality.rb +34 -34
  48. data/lib/solargraph/gem_pins.rb +98 -98
  49. data/lib/solargraph/language_server/error_codes.rb +20 -20
  50. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  51. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  52. data/lib/solargraph/language_server/host/message_worker.rb +113 -112
  53. data/lib/solargraph/language_server/host/sources.rb +100 -99
  54. data/lib/solargraph/language_server/host.rb +886 -878
  55. data/lib/solargraph/language_server/message/base.rb +97 -97
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
  57. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
  58. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +108 -114
  59. data/lib/solargraph/language_server/message/extended/document.rb +24 -23
  60. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  61. data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
  62. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  63. data/lib/solargraph/language_server/message/initialize.rb +197 -191
  64. data/lib/solargraph/language_server/message/text_document/completion.rb +58 -56
  65. data/lib/solargraph/language_server/message/text_document/definition.rb +49 -40
  66. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
  67. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +36 -26
  68. data/lib/solargraph/language_server/message/text_document/formatting.rb +150 -148
  69. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  70. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
  71. data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
  72. data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
  73. data/lib/solargraph/language_server/message/text_document/signature_help.rb +25 -24
  74. data/lib/solargraph/language_server/message/text_document/type_definition.rb +33 -25
  75. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
  76. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
  77. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
  78. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +33 -23
  79. data/lib/solargraph/language_server/message.rb +94 -94
  80. data/lib/solargraph/language_server/request.rb +29 -27
  81. data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
  82. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  83. data/lib/solargraph/library.rb +702 -683
  84. data/lib/solargraph/location.rb +85 -82
  85. data/lib/solargraph/logging.rb +55 -37
  86. data/lib/solargraph/page.rb +92 -92
  87. data/lib/solargraph/parser/comment_ripper.rb +84 -69
  88. data/lib/solargraph/parser/flow_sensitive_typing.rb +471 -255
  89. data/lib/solargraph/parser/node_processor/base.rb +122 -92
  90. data/lib/solargraph/parser/node_processor.rb +63 -62
  91. data/lib/solargraph/parser/parser_gem/class_methods.rb +165 -149
  92. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  93. data/lib/solargraph/parser/parser_gem/node_chainer.rb +191 -166
  94. data/lib/solargraph/parser/parser_gem/node_methods.rb +507 -486
  95. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  96. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +61 -59
  97. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +24 -15
  98. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +45 -46
  99. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +60 -53
  100. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
  101. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +53 -23
  102. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +42 -40
  103. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +30 -29
  104. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +61 -59
  105. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  106. data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
  107. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  108. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +39 -38
  109. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +51 -52
  110. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +302 -291
  111. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  112. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
  113. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +33 -29
  114. data/lib/solargraph/parser/parser_gem/node_processors.rb +74 -70
  115. data/lib/solargraph/parser/parser_gem.rb +14 -12
  116. data/lib/solargraph/parser/region.rb +75 -69
  117. data/lib/solargraph/parser/snippet.rb +19 -17
  118. data/lib/solargraph/parser.rb +25 -23
  119. data/lib/solargraph/pin/base.rb +773 -729
  120. data/lib/solargraph/pin/base_variable.rb +375 -126
  121. data/lib/solargraph/pin/block.rb +127 -104
  122. data/lib/solargraph/pin/breakable.rb +15 -9
  123. data/lib/solargraph/pin/callable.rb +275 -231
  124. data/lib/solargraph/pin/closure.rb +69 -72
  125. data/lib/solargraph/pin/common.rb +97 -79
  126. data/lib/solargraph/pin/compound_statement.rb +55 -0
  127. data/lib/solargraph/pin/constant.rb +43 -45
  128. data/lib/solargraph/pin/conversions.rb +129 -123
  129. data/lib/solargraph/pin/delegated_method.rb +131 -120
  130. data/lib/solargraph/pin/documenting.rb +116 -114
  131. data/lib/solargraph/pin/instance_variable.rb +38 -34
  132. data/lib/solargraph/pin/keyword.rb +16 -20
  133. data/lib/solargraph/pin/local_variable.rb +31 -75
  134. data/lib/solargraph/pin/method.rb +724 -672
  135. data/lib/solargraph/pin/method_alias.rb +42 -34
  136. data/lib/solargraph/pin/namespace.rb +122 -115
  137. data/lib/solargraph/pin/parameter.rb +339 -275
  138. data/lib/solargraph/pin/proxy_type.rb +42 -39
  139. data/lib/solargraph/pin/reference/override.rb +47 -47
  140. data/lib/solargraph/pin/reference/superclass.rb +17 -15
  141. data/lib/solargraph/pin/reference/type_alias.rb +16 -0
  142. data/lib/solargraph/pin/reference.rb +59 -39
  143. data/lib/solargraph/pin/search.rb +62 -61
  144. data/lib/solargraph/pin/signature.rb +64 -61
  145. data/lib/solargraph/pin/symbol.rb +54 -53
  146. data/lib/solargraph/pin/until.rb +16 -18
  147. data/lib/solargraph/pin/while.rb +16 -18
  148. data/lib/solargraph/pin.rb +46 -44
  149. data/lib/solargraph/pin_cache.rb +248 -245
  150. data/lib/solargraph/position.rb +139 -119
  151. data/lib/solargraph/range.rb +113 -112
  152. data/lib/solargraph/rbs_map/conversions.rb +952 -823
  153. data/lib/solargraph/rbs_map/core_fills.rb +91 -84
  154. data/lib/solargraph/rbs_map/core_map.rb +65 -58
  155. data/lib/solargraph/rbs_map/stdlib_map.rb +71 -43
  156. data/lib/solargraph/rbs_map.rb +207 -163
  157. data/lib/solargraph/server_methods.rb +16 -16
  158. data/lib/solargraph/shell.rb +555 -352
  159. data/lib/solargraph/source/chain/array.rb +39 -37
  160. data/lib/solargraph/source/chain/call.rb +377 -337
  161. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  162. data/lib/solargraph/source/chain/constant.rb +30 -26
  163. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  164. data/lib/solargraph/source/chain/hash.rb +37 -34
  165. data/lib/solargraph/source/chain/if.rb +30 -28
  166. data/lib/solargraph/source/chain/instance_variable.rb +36 -13
  167. data/lib/solargraph/source/chain/link.rb +99 -109
  168. data/lib/solargraph/source/chain/literal.rb +51 -48
  169. data/lib/solargraph/source/chain/or.rb +29 -23
  170. data/lib/solargraph/source/chain/q_call.rb +13 -11
  171. data/lib/solargraph/source/chain/variable.rb +15 -13
  172. data/lib/solargraph/source/chain/z_super.rb +28 -30
  173. data/lib/solargraph/source/chain.rb +304 -291
  174. data/lib/solargraph/source/change.rb +89 -82
  175. data/lib/solargraph/source/cursor.rb +172 -166
  176. data/lib/solargraph/source/encoding_fixes.rb +22 -23
  177. data/lib/solargraph/source/source_chainer.rb +218 -194
  178. data/lib/solargraph/source/updater.rb +59 -55
  179. data/lib/solargraph/source.rb +522 -498
  180. data/lib/solargraph/source_map/clip.rb +245 -226
  181. data/lib/solargraph/source_map/data.rb +37 -34
  182. data/lib/solargraph/source_map/mapper.rb +286 -259
  183. data/lib/solargraph/source_map.rb +224 -212
  184. data/lib/solargraph/type_checker/problem.rb +34 -32
  185. data/lib/solargraph/type_checker/rules.rb +157 -84
  186. data/lib/solargraph/type_checker.rb +888 -814
  187. data/lib/solargraph/version.rb +5 -5
  188. data/lib/solargraph/workspace/config.rb +258 -255
  189. data/lib/solargraph/workspace/gemspecs.rb +367 -0
  190. data/lib/solargraph/workspace/require_paths.rb +98 -97
  191. data/lib/solargraph/workspace.rb +242 -220
  192. data/lib/solargraph/yard_map/helpers.rb +49 -44
  193. data/lib/solargraph/yard_map/mapper/to_method.rb +136 -130
  194. data/lib/solargraph/yard_map/mapper/to_namespace.rb +32 -31
  195. data/lib/solargraph/yard_map/mapper.rb +84 -79
  196. data/lib/solargraph/yard_map.rb +17 -18
  197. data/lib/solargraph/yard_tags.rb +20 -20
  198. data/lib/solargraph/yardoc.rb +90 -87
  199. data/lib/solargraph.rb +128 -105
  200. data/rbs/fills/rubygems/0/dependency.rbs +193 -0
  201. data/rbs/fills/tuple/tuple.rbs +28 -0
  202. data/rbs/shims/ast/0/node.rbs +5 -0
  203. data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
  204. data/rbs_collection.yaml +1 -1
  205. data/solargraph.gemspec +37 -35
  206. metadata +52 -51
  207. data/lib/solargraph/type_checker/checks.rb +0 -124
  208. data/lib/solargraph/type_checker/param_def.rb +0 -37
  209. data/lib/solargraph/yard_map/to_method.rb +0 -89
  210. data/sig/shims/ast/0/node.rbs +0 -5
  211. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  212. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  213. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  214. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  215. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  216. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  217. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  218. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  219. /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(".Gemfile", __dir__)
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 "Open a Pry session preloaded with this library"
8
+ desc 'Open a Pry session preloaded with this library'
7
9
  task :console do
8
- sh "pry -I lib -r solargraph.rb"
10
+ sh 'pry -I lib -r solargraph.rb'
9
11
  end
10
12
 
11
- desc "Run the type checker"
13
+ desc 'Run the type checker'
12
14
  task typecheck: [:typecheck_strong]
13
15
 
14
- desc "Run the type checker at typed level - return code issues provable without annotations being correct"
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 "SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level typed"
18
+ sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level typed'
17
19
  end
18
20
 
19
- desc "Run the type checker at strict level - report issues using type annotations"
21
+ desc 'Run the type checker at strict level - report issues using type annotations'
20
22
  task :typecheck_strict do
21
- sh "SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strict"
23
+ sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strict'
22
24
  end
23
25
 
24
- desc "Run the type checker at strong level - enforce that type annotations exist"
26
+ desc 'Run the type checker at strong level - enforce that type annotations exist'
25
27
  task :typecheck_strong do
26
- sh "SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strong"
28
+ sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level strong'
27
29
  end
28
30
 
29
- desc "Run the type checker at alpha level - run high-false-alarm checks"
31
+ desc 'Run the type checker at alpha level - run high-false-alarm checks'
30
32
  task :typecheck_alpha do
31
- sh "SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level alpha"
33
+ sh 'SOLARGRAPH_ASSERTS=on bundle exec solargraph typecheck --level alpha'
32
34
  end
33
35
 
34
- desc "Run RSpec tests, starting with the ones that failed last time"
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 "Run all RSpec tests"
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 "Flushing"
71
+ puts 'Flushing'
69
72
  $stdout.flush
70
73
  raise
71
74
  end
72
75
 
73
- desc "Check PR coverage"
76
+ desc 'Check PR coverage'
74
77
  task :undercover do
75
- raise "Undercover failed" unless undercover.success?
78
+ raise 'Undercover failed' unless undercover.success?
76
79
  end
77
80
 
78
- desc "Branch-focused fast-feedback quality/spec/coverage checks"
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 "Re-run failed specs. Add --fail-fast in your .rspec-local file if desired."
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 "Run undercover and show output without failing the task if it fails"
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 "Undercover failed, but continuing with other tasks."
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["coverage/{next-failure,full,ad-hoc}/.resultset.json"]) do
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 "Simplecov collated results into coverage/combined/.resultset.json"
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 "Show quality checks on this development branch so far, including any staged files"
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
- # turn off warning diagnostics from Ruby
4
- $VERBOSE=nil
5
-
6
- require 'solargraph'
7
-
8
- Solargraph::Shell.start(ARGV)
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