solargraph 0.39.0 → 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 +6 -0
- data/lib/.rubocop.yml +21 -0
- data/lib/solargraph/api_map/cache.rb +4 -0
- data/lib/solargraph/api_map/store.rb +35 -51
- data/lib/solargraph/api_map.rb +94 -87
- data/lib/solargraph/{bundle.rb → bench.rb} +6 -2
- data/lib/solargraph/compat.rb +23 -0
- data/lib/solargraph/complex_type.rb +2 -2
- 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/convention.rb +14 -5
- data/lib/solargraph/diagnostics/rubocop.rb +2 -1
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +4 -1
- data/lib/solargraph/documentor.rb +4 -0
- data/lib/solargraph/environ.rb +11 -6
- data/lib/solargraph/language_server/host.rb +1 -1
- 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/language_server/message/text_document/formatting.rb +7 -3
- data/lib/solargraph/language_server/uri_helpers.rb +23 -3
- data/lib/solargraph/library.rb +22 -8
- data/lib/solargraph/parser/legacy/class_methods.rb +4 -0
- data/lib/solargraph/parser/legacy/node_chainer.rb +10 -7
- data/lib/solargraph/parser/legacy/node_methods.rb +16 -3
- data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +1 -1
- data/lib/solargraph/parser/legacy/node_processors/send_node.rb +48 -23
- data/lib/solargraph/parser/node_processor/base.rb +3 -0
- data/lib/solargraph/parser/rubyvm/class_methods.rb +6 -2
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +11 -9
- data/lib/solargraph/parser/rubyvm/node_methods.rb +6 -1
- 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/kw_arg_node.rb +6 -1
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +6 -1
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +52 -67
- data/lib/solargraph/parser/rubyvm/node_processors.rb +2 -0
- data/lib/solargraph/pin/base.rb +2 -2
- data/lib/solargraph/pin/base_variable.rb +1 -1
- data/lib/solargraph/pin/block.rb +28 -14
- data/lib/solargraph/pin/closure.rb +1 -1
- data/lib/solargraph/pin/common.rb +1 -1
- data/lib/solargraph/pin/constant.rb +1 -1
- data/lib/solargraph/pin/conversions.rb +3 -4
- data/lib/solargraph/pin/documenting.rb +6 -11
- data/lib/solargraph/pin/local_variable.rb +1 -1
- data/lib/solargraph/pin/method.rb +143 -9
- data/lib/solargraph/pin/method_alias.rb +2 -2
- data/lib/solargraph/pin/namespace.rb +1 -1
- data/lib/solargraph/pin/parameter.rb +2 -2
- data/lib/solargraph/pin/proxy_type.rb +1 -1
- data/lib/solargraph/pin.rb +0 -3
- data/lib/solargraph/position.rb +2 -14
- data/lib/solargraph/shell.rb +2 -1
- data/lib/solargraph/source/chain/call.rb +9 -0
- data/lib/solargraph/source/chain/head.rb +14 -8
- data/lib/solargraph/source/chain/z_super.rb +30 -0
- data/lib/solargraph/source/chain.rb +19 -36
- data/lib/solargraph/source/source_chainer.rb +2 -1
- data/lib/solargraph/source.rb +24 -9
- data/lib/solargraph/source_map/clip.rb +78 -44
- data/lib/solargraph/source_map/mapper.rb +41 -21
- data/lib/solargraph/source_map.rb +20 -2
- data/lib/solargraph/type_checker/param_def.rb +1 -1
- data/lib/solargraph/type_checker.rb +61 -42
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/views/_name_type_tag.erb +1 -1
- data/lib/solargraph/workspace.rb +1 -1
- data/lib/solargraph/yard_map/core_fills.rb +185 -0
- data/lib/solargraph/yard_map/helpers.rb +16 -0
- 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/mapper.rb +17 -8
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +26 -15
- data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
- data/lib/solargraph/yard_map/to_method.rb +79 -0
- data/lib/solargraph/yard_map.rb +140 -92
- data/lib/solargraph.rb +5 -4
- data/solargraph.gemspec +5 -5
- data/yardoc/2.2.2.tar.gz +0 -0
- metadata +29 -41
- data/.rubocop.yml +0 -6
- 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/method.rb +0 -65
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +0 -26
- data/lib/solargraph/pin/yard_pin.rb +0 -12
- data/lib/solargraph/stdlib_fills.rb +0 -32
- data/travis-bundler.rb +0 -11
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solargraph
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.40.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fred Snyder
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: backport
|
|
@@ -81,45 +81,33 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '1.5'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: kramdown
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
90
|
-
- - ">="
|
|
91
|
-
- !ruby/object:Gem::Version
|
|
92
|
-
version: 0.7.3
|
|
89
|
+
version: '2.3'
|
|
93
90
|
type: :runtime
|
|
94
91
|
prerelease: false
|
|
95
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
96
93
|
requirements:
|
|
97
94
|
- - "~>"
|
|
98
95
|
- !ruby/object:Gem::Version
|
|
99
|
-
version: '
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: 0.7.3
|
|
96
|
+
version: '2.3'
|
|
103
97
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
98
|
+
name: kramdown-parser-gfm
|
|
105
99
|
requirement: !ruby/object:Gem::Requirement
|
|
106
100
|
requirements:
|
|
107
101
|
- - "~>"
|
|
108
102
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '1.
|
|
110
|
-
- - ">="
|
|
111
|
-
- !ruby/object:Gem::Version
|
|
112
|
-
version: 1.9.1
|
|
103
|
+
version: '1.1'
|
|
113
104
|
type: :runtime
|
|
114
105
|
prerelease: false
|
|
115
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
116
107
|
requirements:
|
|
117
108
|
- - "~>"
|
|
118
109
|
- !ruby/object:Gem::Version
|
|
119
|
-
version: '1.
|
|
120
|
-
- - ">="
|
|
121
|
-
- !ruby/object:Gem::Version
|
|
122
|
-
version: 1.9.1
|
|
110
|
+
version: '1.1'
|
|
123
111
|
- !ruby/object:Gem::Dependency
|
|
124
112
|
name: parser
|
|
125
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -138,34 +126,34 @@ dependencies:
|
|
|
138
126
|
name: reverse_markdown
|
|
139
127
|
requirement: !ruby/object:Gem::Requirement
|
|
140
128
|
requirements:
|
|
141
|
-
- - "~>"
|
|
142
|
-
- !ruby/object:Gem::Version
|
|
143
|
-
version: '1.0'
|
|
144
129
|
- - ">="
|
|
145
130
|
- !ruby/object:Gem::Version
|
|
146
131
|
version: 1.0.5
|
|
132
|
+
- - "<"
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: '3'
|
|
147
135
|
type: :runtime
|
|
148
136
|
prerelease: false
|
|
149
137
|
version_requirements: !ruby/object:Gem::Requirement
|
|
150
138
|
requirements:
|
|
151
|
-
- - "~>"
|
|
152
|
-
- !ruby/object:Gem::Version
|
|
153
|
-
version: '1.0'
|
|
154
139
|
- - ">="
|
|
155
140
|
- !ruby/object:Gem::Version
|
|
156
141
|
version: 1.0.5
|
|
142
|
+
- - "<"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '3'
|
|
157
145
|
- !ruby/object:Gem::Dependency
|
|
158
146
|
name: rubocop
|
|
159
147
|
requirement: !ruby/object:Gem::Requirement
|
|
160
148
|
requirements:
|
|
161
|
-
- - "
|
|
149
|
+
- - ">="
|
|
162
150
|
- !ruby/object:Gem::Version
|
|
163
151
|
version: '0.52'
|
|
164
152
|
type: :runtime
|
|
165
153
|
prerelease: false
|
|
166
154
|
version_requirements: !ruby/object:Gem::Requirement
|
|
167
155
|
requirements:
|
|
168
|
-
- - "
|
|
156
|
+
- - ">="
|
|
169
157
|
- !ruby/object:Gem::Version
|
|
170
158
|
version: '0.52'
|
|
171
159
|
- !ruby/object:Gem::Dependency
|
|
@@ -301,22 +289,24 @@ extra_rdoc_files: []
|
|
|
301
289
|
files:
|
|
302
290
|
- ".gitignore"
|
|
303
291
|
- ".rspec"
|
|
304
|
-
- ".rubocop.yml"
|
|
305
292
|
- ".travis.yml"
|
|
306
293
|
- ".yardopts"
|
|
294
|
+
- CHANGELOG.md
|
|
307
295
|
- Gemfile
|
|
308
296
|
- LICENSE
|
|
309
297
|
- README.md
|
|
310
298
|
- Rakefile
|
|
311
299
|
- SPONSORS.md
|
|
312
300
|
- bin/solargraph
|
|
301
|
+
- lib/.rubocop.yml
|
|
313
302
|
- lib/solargraph.rb
|
|
314
303
|
- lib/solargraph/api_map.rb
|
|
315
304
|
- lib/solargraph/api_map/bundler_methods.rb
|
|
316
305
|
- lib/solargraph/api_map/cache.rb
|
|
317
306
|
- lib/solargraph/api_map/source_to_yard.rb
|
|
318
307
|
- lib/solargraph/api_map/store.rb
|
|
319
|
-
- lib/solargraph/
|
|
308
|
+
- lib/solargraph/bench.rb
|
|
309
|
+
- lib/solargraph/compat.rb
|
|
320
310
|
- lib/solargraph/complex_type.rb
|
|
321
311
|
- lib/solargraph/complex_type/type_methods.rb
|
|
322
312
|
- lib/solargraph/complex_type/unique_type.rb
|
|
@@ -329,7 +319,6 @@ files:
|
|
|
329
319
|
- lib/solargraph/converters/dl.rb
|
|
330
320
|
- lib/solargraph/converters/dt.rb
|
|
331
321
|
- lib/solargraph/converters/misc.rb
|
|
332
|
-
- lib/solargraph/core_fills.rb
|
|
333
322
|
- lib/solargraph/diagnostics.rb
|
|
334
323
|
- lib/solargraph/diagnostics/base.rb
|
|
335
324
|
- lib/solargraph/diagnostics/require_not_found.rb
|
|
@@ -459,9 +448,7 @@ files:
|
|
|
459
448
|
- lib/solargraph/parser/rubyvm/node_processors/sym_node.rb
|
|
460
449
|
- lib/solargraph/parser/snippet.rb
|
|
461
450
|
- lib/solargraph/pin.rb
|
|
462
|
-
- lib/solargraph/pin/attribute.rb
|
|
463
451
|
- lib/solargraph/pin/base.rb
|
|
464
|
-
- lib/solargraph/pin/base_method.rb
|
|
465
452
|
- lib/solargraph/pin/base_variable.rb
|
|
466
453
|
- lib/solargraph/pin/block.rb
|
|
467
454
|
- lib/solargraph/pin/class_variable.rb
|
|
@@ -491,11 +478,6 @@ files:
|
|
|
491
478
|
- lib/solargraph/pin/reference/superclass.rb
|
|
492
479
|
- lib/solargraph/pin/singleton.rb
|
|
493
480
|
- lib/solargraph/pin/symbol.rb
|
|
494
|
-
- lib/solargraph/pin/yard_pin.rb
|
|
495
|
-
- lib/solargraph/pin/yard_pin/constant.rb
|
|
496
|
-
- lib/solargraph/pin/yard_pin/method.rb
|
|
497
|
-
- lib/solargraph/pin/yard_pin/namespace.rb
|
|
498
|
-
- lib/solargraph/pin/yard_pin/yard_mixin.rb
|
|
499
481
|
- lib/solargraph/position.rb
|
|
500
482
|
- lib/solargraph/range.rb
|
|
501
483
|
- lib/solargraph/server_methods.rb
|
|
@@ -513,6 +495,7 @@ files:
|
|
|
513
495
|
- lib/solargraph/source/chain/literal.rb
|
|
514
496
|
- lib/solargraph/source/chain/or.rb
|
|
515
497
|
- lib/solargraph/source/chain/variable.rb
|
|
498
|
+
- lib/solargraph/source/chain/z_super.rb
|
|
516
499
|
- lib/solargraph/source/change.rb
|
|
517
500
|
- lib/solargraph/source/cursor.rb
|
|
518
501
|
- lib/solargraph/source/encoding_fixes.rb
|
|
@@ -522,7 +505,6 @@ files:
|
|
|
522
505
|
- lib/solargraph/source_map/clip.rb
|
|
523
506
|
- lib/solargraph/source_map/completion.rb
|
|
524
507
|
- lib/solargraph/source_map/mapper.rb
|
|
525
|
-
- lib/solargraph/stdlib_fills.rb
|
|
526
508
|
- lib/solargraph/type_checker.rb
|
|
527
509
|
- lib/solargraph/type_checker/checks.rb
|
|
528
510
|
- lib/solargraph/type_checker/param_def.rb
|
|
@@ -541,12 +523,18 @@ files:
|
|
|
541
523
|
- lib/solargraph/yard_map.rb
|
|
542
524
|
- lib/solargraph/yard_map/cache.rb
|
|
543
525
|
- lib/solargraph/yard_map/core_docs.rb
|
|
526
|
+
- lib/solargraph/yard_map/core_fills.rb
|
|
544
527
|
- lib/solargraph/yard_map/core_gen.rb
|
|
528
|
+
- lib/solargraph/yard_map/helpers.rb
|
|
545
529
|
- lib/solargraph/yard_map/mapper.rb
|
|
530
|
+
- lib/solargraph/yard_map/mapper/to_constant.rb
|
|
531
|
+
- lib/solargraph/yard_map/mapper/to_method.rb
|
|
532
|
+
- lib/solargraph/yard_map/mapper/to_namespace.rb
|
|
546
533
|
- lib/solargraph/yard_map/rdoc_to_yard.rb
|
|
534
|
+
- lib/solargraph/yard_map/stdlib_fills.rb
|
|
535
|
+
- lib/solargraph/yard_map/to_method.rb
|
|
547
536
|
- lib/yard-solargraph.rb
|
|
548
537
|
- solargraph.gemspec
|
|
549
|
-
- travis-bundler.rb
|
|
550
538
|
- yardoc/2.2.2.tar.gz
|
|
551
539
|
homepage: http://solargraph.org
|
|
552
540
|
licenses:
|
|
@@ -560,7 +548,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
560
548
|
requirements:
|
|
561
549
|
- - ">="
|
|
562
550
|
- !ruby/object:Gem::Version
|
|
563
|
-
version: '2.
|
|
551
|
+
version: '2.4'
|
|
564
552
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
565
553
|
requirements:
|
|
566
554
|
- - ">="
|
data/.rubocop.yml
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
# Overrides for the Ruby core.
|
|
5
|
-
#
|
|
6
|
-
# The YardMap uses this module to add type information to core methods.
|
|
7
|
-
#
|
|
8
|
-
module CoreFills
|
|
9
|
-
Override = Pin::Reference::Override
|
|
10
|
-
|
|
11
|
-
KEYWORDS = [
|
|
12
|
-
'__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
|
|
13
|
-
'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
|
|
14
|
-
'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
|
|
15
|
-
'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
|
|
16
|
-
'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
|
|
17
|
-
].freeze
|
|
18
|
-
|
|
19
|
-
methods_with_yieldparam_subtypes = %w[
|
|
20
|
-
Array#each Array#map Array#map! Array#any? Array#all? Array#index
|
|
21
|
-
Array#keep_if Array#delete_if
|
|
22
|
-
Enumerable#each_entry Enumerable#map Enumerable#any? Enumerable#all?
|
|
23
|
-
Enumerable#select Enumerable#reject
|
|
24
|
-
Set#each
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
OVERRIDES = [
|
|
28
|
-
Override.method_return('Array#keep_if', 'self'),
|
|
29
|
-
Override.method_return('Array#delete_if', 'self'),
|
|
30
|
-
Override.from_comment('Array#reject', %(
|
|
31
|
-
@overload reject(&block)
|
|
32
|
-
@return [self]
|
|
33
|
-
@overload reject()
|
|
34
|
-
@return [Enumerator]
|
|
35
|
-
)),
|
|
36
|
-
Override.method_return('Array#reverse', 'self', delete: ['overload']),
|
|
37
|
-
Override.from_comment('Array#select', %(
|
|
38
|
-
@overload select(&block)
|
|
39
|
-
@return [self]
|
|
40
|
-
@overload select()
|
|
41
|
-
@return [Enumerator]
|
|
42
|
-
)),
|
|
43
|
-
Override.from_comment('Array#[]', %(
|
|
44
|
-
@overload [](range)
|
|
45
|
-
@param range [Range]
|
|
46
|
-
@return [self]
|
|
47
|
-
@overload [](num1, num2)
|
|
48
|
-
@param num1 [Integer]
|
|
49
|
-
@param num2 [Integer]
|
|
50
|
-
@return [self]
|
|
51
|
-
@overload [](num)
|
|
52
|
-
@param num [Integer]
|
|
53
|
-
@return_single_parameter
|
|
54
|
-
@return_single_parameter
|
|
55
|
-
)),
|
|
56
|
-
Override.from_comment('Array#first', %(
|
|
57
|
-
@overload first(num)
|
|
58
|
-
@param num [Integer]
|
|
59
|
-
@return [self]
|
|
60
|
-
@return_single_parameter
|
|
61
|
-
)),
|
|
62
|
-
Override.from_comment('Array#last', %(
|
|
63
|
-
@overload last(num)
|
|
64
|
-
@param num [Integer]
|
|
65
|
-
@return [self]
|
|
66
|
-
@return_single_parameter
|
|
67
|
-
)),
|
|
68
|
-
Override.method_return('Array#uniq', 'self'),
|
|
69
|
-
|
|
70
|
-
Override.from_comment('BasicObject#==', %(
|
|
71
|
-
@param other [BasicObject]
|
|
72
|
-
@return [Boolean]
|
|
73
|
-
)),
|
|
74
|
-
Override.method_return('BasicObject#initialize', 'void'),
|
|
75
|
-
|
|
76
|
-
Override.method_return('Class#new', 'self'),
|
|
77
|
-
Override.method_return('Class.new', 'Class<Object>'),
|
|
78
|
-
Override.method_return('Class#allocate', 'self'),
|
|
79
|
-
Override.method_return('Class.allocate', 'Class<Object>'),
|
|
80
|
-
|
|
81
|
-
Override.method_return('Enumerable#select', 'self'),
|
|
82
|
-
|
|
83
|
-
Override.method_return('File.absolute_path', 'String'),
|
|
84
|
-
Override.method_return('File.basename', 'String'),
|
|
85
|
-
Override.method_return('File.dirname', 'String'),
|
|
86
|
-
Override.method_return('File.extname', 'String'),
|
|
87
|
-
Override.method_return('File.join', 'String'),
|
|
88
|
-
|
|
89
|
-
Override.from_comment('Float#+', %(
|
|
90
|
-
@param y [Numeric]
|
|
91
|
-
@return [Numeric]
|
|
92
|
-
)),
|
|
93
|
-
|
|
94
|
-
Override.from_comment('Hash#[]', %(
|
|
95
|
-
@return_value_parameter
|
|
96
|
-
)),
|
|
97
|
-
|
|
98
|
-
# @todo This override isn't robust enough. It needs to allow for
|
|
99
|
-
# parameterized Hash types, e.g., [Hash{Symbol => String}].
|
|
100
|
-
Override.from_comment('Hash#[]=', %(
|
|
101
|
-
@param_tuple
|
|
102
|
-
)),
|
|
103
|
-
|
|
104
|
-
Override.from_comment('Integer#+', %(
|
|
105
|
-
@param y [Numeric]
|
|
106
|
-
@return [Numeric]
|
|
107
|
-
)),
|
|
108
|
-
|
|
109
|
-
Override.method_return('Kernel#puts', 'nil'),
|
|
110
|
-
|
|
111
|
-
# Override.method_return('Module#attr_reader', 'void'),
|
|
112
|
-
# Override.method_return('Module#attr_writer', 'void'),
|
|
113
|
-
# Override.method_return('Module#attr_accessor', 'void'),
|
|
114
|
-
|
|
115
|
-
Override.from_comment('Numeric#+', %(
|
|
116
|
-
@param y [Numeric]
|
|
117
|
-
@return [Numeric]
|
|
118
|
-
)),
|
|
119
|
-
|
|
120
|
-
Override.method_return('Object#!', 'Boolean'),
|
|
121
|
-
Override.method_return('Object#clone', 'self', delete: [:overload]),
|
|
122
|
-
Override.method_return('Object#dup', 'self', delete: [:overload]),
|
|
123
|
-
Override.method_return('Object#freeze', 'self', delete: [:overload]),
|
|
124
|
-
Override.method_return('Object#inspect', 'String'),
|
|
125
|
-
Override.method_return('Object#taint', 'self'),
|
|
126
|
-
Override.method_return('Object#to_s', 'String'),
|
|
127
|
-
Override.method_return('Object#untaint', 'self'),
|
|
128
|
-
Override.from_comment('Object#tap', %(
|
|
129
|
-
@return [self]
|
|
130
|
-
@yieldparam [self]
|
|
131
|
-
)),
|
|
132
|
-
|
|
133
|
-
Override.from_comment('STDERR', %(
|
|
134
|
-
@type [IO]
|
|
135
|
-
)),
|
|
136
|
-
|
|
137
|
-
Override.from_comment('STDIN', %(
|
|
138
|
-
@type [IO]
|
|
139
|
-
)),
|
|
140
|
-
|
|
141
|
-
Override.from_comment('STDOUT', %(
|
|
142
|
-
@type [IO]
|
|
143
|
-
)),
|
|
144
|
-
|
|
145
|
-
Override.method_return('String#freeze', 'self'),
|
|
146
|
-
Override.method_return('String#split', 'Array<String>'),
|
|
147
|
-
Override.method_return('String#lines', 'Array<String>'),
|
|
148
|
-
Override.from_comment('String#each_line', %(
|
|
149
|
-
@yieldparam [String]
|
|
150
|
-
))
|
|
151
|
-
].concat(
|
|
152
|
-
methods_with_yieldparam_subtypes.map do |path|
|
|
153
|
-
Override.from_comment(path, %(
|
|
154
|
-
@yieldparam_single_parameter
|
|
155
|
-
))
|
|
156
|
-
end
|
|
157
|
-
)
|
|
158
|
-
end
|
|
159
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Attribute < BaseMethod
|
|
6
|
-
# @return [::Symbol] :reader or :writer
|
|
7
|
-
attr_reader :access
|
|
8
|
-
|
|
9
|
-
# @param access [::Symbol] :reader or :writer
|
|
10
|
-
def initialize access: :reader, **splat
|
|
11
|
-
super(splat)
|
|
12
|
-
@access = access
|
|
13
|
-
if access == :writer
|
|
14
|
-
parameters.push(
|
|
15
|
-
Pin::Parameter.new(name: 'value', decl: :arg, closure: self)
|
|
16
|
-
)
|
|
17
|
-
if return_type.defined?
|
|
18
|
-
docstring.add_tag YARD::Tags::Tag.new(:param, '', return_type.to_s.split(', '), 'value')
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def completion_item_kind
|
|
24
|
-
Solargraph::LanguageServer::CompletionItemKinds::PROPERTY
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def symbol_kind
|
|
28
|
-
Solargraph::LanguageServer::SymbolKinds::PROPERTY
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def path
|
|
32
|
-
@path ||= namespace + (scope == :instance ? '#' : '.') + name
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def probe api_map
|
|
36
|
-
types = []
|
|
37
|
-
varname = "@#{name.gsub(/=$/, '')}"
|
|
38
|
-
pins = api_map.get_instance_variable_pins(binder.namespace, binder.scope).select { |iv| iv.name == varname }
|
|
39
|
-
pins.each do |pin|
|
|
40
|
-
type = pin.typify(api_map)
|
|
41
|
-
type = pin.probe(api_map) if type.undefined?
|
|
42
|
-
types.push type if type.defined?
|
|
43
|
-
end
|
|
44
|
-
return ComplexType::UNDEFINED if types.empty?
|
|
45
|
-
ComplexType.try_parse(*types.map(&:tag).uniq)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
# The base class for method and attribute pins.
|
|
6
|
-
#
|
|
7
|
-
class BaseMethod < Closure
|
|
8
|
-
# @return [::Symbol] :public, :private, or :protected
|
|
9
|
-
attr_reader :visibility
|
|
10
|
-
|
|
11
|
-
# @return [Parser::AST::Node]
|
|
12
|
-
attr_reader :node
|
|
13
|
-
|
|
14
|
-
# @param visibility [::Symbol] :public, :protected, or :private
|
|
15
|
-
# @param explicit [Boolean]
|
|
16
|
-
def initialize visibility: :public, explicit: true, **splat
|
|
17
|
-
super(splat)
|
|
18
|
-
@visibility = visibility
|
|
19
|
-
@explicit = explicit
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def return_type
|
|
23
|
-
@return_type ||= generate_complex_type
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def path
|
|
27
|
-
@path ||= "#{namespace}#{(scope == :instance ? '#' : '.')}#{name}"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def typify api_map
|
|
31
|
-
decl = super
|
|
32
|
-
return decl unless decl.undefined?
|
|
33
|
-
type = see_reference(api_map) || typify_from_super(api_map)
|
|
34
|
-
return type.qualify(api_map, namespace) unless type.nil?
|
|
35
|
-
name.end_with?('?') ? ComplexType::BOOLEAN : ComplexType::UNDEFINED
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# @return [Array<Pin::Parameter>]
|
|
39
|
-
def parameters
|
|
40
|
-
@parameters ||= []
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# @return [Array<String>]
|
|
44
|
-
def parameter_names
|
|
45
|
-
parameters.map(&:name)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def documentation
|
|
49
|
-
if @documentation.nil?
|
|
50
|
-
@documentation ||= super || ''
|
|
51
|
-
param_tags = docstring.tags(:param)
|
|
52
|
-
unless param_tags.nil? or param_tags.empty?
|
|
53
|
-
@documentation += "\n\n" unless @documentation.empty?
|
|
54
|
-
@documentation += "Params:\n"
|
|
55
|
-
lines = []
|
|
56
|
-
param_tags.each do |p|
|
|
57
|
-
l = "* #{p.name}"
|
|
58
|
-
l += " [#{escape_brackets(p.types.join(', '))}]" unless p.types.nil? or p.types.empty?
|
|
59
|
-
l += " #{p.text}"
|
|
60
|
-
lines.push l
|
|
61
|
-
end
|
|
62
|
-
@documentation += lines.join("\n")
|
|
63
|
-
end
|
|
64
|
-
return_tags = docstring.tags(:return)
|
|
65
|
-
unless return_tags.empty?
|
|
66
|
-
@documentation += "\n\n" unless @documentation.empty?
|
|
67
|
-
@documentation += "Returns:\n"
|
|
68
|
-
lines = []
|
|
69
|
-
return_tags.each do |r|
|
|
70
|
-
l = "*"
|
|
71
|
-
l += " [#{escape_brackets(r.types.join(', '))}]" unless r.types.nil? or r.types.empty?
|
|
72
|
-
l += " #{r.text}"
|
|
73
|
-
lines.push l
|
|
74
|
-
end
|
|
75
|
-
@documentation += lines.join("\n")
|
|
76
|
-
end
|
|
77
|
-
@documentation += "\n\n" unless @documentation.empty?
|
|
78
|
-
@documentation += "Visibility: #{visibility}"
|
|
79
|
-
end
|
|
80
|
-
@documentation.to_s
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def explicit?
|
|
84
|
-
@explicit
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
private
|
|
88
|
-
|
|
89
|
-
# @return [ComplexType]
|
|
90
|
-
def generate_complex_type
|
|
91
|
-
tags = docstring.tags(:return).map(&:types).flatten.reject(&:nil?)
|
|
92
|
-
return ComplexType::UNDEFINED if tags.empty?
|
|
93
|
-
ComplexType.try_parse *tags
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# @param api_map [ApiMap]
|
|
97
|
-
# @return [ComplexType, nil]
|
|
98
|
-
def see_reference api_map
|
|
99
|
-
docstring.ref_tags.each do |ref|
|
|
100
|
-
next unless ref.tag_name == 'return' && ref.owner
|
|
101
|
-
result = resolve_reference(ref.owner.to_s, api_map)
|
|
102
|
-
return result unless result.nil?
|
|
103
|
-
end
|
|
104
|
-
match = comments.match(/^[ \t]*\(see (.*)\)/m)
|
|
105
|
-
return nil if match.nil?
|
|
106
|
-
resolve_reference match[1], api_map
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# @param api_map [ApiMap]
|
|
110
|
-
# @return [ComplexType, nil]
|
|
111
|
-
def typify_from_super api_map
|
|
112
|
-
stack = api_map.get_method_stack(namespace, name, scope: scope).reject { |pin| pin.path == path }
|
|
113
|
-
return nil if stack.empty?
|
|
114
|
-
stack.each do |pin|
|
|
115
|
-
return pin.return_type unless pin.return_type.undefined?
|
|
116
|
-
end
|
|
117
|
-
nil
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
# @param ref [String]
|
|
121
|
-
# @param api_map [ApiMap]
|
|
122
|
-
# @return [ComplexType]
|
|
123
|
-
def resolve_reference ref, api_map
|
|
124
|
-
parts = ref.split(/[\.#]/)
|
|
125
|
-
if parts.first.empty? || parts.one?
|
|
126
|
-
path = "#{namespace}#{ref}"
|
|
127
|
-
else
|
|
128
|
-
fqns = api_map.qualify(parts.first, namespace)
|
|
129
|
-
return ComplexType::UNDEFINED if fqns.nil?
|
|
130
|
-
path = fqns + ref[parts.first.length] + parts.last
|
|
131
|
-
end
|
|
132
|
-
pins = api_map.get_path_pins(path)
|
|
133
|
-
pins.each do |pin|
|
|
134
|
-
type = pin.typify(api_map)
|
|
135
|
-
return type unless type.undefined?
|
|
136
|
-
end
|
|
137
|
-
nil
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
end
|
|
@@ -1,65 +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
|
-
def initialize code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
|
|
10
|
-
closure ||= Solargraph::Pin::Namespace.new(
|
|
11
|
-
name: code_object.namespace.to_s,
|
|
12
|
-
gates: [code_object.namespace.to_s]
|
|
13
|
-
)
|
|
14
|
-
super(
|
|
15
|
-
location: object_location(code_object, spec),
|
|
16
|
-
closure: closure,
|
|
17
|
-
name: name || code_object.name.to_s,
|
|
18
|
-
comments: code_object.docstring ? code_object.docstring.all.to_s : '',
|
|
19
|
-
scope: scope || code_object.scope,
|
|
20
|
-
visibility: visibility || code_object.visibility,
|
|
21
|
-
parameters: get_parameters(code_object),
|
|
22
|
-
explicit: code_object.is_explicit?
|
|
23
|
-
)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def get_parameters code_object
|
|
29
|
-
return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
30
|
-
code_object.parameters.map do |a|
|
|
31
|
-
Solargraph::Pin::Parameter.new(
|
|
32
|
-
location: location,
|
|
33
|
-
closure: self,
|
|
34
|
-
comments: comments,
|
|
35
|
-
name: arg_name(a),
|
|
36
|
-
presence: nil,
|
|
37
|
-
decl: arg_type(a),
|
|
38
|
-
asgn_code: a[1]
|
|
39
|
-
)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def arg_name a
|
|
44
|
-
a[0].match(/[A-Za-z0-9_]*/)[0]
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def arg_type a
|
|
48
|
-
if a[0].start_with?('**')
|
|
49
|
-
:kwrestarg
|
|
50
|
-
elsif a[0].start_with?('*')
|
|
51
|
-
:restarg
|
|
52
|
-
elsif a[0].start_with?('&')
|
|
53
|
-
:blockarg
|
|
54
|
-
elsif a[1]
|
|
55
|
-
:optarg
|
|
56
|
-
elsif a[0].end_with?(':')
|
|
57
|
-
a[1] ? :kwarg : :kwoptarg
|
|
58
|
-
else
|
|
59
|
-
:arg
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
module YardPin
|
|
6
|
-
module YardMixin
|
|
7
|
-
attr_reader :code_object
|
|
8
|
-
|
|
9
|
-
attr_reader :spec
|
|
10
|
-
|
|
11
|
-
attr_reader :location
|
|
12
|
-
|
|
13
|
-
@@gate_cache ||= {}
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
# @return [Solargraph::Location, nil]
|
|
18
|
-
def object_location code_object, spec
|
|
19
|
-
return nil if spec.nil? || code_object.nil? || code_object.file.nil? || code_object.line.nil?
|
|
20
|
-
file = File.join(spec.full_gem_path, code_object.file)
|
|
21
|
-
Solargraph::Location.new(file, Solargraph::Range.from_to(code_object.line - 1, 0, code_object.line - 1, 0))
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -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
|