solargraph 0.59.0.dev.1 → 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/.github/workflows/plugins.yml +4 -1
- data/.github/workflows/rspec.yml +3 -14
- data/.gitignore +1 -0
- data/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +37 -931
- data/CHANGELOG.md +7 -1
- data/Gemfile +3 -1
- data/Rakefile +25 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/index.rb +5 -11
- data/lib/solargraph/api_map/source_to_yard.rb +9 -8
- data/lib/solargraph/api_map/store.rb +22 -20
- data/lib/solargraph/api_map.rb +50 -37
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/type_methods.rb +12 -15
- data/lib/solargraph/complex_type/unique_type.rb +54 -43
- data/lib/solargraph/complex_type.rb +69 -61
- 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 +9 -10
- data/lib/solargraph/equality.rb +3 -3
- data/lib/solargraph/gem_pins.rb +7 -5
- 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 +28 -33
- data/lib/solargraph/location.rb +10 -12
- data/lib/solargraph/logging.rb +4 -4
- 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 -42
- 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 -4
- 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 -1
- 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 +78 -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 +71 -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.rb +17 -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 +16 -19
- data/lib/solargraph/position.rb +35 -17
- data/lib/solargraph/range.rb +10 -9
- data/lib/solargraph/rbs_map/conversions.rb +312 -206
- 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 +3 -12
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +63 -53
- 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 +24 -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 +52 -46
- data/lib/solargraph/source_map.rb +8 -4
- data/lib/solargraph/type_checker/rules.rb +8 -8
- data/lib/solargraph/type_checker.rb +95 -101
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +10 -9
- data/lib/solargraph/workspace/gemspecs.rb +1 -1
- data/lib/solargraph/workspace.rb +21 -44
- 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_tags.rb +20 -20
- data/lib/solargraph.rb +5 -5
- data/solargraph.gemspec +35 -34
- metadata +28 -28
data/lib/solargraph/workspace.rb
CHANGED
|
@@ -80,14 +80,6 @@ module Solargraph
|
|
|
80
80
|
@pin_cache ||= fresh_pincache
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
# @param stdlib_name [String]
|
|
84
|
-
#
|
|
85
|
-
# @return [Array<String>]
|
|
86
|
-
def stdlib_dependencies stdlib_name
|
|
87
|
-
deps = RbsMap::StdlibMap.stdlib_dependencies(stdlib_name, nil) || []
|
|
88
|
-
deps.map { |dep| dep['name'] }.compact
|
|
89
|
-
end
|
|
90
|
-
|
|
91
83
|
# @return [Environ]
|
|
92
84
|
def global_environ
|
|
93
85
|
# empty docmap, since the result needs to work in any possible
|
|
@@ -127,7 +119,7 @@ module Solargraph
|
|
|
127
119
|
|
|
128
120
|
# @param level [Symbol]
|
|
129
121
|
# @return [TypeChecker::Rules]
|
|
130
|
-
def rules
|
|
122
|
+
def rules level
|
|
131
123
|
@rules ||= TypeChecker::Rules.new(level, config.type_checker_rules)
|
|
132
124
|
end
|
|
133
125
|
|
|
@@ -147,7 +139,7 @@ module Solargraph
|
|
|
147
139
|
includes_any = false
|
|
148
140
|
sources.each do |source|
|
|
149
141
|
# @sg-ignore Need to add nil check here
|
|
150
|
-
next unless directory ==
|
|
142
|
+
next unless directory == '*' || config.calculated.include?(source.filename)
|
|
151
143
|
|
|
152
144
|
# @sg-ignore Need to add nil check here
|
|
153
145
|
source_hash[source.filename] = source
|
|
@@ -199,7 +191,7 @@ module Solargraph
|
|
|
199
191
|
def would_require? path
|
|
200
192
|
require_paths.each do |rp|
|
|
201
193
|
full = File.join rp, path
|
|
202
|
-
return true if File.file?(full) || File.file?(full <<
|
|
194
|
+
return true if File.file?(full) || File.file?(full << '.rb')
|
|
203
195
|
end
|
|
204
196
|
false
|
|
205
197
|
end
|
|
@@ -223,17 +215,15 @@ module Solargraph
|
|
|
223
215
|
|
|
224
216
|
# @return [String, nil]
|
|
225
217
|
def rbs_collection_path
|
|
226
|
-
@
|
|
218
|
+
@rbs_collection_path ||= read_rbs_collection_path
|
|
227
219
|
end
|
|
228
220
|
|
|
229
221
|
# @return [String, nil]
|
|
230
222
|
def rbs_collection_config_path
|
|
231
223
|
@rbs_collection_config_path ||=
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
yaml_file if File.file?(yaml_file)
|
|
236
|
-
end
|
|
224
|
+
unless directory.empty? || directory == '*'
|
|
225
|
+
yaml_file = File.join(directory, 'rbs_collection.yaml')
|
|
226
|
+
yaml_file if File.file?(yaml_file)
|
|
237
227
|
end
|
|
238
228
|
end
|
|
239
229
|
|
|
@@ -251,14 +241,6 @@ module Solargraph
|
|
|
251
241
|
gemspecs.all_gemspecs_from_bundle
|
|
252
242
|
end
|
|
253
243
|
|
|
254
|
-
# @todo make this actually work against bundle instead of pulling
|
|
255
|
-
# all installed gemspecs -
|
|
256
|
-
# https://github.com/apiology/solargraph/pull/10
|
|
257
|
-
# @return [Array<Gem::Specification>]
|
|
258
|
-
def all_gemspecs_from_bundle
|
|
259
|
-
Gem::Specification.to_a
|
|
260
|
-
end
|
|
261
|
-
|
|
262
244
|
# @param out [StringIO, IO, nil] output stream for logging
|
|
263
245
|
# @param rebuild [Boolean] whether to rebuild the pins even if they are cached
|
|
264
246
|
# @return [void]
|
|
@@ -278,7 +260,7 @@ module Solargraph
|
|
|
278
260
|
# which are likely to be newer and have more pins
|
|
279
261
|
pin_cache.cache_all_stdlibs(out: out, rebuild: rebuild)
|
|
280
262
|
|
|
281
|
-
out&.puts
|
|
263
|
+
out&.puts 'Documentation cached for core, standard library and gems.'
|
|
282
264
|
end
|
|
283
265
|
|
|
284
266
|
# Synchronize the workspace from the provided updater.
|
|
@@ -323,30 +305,25 @@ module Solargraph
|
|
|
323
305
|
# @return [void]
|
|
324
306
|
def load_sources
|
|
325
307
|
source_hash.clear
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
Solargraph.logger.warn("Error loading #{filename}: [#{e.class}] #{e.message}")
|
|
337
|
-
end
|
|
338
|
-
end
|
|
308
|
+
return if directory.empty? || directory == '*'
|
|
309
|
+
size = config.calculated.length
|
|
310
|
+
if config.max_files.positive? && (size > config.max_files)
|
|
311
|
+
raise WorkspaceTooLargeError,
|
|
312
|
+
"The workspace is too large to index (#{size} files, #{config.max_files} max)"
|
|
313
|
+
end
|
|
314
|
+
config.calculated.each do |filename|
|
|
315
|
+
source_hash[filename] = Solargraph::Source.load(filename)
|
|
316
|
+
rescue Errno::ENOENT => e
|
|
317
|
+
Solargraph.logger.warn("Error loading #{filename}: [#{e.class}] #{e.message}")
|
|
339
318
|
end
|
|
340
319
|
end
|
|
341
320
|
|
|
342
321
|
# @return [void]
|
|
343
322
|
def require_plugins
|
|
344
323
|
config.plugins.each do |plugin|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
Solargraph.logger.warn "Failed to load plugin '#{plugin}'"
|
|
349
|
-
end
|
|
324
|
+
require plugin
|
|
325
|
+
rescue LoadError
|
|
326
|
+
Solargraph.logger.warn "Failed to load plugin '#{plugin}'"
|
|
350
327
|
end
|
|
351
328
|
end
|
|
352
329
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Solargraph
|
|
2
4
|
class YardMap
|
|
3
5
|
module Helpers
|
|
@@ -22,10 +24,12 @@ module Solargraph
|
|
|
22
24
|
# @param code_object [YARD::CodeObjects::Base]
|
|
23
25
|
# @param spec [Gem::Specification, nil]
|
|
24
26
|
# @return [Solargraph::Pin::Namespace]
|
|
25
|
-
def create_closure_namespace_for
|
|
27
|
+
def create_closure_namespace_for code_object, spec
|
|
26
28
|
code_object_for_location = code_object
|
|
27
29
|
# code_object.namespace is sometimes a YARD proxy object pointing to a method path ("Object#new")
|
|
28
|
-
|
|
30
|
+
if code_object.namespace.is_a?(YARD::CodeObjects::NamespaceObject)
|
|
31
|
+
code_object_for_location = code_object.namespace
|
|
32
|
+
end
|
|
29
33
|
namespace_location = object_location(code_object_for_location, spec)
|
|
30
34
|
ns_name = code_object.namespace.to_s
|
|
31
35
|
if ns_name.empty?
|
|
@@ -9,8 +9,8 @@ module Solargraph
|
|
|
9
9
|
# @type [Hash{Array<String, Symbol, String> => Symbol}]
|
|
10
10
|
VISIBILITY_OVERRIDE = {
|
|
11
11
|
# YARD pays attention to 'private' statements prior to class methods but shouldn't
|
|
12
|
-
[
|
|
13
|
-
}
|
|
12
|
+
['Rails::Engine', :class, 'find_root_with_flag'] => :public
|
|
13
|
+
}.freeze
|
|
14
14
|
|
|
15
15
|
# @param code_object [YARD::CodeObjects::MethodObject]
|
|
16
16
|
# @param name [String, nil]
|
|
@@ -32,7 +32,9 @@ module Solargraph
|
|
|
32
32
|
# @sg-ignore Need to add nil check here
|
|
33
33
|
final_visibility ||= VISIBILITY_OVERRIDE[[closure.path, final_scope]]
|
|
34
34
|
# @sg-ignore Need to add nil check here
|
|
35
|
-
|
|
35
|
+
if closure.path == 'Kernel' && Kernel.private_instance_methods(false).include?(name.to_sym)
|
|
36
|
+
final_visibility ||= :private
|
|
37
|
+
end
|
|
36
38
|
final_visibility ||= visibility
|
|
37
39
|
final_visibility ||= :private if code_object.module_function? && final_scope == :instance
|
|
38
40
|
final_visibility ||= :public if code_object.module_function? && final_scope == :class
|
|
@@ -50,7 +52,7 @@ module Solargraph
|
|
|
50
52
|
explicit: code_object.is_explicit?,
|
|
51
53
|
return_type: return_type,
|
|
52
54
|
parameters: [],
|
|
53
|
-
source: :yardoc
|
|
55
|
+
source: :yardoc
|
|
54
56
|
)
|
|
55
57
|
else
|
|
56
58
|
# @sg-ignore Need to add nil check here
|
|
@@ -66,7 +68,7 @@ module Solargraph
|
|
|
66
68
|
return_type: return_type,
|
|
67
69
|
attribute: code_object.is_attribute?,
|
|
68
70
|
parameters: [],
|
|
69
|
-
source: :yardoc
|
|
71
|
+
source: :yardoc
|
|
70
72
|
)
|
|
71
73
|
pin.parameters.concat get_parameters(code_object, location, comments, pin)
|
|
72
74
|
pin.parameters.freeze
|
|
@@ -99,7 +101,7 @@ module Solargraph
|
|
|
99
101
|
presence: nil,
|
|
100
102
|
decl: arg_type(a),
|
|
101
103
|
asgn_code: a[1],
|
|
102
|
-
source: :yardoc
|
|
104
|
+
source: :yardoc
|
|
103
105
|
)
|
|
104
106
|
end
|
|
105
107
|
end
|
|
@@ -35,28 +35,27 @@ module Solargraph
|
|
|
35
35
|
# @return [Array<Pin::Base>]
|
|
36
36
|
def generate_pins code_object
|
|
37
37
|
result = []
|
|
38
|
-
|
|
38
|
+
case code_object
|
|
39
|
+
when YARD::CodeObjects::NamespaceObject
|
|
39
40
|
nspin = ToNamespace.make(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
|
|
40
41
|
@namespace_pins[code_object.path] = nspin
|
|
41
42
|
result.push nspin
|
|
42
|
-
|
|
43
|
-
if code_object.is_a?(YARD::CodeObjects::ClassObject) and !code_object.superclass.nil?
|
|
43
|
+
if code_object.is_a?(YARD::CodeObjects::ClassObject) && !code_object.superclass.nil?
|
|
44
44
|
# This method of superclass detection is a bit of a hack. If
|
|
45
45
|
# the superclass is a Proxy, it is assumed to be undefined in its
|
|
46
46
|
# yardoc and converted to a fully qualified namespace.
|
|
47
|
-
# @sg-ignore flow sensitive typing needs to narrow down type with an if is_a? check
|
|
48
47
|
superclass = if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
code_object.superclass.to_s
|
|
54
|
-
end
|
|
48
|
+
"::#{code_object.superclass}"
|
|
49
|
+
else
|
|
50
|
+
code_object.superclass.to_s
|
|
51
|
+
end
|
|
55
52
|
result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin, source: :yard_map)
|
|
56
53
|
end
|
|
54
|
+
# @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
|
|
57
55
|
code_object.class_mixins.each do |m|
|
|
58
56
|
result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path, source: :yard_map)
|
|
59
57
|
end
|
|
58
|
+
# @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
|
|
60
59
|
code_object.instance_mixins.each do |m|
|
|
61
60
|
result.push Solargraph::Pin::Reference::Include.new(
|
|
62
61
|
closure: nspin, # @todo Fix this
|
|
@@ -64,8 +63,9 @@ module Solargraph
|
|
|
64
63
|
source: :yard_map
|
|
65
64
|
)
|
|
66
65
|
end
|
|
67
|
-
|
|
66
|
+
when YARD::CodeObjects::MethodObject
|
|
68
67
|
closure = @namespace_pins[code_object.namespace.to_s]
|
|
68
|
+
# @sg-ignore flow sensitive typing ought to be able to handle 'when ClassName'
|
|
69
69
|
if code_object.name == :initialize && code_object.scope == :instance
|
|
70
70
|
# @todo Check the visibility of <Class>.new
|
|
71
71
|
result.push ToMethod.make(code_object, 'new', :class, :public, closure, @spec)
|
|
@@ -73,7 +73,7 @@ module Solargraph
|
|
|
73
73
|
else
|
|
74
74
|
result.push ToMethod.make(code_object, nil, nil, nil, closure, @spec)
|
|
75
75
|
end
|
|
76
|
-
|
|
76
|
+
when YARD::CodeObjects::ConstantObject
|
|
77
77
|
closure = @namespace_pins[code_object.namespace]
|
|
78
78
|
result.push ToConstant.make(code_object, closure, @spec)
|
|
79
79
|
end
|
data/lib/solargraph/yard_tags.rb
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'yard'
|
|
4
|
-
|
|
5
|
-
# Change YARD log IO to avoid sending unexpected messages to STDOUT
|
|
6
|
-
YARD::Logger.instance.io = File.new(File::NULL, 'w')
|
|
7
|
-
|
|
8
|
-
module Solargraph
|
|
9
|
-
# A placeholder for the @!domain directive. It doesn't need to do anything
|
|
10
|
-
# for yardocs. It's only used for Solargraph API maps.
|
|
11
|
-
class DomainDirective < YARD::Tags::Directive
|
|
12
|
-
def call; end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Define a @type tag for documenting variables
|
|
17
|
-
YARD::Tags::Library.define_tag(
|
|
18
|
-
|
|
19
|
-
# Define an @!override directive for overriding method tags
|
|
20
|
-
YARD::Tags::Library.define_directive(
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'yard'
|
|
4
|
+
|
|
5
|
+
# Change YARD log IO to avoid sending unexpected messages to STDOUT
|
|
6
|
+
YARD::Logger.instance.io = File.new(File::NULL, 'w')
|
|
7
|
+
|
|
8
|
+
module Solargraph
|
|
9
|
+
# A placeholder for the @!domain directive. It doesn't need to do anything
|
|
10
|
+
# for yardocs. It's only used for Solargraph API maps.
|
|
11
|
+
class DomainDirective < YARD::Tags::Directive
|
|
12
|
+
def call; end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Define a @type tag for documenting variables
|
|
17
|
+
YARD::Tags::Library.define_tag('Type', :type, :with_types_and_name)
|
|
18
|
+
|
|
19
|
+
# Define an @!override directive for overriding method tags
|
|
20
|
+
YARD::Tags::Library.define_directive('override', :with_name, Solargraph::DomainDirective)
|
data/lib/solargraph.rb
CHANGED
|
@@ -71,7 +71,7 @@ module Solargraph
|
|
|
71
71
|
# @param msg [String, nil] An optional message to log
|
|
72
72
|
# @param block [Proc] A block that returns a message to log
|
|
73
73
|
# @return [void]
|
|
74
|
-
def self.assert_or_log
|
|
74
|
+
def self.assert_or_log type, msg = nil, &block
|
|
75
75
|
if asserts_on?
|
|
76
76
|
# @type [String, nil]
|
|
77
77
|
msg ||= block.call
|
|
@@ -113,10 +113,10 @@ module Solargraph
|
|
|
113
113
|
# @return [generic<T>]
|
|
114
114
|
def self.with_clean_env &block
|
|
115
115
|
meth = if Bundler.respond_to?(:with_original_env)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
:with_original_env
|
|
117
|
+
else
|
|
118
|
+
:with_clean_env
|
|
119
|
+
end
|
|
120
120
|
Bundler.send meth, &block
|
|
121
121
|
end
|
|
122
122
|
end
|
data/solargraph.gemspec
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# @sg-ignore Should better support meaning of '&' in RBS
|
|
2
|
-
$LOAD_PATH.unshift File.dirname(__FILE__)
|
|
4
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/lib"
|
|
3
5
|
require 'solargraph/version'
|
|
4
6
|
require 'date'
|
|
5
7
|
|
|
@@ -7,12 +9,11 @@ require 'date'
|
|
|
7
9
|
Gem::Specification.new do |s|
|
|
8
10
|
s.name = 'solargraph'
|
|
9
11
|
s.version = Solargraph::VERSION
|
|
10
|
-
s.
|
|
11
|
-
s.
|
|
12
|
-
s.
|
|
13
|
-
s.authors = ["Fred Snyder"]
|
|
12
|
+
s.summary = 'A Ruby language server'
|
|
13
|
+
s.description = 'IDE tools for code completion, inline documentation, and static analysis'
|
|
14
|
+
s.authors = ['Fred Snyder']
|
|
14
15
|
s.email = 'admin@castwide.com'
|
|
15
|
-
s.files = Dir.chdir(File.expand_path(
|
|
16
|
+
s.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
16
17
|
# @sg-ignore Need backtick support
|
|
17
18
|
# @type [String]
|
|
18
19
|
all_files = `git ls-files -z`
|
|
@@ -21,36 +22,36 @@ Gem::Specification.new do |s|
|
|
|
21
22
|
s.homepage = 'https://solargraph.org'
|
|
22
23
|
s.license = 'MIT'
|
|
23
24
|
s.executables = ['solargraph']
|
|
24
|
-
s.metadata[
|
|
25
|
-
s.metadata[
|
|
26
|
-
s.metadata[
|
|
27
|
-
s.metadata[
|
|
28
|
-
s.metadata[
|
|
25
|
+
s.metadata['funding_uri'] = 'https://www.patreon.com/castwide'
|
|
26
|
+
s.metadata['bug_tracker_uri'] = 'https://github.com/castwide/solargraph/issues'
|
|
27
|
+
s.metadata['changelog_uri'] = 'https://github.com/castwide/solargraph/blob/master/CHANGELOG.md'
|
|
28
|
+
s.metadata['source_code_uri'] = 'https://github.com/castwide/solargraph'
|
|
29
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
|
29
30
|
|
|
30
31
|
s.required_ruby_version = '>= 3.0'
|
|
31
32
|
|
|
32
|
-
s.
|
|
33
|
-
s.
|
|
34
|
-
s.
|
|
35
|
-
s.
|
|
36
|
-
s.
|
|
37
|
-
s.
|
|
38
|
-
s.
|
|
39
|
-
s.
|
|
40
|
-
s.
|
|
41
|
-
s.
|
|
42
|
-
s.
|
|
43
|
-
s.
|
|
44
|
-
s.
|
|
45
|
-
s.
|
|
46
|
-
s.
|
|
47
|
-
s.
|
|
48
|
-
s.
|
|
49
|
-
s.
|
|
50
|
-
s.
|
|
51
|
-
s.
|
|
52
|
-
s.
|
|
53
|
-
s.
|
|
33
|
+
s.add_dependency 'ast', '~> 2.4.3'
|
|
34
|
+
s.add_dependency 'backport', '~> 1.2'
|
|
35
|
+
s.add_dependency 'benchmark', '~> 0.4'
|
|
36
|
+
s.add_dependency 'bundler', '>= 2.0'
|
|
37
|
+
s.add_dependency 'diff-lcs', '~> 1.4'
|
|
38
|
+
s.add_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
|
|
39
|
+
s.add_dependency 'kramdown', '~> 2.3'
|
|
40
|
+
s.add_dependency 'kramdown-parser-gfm', '~> 1.1'
|
|
41
|
+
s.add_dependency 'logger', '~> 1.6'
|
|
42
|
+
s.add_dependency 'observer', '~> 0.1'
|
|
43
|
+
s.add_dependency 'open3', '~> 0.2.1'
|
|
44
|
+
s.add_dependency 'ostruct', '~> 0.6'
|
|
45
|
+
s.add_dependency 'parser', '~> 3.0'
|
|
46
|
+
s.add_dependency 'prism', '~> 1.4'
|
|
47
|
+
s.add_dependency 'rbs', ['>= 3.6.1', '<= 4.0.0.dev.5']
|
|
48
|
+
s.add_dependency 'reverse_markdown', '~> 3.0'
|
|
49
|
+
s.add_dependency 'rubocop', '~> 1.76'
|
|
50
|
+
s.add_dependency 'thor', '~> 1.0'
|
|
51
|
+
s.add_dependency 'tilt', '~> 2.0'
|
|
52
|
+
s.add_dependency 'yard', '~> 0.9', '>= 0.9.24'
|
|
53
|
+
s.add_dependency 'yard-activesupport-concern', '~> 0.0'
|
|
54
|
+
s.add_dependency 'yard-solargraph', '~> 0.1'
|
|
54
55
|
|
|
55
56
|
s.add_development_dependency 'pry', '~> 0.15'
|
|
56
57
|
s.add_development_dependency 'public_suffix', '~> 3.1'
|
|
@@ -62,6 +63,7 @@ Gem::Specification.new do |s|
|
|
|
62
63
|
#
|
|
63
64
|
# even more specific on RuboCop itself, which is written into _todo
|
|
64
65
|
# file.
|
|
66
|
+
s.add_development_dependency 'overcommit', '~> 0.68.0'
|
|
65
67
|
s.add_development_dependency 'rubocop', '~> 1.80.0.0'
|
|
66
68
|
s.add_development_dependency 'rubocop-rake', '~> 0.7.1'
|
|
67
69
|
s.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
|
|
@@ -69,7 +71,6 @@ Gem::Specification.new do |s|
|
|
|
69
71
|
s.add_development_dependency 'simplecov', '~> 0.21'
|
|
70
72
|
s.add_development_dependency 'simplecov-lcov', '~> 0.8'
|
|
71
73
|
s.add_development_dependency 'undercover', '~> 0.7'
|
|
72
|
-
s.add_development_dependency 'overcommit', '~> 0.68.0'
|
|
73
74
|
s.add_development_dependency 'webmock', '~> 3.6'
|
|
74
75
|
# work around missing yard dependency needed as of Ruby 3.5
|
|
75
76
|
s.add_development_dependency 'irb', '~> 1.15'
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solargraph
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.59.0.dev.
|
|
4
|
+
version: 0.59.0.dev.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fred Snyder
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ast
|
|
@@ -156,33 +156,33 @@ dependencies:
|
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
157
|
version: '0.1'
|
|
158
158
|
- !ruby/object:Gem::Dependency
|
|
159
|
-
name:
|
|
159
|
+
name: open3
|
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
|
161
161
|
requirements:
|
|
162
162
|
- - "~>"
|
|
163
163
|
- !ruby/object:Gem::Version
|
|
164
|
-
version:
|
|
164
|
+
version: 0.2.1
|
|
165
165
|
type: :runtime
|
|
166
166
|
prerelease: false
|
|
167
167
|
version_requirements: !ruby/object:Gem::Requirement
|
|
168
168
|
requirements:
|
|
169
169
|
- - "~>"
|
|
170
170
|
- !ruby/object:Gem::Version
|
|
171
|
-
version:
|
|
171
|
+
version: 0.2.1
|
|
172
172
|
- !ruby/object:Gem::Dependency
|
|
173
|
-
name:
|
|
173
|
+
name: ostruct
|
|
174
174
|
requirement: !ruby/object:Gem::Requirement
|
|
175
175
|
requirements:
|
|
176
176
|
- - "~>"
|
|
177
177
|
- !ruby/object:Gem::Version
|
|
178
|
-
version: 0.
|
|
178
|
+
version: '0.6'
|
|
179
179
|
type: :runtime
|
|
180
180
|
prerelease: false
|
|
181
181
|
version_requirements: !ruby/object:Gem::Requirement
|
|
182
182
|
requirements:
|
|
183
183
|
- - "~>"
|
|
184
184
|
- !ruby/object:Gem::Version
|
|
185
|
-
version: 0.
|
|
185
|
+
version: '0.6'
|
|
186
186
|
- !ruby/object:Gem::Dependency
|
|
187
187
|
name: parser
|
|
188
188
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -308,33 +308,33 @@ dependencies:
|
|
|
308
308
|
- !ruby/object:Gem::Version
|
|
309
309
|
version: 0.9.24
|
|
310
310
|
- !ruby/object:Gem::Dependency
|
|
311
|
-
name: yard-
|
|
311
|
+
name: yard-activesupport-concern
|
|
312
312
|
requirement: !ruby/object:Gem::Requirement
|
|
313
313
|
requirements:
|
|
314
314
|
- - "~>"
|
|
315
315
|
- !ruby/object:Gem::Version
|
|
316
|
-
version: '0.
|
|
316
|
+
version: '0.0'
|
|
317
317
|
type: :runtime
|
|
318
318
|
prerelease: false
|
|
319
319
|
version_requirements: !ruby/object:Gem::Requirement
|
|
320
320
|
requirements:
|
|
321
321
|
- - "~>"
|
|
322
322
|
- !ruby/object:Gem::Version
|
|
323
|
-
version: '0.
|
|
323
|
+
version: '0.0'
|
|
324
324
|
- !ruby/object:Gem::Dependency
|
|
325
|
-
name: yard-
|
|
325
|
+
name: yard-solargraph
|
|
326
326
|
requirement: !ruby/object:Gem::Requirement
|
|
327
327
|
requirements:
|
|
328
328
|
- - "~>"
|
|
329
329
|
- !ruby/object:Gem::Version
|
|
330
|
-
version: '0.
|
|
330
|
+
version: '0.1'
|
|
331
331
|
type: :runtime
|
|
332
332
|
prerelease: false
|
|
333
333
|
version_requirements: !ruby/object:Gem::Requirement
|
|
334
334
|
requirements:
|
|
335
335
|
- - "~>"
|
|
336
336
|
- !ruby/object:Gem::Version
|
|
337
|
-
version: '0.
|
|
337
|
+
version: '0.1'
|
|
338
338
|
- !ruby/object:Gem::Dependency
|
|
339
339
|
name: pry
|
|
340
340
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -391,6 +391,20 @@ dependencies:
|
|
|
391
391
|
- - "~>"
|
|
392
392
|
- !ruby/object:Gem::Version
|
|
393
393
|
version: '3.5'
|
|
394
|
+
- !ruby/object:Gem::Dependency
|
|
395
|
+
name: overcommit
|
|
396
|
+
requirement: !ruby/object:Gem::Requirement
|
|
397
|
+
requirements:
|
|
398
|
+
- - "~>"
|
|
399
|
+
- !ruby/object:Gem::Version
|
|
400
|
+
version: 0.68.0
|
|
401
|
+
type: :development
|
|
402
|
+
prerelease: false
|
|
403
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
404
|
+
requirements:
|
|
405
|
+
- - "~>"
|
|
406
|
+
- !ruby/object:Gem::Version
|
|
407
|
+
version: 0.68.0
|
|
394
408
|
- !ruby/object:Gem::Dependency
|
|
395
409
|
name: rubocop
|
|
396
410
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -489,20 +503,6 @@ dependencies:
|
|
|
489
503
|
- - "~>"
|
|
490
504
|
- !ruby/object:Gem::Version
|
|
491
505
|
version: '0.7'
|
|
492
|
-
- !ruby/object:Gem::Dependency
|
|
493
|
-
name: overcommit
|
|
494
|
-
requirement: !ruby/object:Gem::Requirement
|
|
495
|
-
requirements:
|
|
496
|
-
- - "~>"
|
|
497
|
-
- !ruby/object:Gem::Version
|
|
498
|
-
version: 0.68.0
|
|
499
|
-
type: :development
|
|
500
|
-
prerelease: false
|
|
501
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
502
|
-
requirements:
|
|
503
|
-
- - "~>"
|
|
504
|
-
- !ruby/object:Gem::Version
|
|
505
|
-
version: 0.68.0
|
|
506
506
|
- !ruby/object:Gem::Dependency
|
|
507
507
|
name: webmock
|
|
508
508
|
requirement: !ruby/object:Gem::Requirement
|