solargraph 0.39.13 → 0.40.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/.travis.yml +2 -7
- data/CHANGELOG.md +984 -0
- data/Rakefile +12 -1
- data/SPONSORS.md +1 -0
- data/lib/solargraph.rb +2 -4
- data/lib/solargraph/api_map.rb +75 -74
- data/lib/solargraph/api_map/cache.rb +2 -2
- data/lib/solargraph/api_map/store.rb +4 -8
- data/lib/solargraph/{bundle.rb → bench.rb} +6 -2
- data/lib/solargraph/compat.rb +14 -0
- data/lib/solargraph/complex_type.rb +2 -2
- data/lib/solargraph/convention.rb +14 -5
- data/lib/solargraph/convention/base.rb +16 -8
- data/lib/solargraph/convention/gemfile.rb +2 -5
- data/lib/solargraph/convention/gemspec.rb +3 -6
- data/lib/solargraph/convention/rspec.rb +3 -6
- data/lib/solargraph/documentor.rb +2 -0
- data/lib/solargraph/environ.rb +11 -6
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +6 -1
- data/lib/solargraph/language_server/message/text_document/definition.rb +1 -1
- data/lib/solargraph/library.rb +7 -7
- data/lib/solargraph/parser/legacy/node_chainer.rb +7 -7
- data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +1 -1
- data/lib/solargraph/parser/legacy/node_processors/send_node.rb +36 -23
- data/lib/solargraph/parser/node_processor/base.rb +3 -0
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +9 -9
- data/lib/solargraph/parser/rubyvm/node_methods.rb +1 -1
- data/lib/solargraph/parser/rubyvm/node_processors.rb +1 -0
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +35 -11
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +1 -1
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +40 -29
- data/lib/solargraph/pin.rb +0 -3
- data/lib/solargraph/pin/common.rb +1 -1
- data/lib/solargraph/pin/conversions.rb +3 -4
- data/lib/solargraph/pin/documenting.rb +3 -9
- data/lib/solargraph/pin/method.rb +141 -7
- data/lib/solargraph/pin/method_alias.rb +1 -1
- data/lib/solargraph/position.rb +2 -14
- data/lib/solargraph/shell.rb +1 -0
- data/lib/solargraph/source.rb +10 -6
- data/lib/solargraph/source/chain.rb +18 -5
- data/lib/solargraph/source_map.rb +4 -1
- data/lib/solargraph/source_map/clip.rb +3 -2
- data/lib/solargraph/source_map/mapper.rb +10 -6
- data/lib/solargraph/type_checker.rb +35 -39
- data/lib/solargraph/type_checker/param_def.rb +1 -1
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/yard_map.rb +40 -47
- data/lib/solargraph/yard_map/core_fills.rb +185 -0
- data/lib/solargraph/yard_map/helpers.rb +16 -0
- data/lib/solargraph/yard_map/mapper.rb +14 -8
- data/lib/solargraph/{pin/yard_pin/constant.rb → yard_map/mapper/to_constant.rb} +6 -6
- data/lib/solargraph/yard_map/mapper/to_method.rb +78 -0
- data/lib/solargraph/{pin/yard_pin/namespace.rb → yard_map/mapper/to_namespace.rb} +6 -6
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +1 -1
- data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
- data/lib/solargraph/yard_map/to_method.rb +79 -0
- data/solargraph.gemspec +4 -4
- metadata +20 -34
- data/lib/solargraph/core_fills.rb +0 -159
- data/lib/solargraph/pin/attribute.rb +0 -49
- data/lib/solargraph/pin/base_method.rb +0 -141
- data/lib/solargraph/pin/yard_pin.rb +0 -12
- data/lib/solargraph/pin/yard_pin/method.rb +0 -80
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +0 -20
- data/lib/solargraph/stdlib_fills.rb +0 -40
- data/travis-bundler.rb +0 -11
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module Pin
|
5
|
-
module YardPin
|
6
|
-
autoload :YardMixin, 'solargraph/pin/yard_pin/yard_mixin'
|
7
|
-
autoload :Constant, 'solargraph/pin/yard_pin/constant'
|
8
|
-
autoload :Method, 'solargraph/pin/yard_pin/method'
|
9
|
-
autoload :Namespace, 'solargraph/pin/yard_pin/namespace'
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module Pin
|
5
|
-
module YardPin
|
6
|
-
class Method < Pin::Method
|
7
|
-
include YardMixin
|
8
|
-
|
9
|
-
# @param code_object [YARD::CodeObjects::Base]
|
10
|
-
# @param name [String, nil]
|
11
|
-
# @param scope [Symbol, nil]
|
12
|
-
# @param visibility [Symbol, nil]
|
13
|
-
# @param closure [Solargraph::Pin::Closure, nil]
|
14
|
-
# @param spec [Gem::Specification]
|
15
|
-
def initialize code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
|
16
|
-
closure ||= Solargraph::Pin::Namespace.new(
|
17
|
-
name: code_object.namespace.to_s,
|
18
|
-
gates: [code_object.namespace.to_s]
|
19
|
-
)
|
20
|
-
super(
|
21
|
-
location: object_location(code_object, spec),
|
22
|
-
closure: closure,
|
23
|
-
name: name || code_object.name.to_s,
|
24
|
-
comments: code_object.docstring ? code_object.docstring.all.to_s : '',
|
25
|
-
scope: scope || code_object.scope,
|
26
|
-
visibility: visibility || code_object.visibility,
|
27
|
-
parameters: get_parameters(code_object),
|
28
|
-
explicit: code_object.is_explicit?
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
# @param code_object [YARD::CodeObjects::Base]
|
35
|
-
# @return [Array<Solargraph::Pin::Parameter>]
|
36
|
-
def get_parameters code_object
|
37
|
-
return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
38
|
-
# HACK: Skip `nil` and `self` parameters that are sometimes emitted
|
39
|
-
# for methods defined in C
|
40
|
-
# See https://github.com/castwide/solargraph/issues/345
|
41
|
-
code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
|
42
|
-
Solargraph::Pin::Parameter.new(
|
43
|
-
location: location,
|
44
|
-
closure: self,
|
45
|
-
comments: comments,
|
46
|
-
name: arg_name(a),
|
47
|
-
presence: nil,
|
48
|
-
decl: arg_type(a),
|
49
|
-
asgn_code: a[1]
|
50
|
-
)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# @param a [Array]
|
55
|
-
# @return [String]
|
56
|
-
def arg_name a
|
57
|
-
a[0].match(/[A-Za-z0-9_]*/)[0]
|
58
|
-
end
|
59
|
-
|
60
|
-
# @param a [Array]
|
61
|
-
# @return [Symbol]
|
62
|
-
def arg_type a
|
63
|
-
if a[0].start_with?('**')
|
64
|
-
:kwrestarg
|
65
|
-
elsif a[0].start_with?('*')
|
66
|
-
:restarg
|
67
|
-
elsif a[0].start_with?('&')
|
68
|
-
:blockarg
|
69
|
-
elsif a[1]
|
70
|
-
:optarg
|
71
|
-
elsif a[0].end_with?(':')
|
72
|
-
a[1] ? :kwarg : :kwoptarg
|
73
|
-
else
|
74
|
-
:arg
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module Pin
|
5
|
-
module YardPin
|
6
|
-
module YardMixin
|
7
|
-
private
|
8
|
-
|
9
|
-
# @param code_object [YARD::CodeObjects::Base]
|
10
|
-
# @param spec [Gem::Specification]
|
11
|
-
# @return [Solargraph::Location, nil]
|
12
|
-
def object_location code_object, spec
|
13
|
-
return nil if spec.nil? || code_object.nil? || code_object.file.nil? || code_object.line.nil?
|
14
|
-
file = File.join(spec.full_gem_path, code_object.file)
|
15
|
-
Solargraph::Location.new(file, Solargraph::Range.from_to(code_object.line - 1, 0, code_object.line - 1, 0))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
# Overrides for the Ruby stdlib.
|
5
|
-
#
|
6
|
-
# The YardMap uses this module to add type information to stdlib methods.
|
7
|
-
#
|
8
|
-
module StdlibFills
|
9
|
-
Override = Pin::Reference::Override
|
10
|
-
|
11
|
-
LIBS = {
|
12
|
-
'benchmark' => [
|
13
|
-
Override.method_return('Benchmark.measure', 'Benchmark::Tms')
|
14
|
-
],
|
15
|
-
|
16
|
-
'pathname' => [
|
17
|
-
Override.method_return('Pathname#join', 'Pathname'),
|
18
|
-
Override.method_return('Pathname#basename', 'Pathname'),
|
19
|
-
Override.method_return('Pathname#dirname', 'Pathname'),
|
20
|
-
Override.method_return('Pathname#cleanpath', 'Pathname'),
|
21
|
-
Override.method_return('Pathname#children', 'Array<Pathname>'),
|
22
|
-
Override.method_return('Pathname#entries', 'Array<Pathname>')
|
23
|
-
],
|
24
|
-
|
25
|
-
'set' => [
|
26
|
-
Override.method_return('Enumerable#to_set', 'Set'),
|
27
|
-
Override.method_return('Set#add', 'self'),
|
28
|
-
Override.method_return('Set#add?', 'self, nil'),
|
29
|
-
Override.method_return('Set#classify', 'Hash'),
|
30
|
-
Override.from_comment('Set#each', '@yieldparam_single_parameter')
|
31
|
-
]
|
32
|
-
}
|
33
|
-
|
34
|
-
# @param path [String]
|
35
|
-
# @return [Array<Pin::Reference::Override>]
|
36
|
-
def self.get path
|
37
|
-
LIBS[path] || []
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
data/travis-bundler.rb
DELETED