solargraph 0.54.0 → 0.58.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/.github/workflows/linting.yml +127 -0
- data/.github/workflows/plugins.yml +184 -6
- data/.github/workflows/rspec.yml +55 -5
- data/.github/workflows/typecheck.yml +8 -3
- data/.gitignore +7 -0
- data/.overcommit.yml +72 -0
- data/.rspec +1 -0
- data/.rubocop.yml +66 -0
- data/.rubocop_todo.yml +1279 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +171 -0
- data/README.md +20 -6
- data/Rakefile +125 -13
- data/bin/solargraph +8 -5
- data/lib/solargraph/api_map/cache.rb +13 -3
- data/lib/solargraph/api_map/constants.rb +279 -0
- data/lib/solargraph/api_map/index.rb +193 -0
- data/lib/solargraph/api_map/source_to_yard.rb +13 -4
- data/lib/solargraph/api_map/store.rb +207 -132
- data/lib/solargraph/api_map.rb +394 -261
- data/lib/solargraph/bench.rb +18 -1
- data/lib/solargraph/complex_type/type_methods.rb +29 -12
- data/lib/solargraph/complex_type/unique_type.rb +205 -26
- data/lib/solargraph/complex_type.rb +126 -26
- data/lib/solargraph/convention/active_support_concern.rb +111 -0
- data/lib/solargraph/convention/base.rb +20 -3
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -0
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -0
- data/lib/solargraph/convention/data_definition.rb +105 -0
- data/lib/solargraph/convention/gemspec.rb +3 -2
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -0
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -0
- data/lib/solargraph/convention/struct_definition.rb +164 -0
- data/lib/solargraph/convention.rb +36 -4
- data/lib/solargraph/diagnostics/rubocop.rb +6 -1
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
- data/lib/solargraph/doc_map.rb +316 -64
- data/lib/solargraph/environ.rb +9 -2
- data/lib/solargraph/equality.rb +34 -0
- data/lib/solargraph/gem_pins.rb +64 -38
- data/lib/solargraph/language_server/host/dispatch.rb +2 -0
- data/lib/solargraph/language_server/host/message_worker.rb +54 -5
- data/lib/solargraph/language_server/host.rb +36 -18
- data/lib/solargraph/language_server/message/base.rb +20 -12
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +2 -0
- data/lib/solargraph/language_server/message/extended/document.rb +5 -2
- data/lib/solargraph/language_server/message/extended/document_gems.rb +3 -3
- data/lib/solargraph/language_server/message/initialize.rb +3 -1
- data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
- data/lib/solargraph/language_server/message/text_document/definition.rb +5 -3
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +3 -3
- data/lib/solargraph/language_server/message/text_document/formatting.rb +23 -2
- data/lib/solargraph/language_server/message/text_document/hover.rb +1 -1
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +4 -3
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +2 -0
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +2 -2
- data/lib/solargraph/language_server/progress.rb +27 -2
- data/lib/solargraph/language_server/request.rb +4 -1
- data/lib/solargraph/library.rb +83 -73
- data/lib/solargraph/location.rb +45 -1
- data/lib/solargraph/logging.rb +12 -2
- data/lib/solargraph/page.rb +3 -0
- data/lib/solargraph/parser/comment_ripper.rb +20 -7
- data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -0
- data/lib/solargraph/parser/node_processor/base.rb +10 -5
- data/lib/solargraph/parser/node_processor.rb +26 -8
- data/lib/solargraph/parser/parser_gem/class_methods.rb +10 -18
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +13 -11
- data/lib/solargraph/parser/parser_gem/node_methods.rb +10 -19
- data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +26 -20
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +7 -4
- data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +6 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +4 -2
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +14 -2
- data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +8 -7
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +16 -6
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +64 -32
- data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -0
- data/lib/solargraph/parser/parser_gem/node_processors.rb +14 -0
- data/lib/solargraph/parser/region.rb +4 -1
- data/lib/solargraph/parser/snippet.rb +2 -0
- data/lib/solargraph/parser.rb +3 -5
- data/lib/solargraph/pin/base.rb +417 -42
- data/lib/solargraph/pin/base_variable.rb +21 -12
- data/lib/solargraph/pin/block.rb +9 -26
- data/lib/solargraph/pin/breakable.rb +9 -0
- data/lib/solargraph/pin/callable.rb +231 -0
- data/lib/solargraph/pin/closure.rb +30 -10
- data/lib/solargraph/pin/common.rb +12 -7
- data/lib/solargraph/pin/constant.rb +2 -0
- data/lib/solargraph/pin/conversions.rb +3 -2
- data/lib/solargraph/pin/delegated_method.rb +20 -1
- data/lib/solargraph/pin/documenting.rb +16 -0
- data/lib/solargraph/pin/instance_variable.rb +2 -2
- data/lib/solargraph/pin/keyword.rb +7 -2
- data/lib/solargraph/pin/local_variable.rb +15 -7
- data/lib/solargraph/pin/method.rb +241 -70
- data/lib/solargraph/pin/method_alias.rb +3 -0
- data/lib/solargraph/pin/namespace.rb +21 -13
- data/lib/solargraph/pin/parameter.rb +94 -32
- data/lib/solargraph/pin/proxy_type.rb +17 -7
- data/lib/solargraph/pin/reference/override.rb +24 -6
- data/lib/solargraph/pin/reference/require.rb +2 -2
- data/lib/solargraph/pin/reference/superclass.rb +5 -0
- data/lib/solargraph/pin/reference.rb +17 -0
- data/lib/solargraph/pin/search.rb +6 -1
- data/lib/solargraph/pin/signature.rb +39 -121
- data/lib/solargraph/pin/singleton.rb +1 -1
- data/lib/solargraph/pin/symbol.rb +8 -2
- data/lib/solargraph/pin/until.rb +18 -0
- data/lib/solargraph/pin/while.rb +18 -0
- data/lib/solargraph/pin.rb +8 -2
- data/lib/solargraph/pin_cache.rb +245 -0
- data/lib/solargraph/position.rb +19 -0
- data/lib/solargraph/range.rb +23 -4
- data/lib/solargraph/rbs_map/conversions.rb +315 -99
- data/lib/solargraph/rbs_map/core_fills.rb +50 -16
- data/lib/solargraph/rbs_map/core_map.rb +41 -11
- data/lib/solargraph/rbs_map/stdlib_map.rb +15 -5
- data/lib/solargraph/rbs_map.rb +87 -16
- data/lib/solargraph/shell.rb +117 -17
- data/lib/solargraph/source/chain/array.rb +13 -8
- data/lib/solargraph/source/chain/block_symbol.rb +1 -1
- data/lib/solargraph/source/chain/block_variable.rb +1 -1
- data/lib/solargraph/source/chain/call.rb +135 -66
- data/lib/solargraph/source/chain/constant.rb +3 -66
- data/lib/solargraph/source/chain/hash.rb +9 -3
- data/lib/solargraph/source/chain/head.rb +1 -1
- data/lib/solargraph/source/chain/if.rb +7 -2
- data/lib/solargraph/source/chain/link.rb +38 -6
- data/lib/solargraph/source/chain/literal.rb +27 -2
- data/lib/solargraph/source/chain/or.rb +2 -2
- data/lib/solargraph/source/chain/z_super.rb +1 -1
- data/lib/solargraph/source/chain.rb +140 -63
- data/lib/solargraph/source/change.rb +2 -2
- data/lib/solargraph/source/cursor.rb +4 -4
- data/lib/solargraph/source/source_chainer.rb +3 -3
- data/lib/solargraph/source.rb +110 -89
- data/lib/solargraph/source_map/clip.rb +22 -28
- data/lib/solargraph/source_map/data.rb +34 -0
- data/lib/solargraph/source_map/mapper.rb +11 -7
- data/lib/solargraph/source_map.rb +50 -43
- data/lib/solargraph/type_checker/checks.rb +4 -0
- data/lib/solargraph/type_checker/param_def.rb +2 -0
- data/lib/solargraph/type_checker/rules.rb +35 -8
- data/lib/solargraph/type_checker.rb +331 -189
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/views/_method.erb +10 -10
- data/lib/solargraph/views/_namespace.erb +3 -3
- data/lib/solargraph/views/document.erb +10 -10
- data/lib/solargraph/views/environment.erb +3 -5
- data/lib/solargraph/workspace/config.rb +25 -5
- data/lib/solargraph/workspace/require_paths.rb +97 -0
- data/lib/solargraph/workspace.rb +53 -72
- data/lib/solargraph/yard_map/helpers.rb +29 -1
- data/lib/solargraph/yard_map/mapper/to_constant.rb +8 -5
- data/lib/solargraph/yard_map/mapper/to_method.rb +55 -19
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +11 -7
- data/lib/solargraph/yard_map/mapper.rb +5 -3
- data/lib/solargraph/yard_map/to_method.rb +6 -3
- data/lib/solargraph/yardoc.rb +45 -10
- data/lib/solargraph.rb +35 -1
- data/rbs/fills/bundler/0/bundler.rbs +4271 -0
- data/rbs/fills/open3/0/open3.rbs +172 -0
- data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
- data/rbs/fills/rubygems/0/errors.rbs +364 -0
- data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
- data/rbs/fills/rubygems/0/specification.rbs +1753 -0
- data/rbs/fills/tuple/tuple.rbs +149 -0
- data/rbs_collection.yaml +19 -0
- data/sig/shims/ast/0/node.rbs +5 -0
- data/sig/shims/ast/2.4/.rbs_meta.yaml +9 -0
- data/sig/shims/ast/2.4/ast.rbs +73 -0
- data/sig/shims/parser/3.2.0.1/builders/default.rbs +195 -0
- data/sig/shims/parser/3.2.0.1/manifest.yaml +7 -0
- data/sig/shims/parser/3.2.0.1/parser.rbs +201 -0
- data/sig/shims/parser/3.2.0.1/polyfill.rbs +4 -0
- data/sig/shims/thor/1.2.0.1/.rbs_meta.yaml +9 -0
- data/sig/shims/thor/1.2.0.1/manifest.yaml +7 -0
- data/sig/shims/thor/1.2.0.1/thor.rbs +17 -0
- data/solargraph.gemspec +32 -10
- metadata +237 -37
- data/lib/.rubocop.yml +0 -22
- data/lib/solargraph/cache.rb +0 -77
- data/lib/solargraph/parser/node_methods.rb +0 -83
|
@@ -4,40 +4,53 @@ require 'yard'
|
|
|
4
4
|
require 'solargraph/yard_tags'
|
|
5
5
|
|
|
6
6
|
module Solargraph
|
|
7
|
-
# An index of
|
|
7
|
+
# An index of Pins and other ApiMap-related data for a single Source
|
|
8
|
+
# that can be queried.
|
|
8
9
|
#
|
|
9
10
|
class SourceMap
|
|
10
11
|
autoload :Mapper, 'solargraph/source_map/mapper'
|
|
11
12
|
autoload :Clip, 'solargraph/source_map/clip'
|
|
12
13
|
autoload :Completion, 'solargraph/source_map/completion'
|
|
14
|
+
autoload :Data, 'solargraph/source_map/data'
|
|
13
15
|
|
|
14
16
|
# @return [Source]
|
|
15
17
|
attr_reader :source
|
|
16
18
|
|
|
17
19
|
# @return [Array<Pin::Base>]
|
|
18
|
-
|
|
20
|
+
def pins
|
|
21
|
+
data.pins
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [Array<Pin::Base>]
|
|
25
|
+
def all_pins
|
|
26
|
+
pins + convention_pins
|
|
27
|
+
end
|
|
19
28
|
|
|
20
29
|
# @return [Array<Pin::LocalVariable>]
|
|
21
|
-
|
|
30
|
+
def locals
|
|
31
|
+
data.locals
|
|
32
|
+
end
|
|
22
33
|
|
|
23
34
|
# @param source [Source]
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
self.convention_pins =
|
|
33
|
-
@
|
|
35
|
+
def initialize source
|
|
36
|
+
@source = source
|
|
37
|
+
|
|
38
|
+
conventions_environ.merge Convention.for_local(self) unless filename.nil?
|
|
39
|
+
# FIXME: unmemoizing the document_symbols in case it was called and memoized from any of conventions above
|
|
40
|
+
# this is to ensure that the convention_pins from all conventions are used in the document_symbols.
|
|
41
|
+
# solargraph-rails is known to use this method to get the document symbols. It should probably be removed.
|
|
42
|
+
@document_symbols = nil
|
|
43
|
+
self.convention_pins = conventions_environ.pins
|
|
44
|
+
# @type [Hash{Class<Pin::Base> => Array<Pin::Base>}]
|
|
34
45
|
@pin_select_cache = {}
|
|
35
46
|
end
|
|
36
47
|
|
|
37
|
-
# @
|
|
38
|
-
# @
|
|
48
|
+
# @generic T
|
|
49
|
+
# @param klass [Class<generic<T>>]
|
|
50
|
+
#
|
|
51
|
+
# @return [Array<generic<T>>]
|
|
39
52
|
def pins_by_class klass
|
|
40
|
-
@pin_select_cache[klass] ||=
|
|
53
|
+
@pin_select_cache[klass] ||= pin_class_hash.select { |key, _| key <= klass }.values.flatten
|
|
41
54
|
end
|
|
42
55
|
|
|
43
56
|
# A hash representing the state of the source map's API.
|
|
@@ -47,7 +60,7 @@ module Solargraph
|
|
|
47
60
|
#
|
|
48
61
|
# @return [Integer]
|
|
49
62
|
def api_hash
|
|
50
|
-
@api_hash ||= (pins_by_class(Pin::Constant) + pins_by_class(Pin::Namespace).select { |pin| pin.namespace.to_s > '' } + pins_by_class(Pin::Reference) + pins_by_class(Pin::Method).map(&:node)).hash
|
|
63
|
+
@api_hash ||= (pins_by_class(Pin::Constant) + pins_by_class(Pin::Namespace).select { |pin| pin.namespace.to_s > '' } + pins_by_class(Pin::Reference) + pins_by_class(Pin::Method).map(&:node) + locals).hash
|
|
51
64
|
end
|
|
52
65
|
|
|
53
66
|
# @return [String]
|
|
@@ -66,8 +79,8 @@ module Solargraph
|
|
|
66
79
|
end
|
|
67
80
|
|
|
68
81
|
# @return [Environ]
|
|
69
|
-
def
|
|
70
|
-
@
|
|
82
|
+
def conventions_environ
|
|
83
|
+
@conventions_environ ||= Environ.new
|
|
71
84
|
end
|
|
72
85
|
|
|
73
86
|
# all pins except Solargraph::Pin::Reference::Reference
|
|
@@ -113,23 +126,12 @@ module Solargraph
|
|
|
113
126
|
# @param line [Integer]
|
|
114
127
|
# @param character [Integer]
|
|
115
128
|
# @return [Pin::Namespace,Pin::Method,Pin::Block]
|
|
116
|
-
def
|
|
117
|
-
_locate_pin line, character, Pin::
|
|
129
|
+
def locate_closure_pin line, character
|
|
130
|
+
_locate_pin line, character, Pin::Closure
|
|
118
131
|
end
|
|
119
132
|
|
|
120
|
-
# @
|
|
121
|
-
|
|
122
|
-
def try_merge! other_map
|
|
123
|
-
return false if pins.length != other_map.pins.length || locals.length != other_map.locals.length || requires.map(&:name).uniq.sort != other_map.requires.map(&:name).uniq.sort
|
|
124
|
-
pins.each_index do |i|
|
|
125
|
-
return false unless pins[i].try_merge!(other_map.pins[i])
|
|
126
|
-
end
|
|
127
|
-
locals.each_index do |i|
|
|
128
|
-
return false unless locals[i].try_merge!(other_map.locals[i])
|
|
129
|
-
end
|
|
130
|
-
@source = other_map.source
|
|
131
|
-
true
|
|
132
|
-
end
|
|
133
|
+
# @deprecated Please use locate_closure_pin instead
|
|
134
|
+
alias locate_block_pin locate_closure_pin
|
|
133
135
|
|
|
134
136
|
# @param name [String]
|
|
135
137
|
# @return [Array<Location>]
|
|
@@ -161,27 +163,32 @@ module Solargraph
|
|
|
161
163
|
SourceMap.map(source)
|
|
162
164
|
end
|
|
163
165
|
|
|
166
|
+
# @deprecated
|
|
164
167
|
# @param source [Source]
|
|
165
168
|
# @return [SourceMap]
|
|
166
169
|
def map source
|
|
167
|
-
|
|
168
|
-
new(source, *result)
|
|
170
|
+
new(source)
|
|
169
171
|
end
|
|
170
172
|
end
|
|
171
173
|
|
|
172
174
|
private
|
|
173
175
|
|
|
174
176
|
# @return [Array<Pin::Base>]
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
attr_writer :convention_pins
|
|
178
|
+
|
|
179
|
+
# @return [Hash{Class<Pin::Base> => Array<Pin::Base>}]
|
|
180
|
+
def pin_class_hash
|
|
181
|
+
@pin_class_hash ||= pins.to_set.classify(&:class).transform_values(&:to_a)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# @return [Data]
|
|
185
|
+
def data
|
|
186
|
+
@data ||= Data.new(source)
|
|
177
187
|
end
|
|
178
188
|
|
|
179
|
-
# @param pins [Array<Pin::Base>]
|
|
180
189
|
# @return [Array<Pin::Base>]
|
|
181
|
-
def convention_pins
|
|
182
|
-
|
|
183
|
-
@document_symbols = nil
|
|
184
|
-
@convention_pins = pins
|
|
190
|
+
def convention_pins
|
|
191
|
+
@convention_pins || []
|
|
185
192
|
end
|
|
186
193
|
|
|
187
194
|
# @param line [Integer]
|
|
@@ -50,6 +50,8 @@ module Solargraph
|
|
|
50
50
|
# @param inferred [ComplexType]
|
|
51
51
|
# @return [Boolean]
|
|
52
52
|
def any_types_match? api_map, expected, inferred
|
|
53
|
+
expected = expected.downcast_to_literal_if_possible
|
|
54
|
+
inferred = inferred.downcast_to_literal_if_possible
|
|
53
55
|
return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
|
|
54
56
|
# walk through the union expected type and see if any members
|
|
55
57
|
# of the union match the inferred type
|
|
@@ -71,6 +73,8 @@ module Solargraph
|
|
|
71
73
|
# @param expected [ComplexType]
|
|
72
74
|
# @return [Boolean]
|
|
73
75
|
def all_types_match? api_map, inferred, expected
|
|
76
|
+
expected = expected.downcast_to_literal_if_possible
|
|
77
|
+
inferred = inferred.downcast_to_literal_if_possible
|
|
74
78
|
return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
|
|
75
79
|
inferred.each do |inf|
|
|
76
80
|
next if inf.duck_type?
|
|
@@ -9,7 +9,8 @@ module Solargraph
|
|
|
9
9
|
normal: 0,
|
|
10
10
|
typed: 1,
|
|
11
11
|
strict: 2,
|
|
12
|
-
strong: 3
|
|
12
|
+
strong: 3,
|
|
13
|
+
alpha: 4
|
|
13
14
|
}.freeze
|
|
14
15
|
|
|
15
16
|
# @return [Symbol]
|
|
@@ -19,7 +20,8 @@ module Solargraph
|
|
|
19
20
|
attr_reader :rank
|
|
20
21
|
|
|
21
22
|
# @param level [Symbol]
|
|
22
|
-
|
|
23
|
+
# @param overrides [Hash{Symbol => Symbol}]
|
|
24
|
+
def initialize level, overrides
|
|
23
25
|
@rank = if LEVELS.key?(level)
|
|
24
26
|
LEVELS[level]
|
|
25
27
|
else
|
|
@@ -27,30 +29,55 @@ module Solargraph
|
|
|
27
29
|
0
|
|
28
30
|
end
|
|
29
31
|
@level = LEVELS[LEVELS.values.index(@rank)]
|
|
32
|
+
@overrides = overrides
|
|
30
33
|
end
|
|
31
34
|
|
|
32
35
|
def ignore_all_undefined?
|
|
33
|
-
|
|
36
|
+
!report_undefined?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def report_undefined?
|
|
40
|
+
report?(:report_undefined, :strict)
|
|
34
41
|
end
|
|
35
42
|
|
|
36
43
|
def validate_consts?
|
|
37
|
-
|
|
44
|
+
report?(:validate_consts, :strict)
|
|
38
45
|
end
|
|
39
46
|
|
|
40
47
|
def validate_calls?
|
|
41
|
-
|
|
48
|
+
report?(:validate_calls, :strict)
|
|
42
49
|
end
|
|
43
50
|
|
|
44
51
|
def require_type_tags?
|
|
45
|
-
|
|
52
|
+
report?(:validate_type_tags, :strong)
|
|
46
53
|
end
|
|
47
54
|
|
|
48
55
|
def must_tag_or_infer?
|
|
49
|
-
|
|
56
|
+
report?(:must_tag_or_infer, :strict)
|
|
50
57
|
end
|
|
51
58
|
|
|
52
59
|
def validate_tags?
|
|
53
|
-
|
|
60
|
+
report?(:validate_tags, :typed)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def require_all_return_types_match_inferred?
|
|
64
|
+
report?(:require_all_return_types_match_inferred, :alpha)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# We keep this at strong because if you added an @ sg-ignore to
|
|
68
|
+
# address a strong-level issue, then ran at a lower level, you'd
|
|
69
|
+
# get a false positive - we don't run stronger level checks than
|
|
70
|
+
# requested for performance reasons
|
|
71
|
+
def validate_sg_ignores?
|
|
72
|
+
report?(:validate_sg_ignores, :strong)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
# @param type [Symbol]
|
|
78
|
+
# @param level [Symbol]
|
|
79
|
+
def report?(type, level)
|
|
80
|
+
rank >= LEVELS[@overrides.fetch(type, level)]
|
|
54
81
|
end
|
|
55
82
|
end
|
|
56
83
|
end
|