solargraph 0.44.2 → 0.44.3
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/CHANGELOG.md +5 -0
- data/lib/solargraph/parser/rubyvm/class_methods.rb +0 -10
- data/lib/solargraph/pin/parameter.rb +1 -4
- data/lib/solargraph/type_checker.rb +11 -1
- data/lib/solargraph/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8ff2cf72eecc4a36760b60491151cbedb17e11ac665ef20609e0291b2e4b64e
|
4
|
+
data.tar.gz: ea35a1bb406f5c185df0943b483676360b3c0e3df9f4fb476a246174dc37b542
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 152ad48cda1f002d12f4e27e11bbc090be72a113246521d1a03e4a82f0d920e885f39cf8eef46d12c588d66afe0b4835cb16b2192ceaa16f1ad6d8c9631a9677
|
7
|
+
data.tar.gz: ef1f6ecfa30e9eb58080cdf09c94e1611f35f8f2f64ecc8fcfb0e359aa4b95551cf5cfb7d1ec749e023bcd9045118bb33fc0bc1756c4449aa8959ce6aa73b6d8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.44.3 - January 22, 2022
|
2
|
+
- TypeChecker validates aliased namespaces (#497)
|
3
|
+
- Always use reference YARD tags when resolving param types (#515) (#516)
|
4
|
+
- Skip method aliases in strict type checking
|
5
|
+
|
1
6
|
## 0.44.2 - November 23, 2021
|
2
7
|
- Scope local variables in class_eval blocks (#503)
|
3
8
|
- Fix invalid UTF-8 in node comments (#504)
|
@@ -29,16 +29,6 @@ module Solargraph
|
|
29
29
|
NodeProcessor.process(source.node, Region.new(source: source))
|
30
30
|
end
|
31
31
|
|
32
|
-
# def returns_from node
|
33
|
-
# return [] unless Parser.is_ast_node?(node)
|
34
|
-
# if node.type == :SCOPE
|
35
|
-
# # node.children.select { |n| n.is_a?(RubyVM::AbstractSyntaxTree::Node) }.map { |n| DeepInference.get_return_nodes(n) }.flatten
|
36
|
-
# DeepInference.get_return_nodes(node.children[2])
|
37
|
-
# else
|
38
|
-
# DeepInference.get_return_nodes(node)
|
39
|
-
# end
|
40
|
-
# end
|
41
|
-
|
42
32
|
def references source, name
|
43
33
|
if name.end_with?("=")
|
44
34
|
reg = /#{Regexp.escape name[0..-2]}\s*=/
|
@@ -145,10 +145,7 @@ module Solargraph
|
|
145
145
|
# meths.shift # Ignore the first one
|
146
146
|
meths.each do |meth|
|
147
147
|
found = nil
|
148
|
-
params = meth.docstring.tags(:param)
|
149
|
-
if params.empty?
|
150
|
-
params = see_reference(docstring, api_map)
|
151
|
-
end
|
148
|
+
params = meth.docstring.tags(:param) + see_reference(docstring, api_map)
|
152
149
|
params.each do |p|
|
153
150
|
next unless p.name == name
|
154
151
|
found = p
|
@@ -84,12 +84,13 @@ module Solargraph
|
|
84
84
|
# @param pin [Pin::Method]
|
85
85
|
# @return [Array<Problem>]
|
86
86
|
def method_return_type_problems_for pin
|
87
|
+
return [] if pin.is_a?(Pin::MethodAlias)
|
87
88
|
result = []
|
88
89
|
declared = pin.typify(api_map).self_to(pin.full_context.namespace)
|
89
90
|
if declared.undefined?
|
90
91
|
if pin.return_type.undefined? && rules.require_type_tags?
|
91
92
|
result.push Problem.new(pin.location, "Missing @return tag for #{pin.path}", pin: pin)
|
92
|
-
elsif pin.return_type.defined?
|
93
|
+
elsif pin.return_type.defined? && !resolved_constant?(pin)
|
93
94
|
result.push Problem.new(pin.location, "Unresolved return type #{pin.return_type} for #{pin.path}", pin: pin)
|
94
95
|
elsif rules.must_tag_or_infer? && pin.probe(api_map).undefined?
|
95
96
|
result.push Problem.new(pin.location, "Untyped method #{pin.path} could not be inferred")
|
@@ -111,6 +112,15 @@ module Solargraph
|
|
111
112
|
result
|
112
113
|
end
|
113
114
|
|
115
|
+
# @todo This is not optimal. A better solution would probably be to mix
|
116
|
+
# namespace alias into types at the ApiMap level.
|
117
|
+
#
|
118
|
+
# @param pin [Pin::Base]
|
119
|
+
# @return [Boolean]
|
120
|
+
def resolved_constant? pin
|
121
|
+
api_map.get_constants('', pin.binder.tag).any? { |pin| pin.name == pin.return_type.namespace && ['Class', 'Module'].include?(pin.return_type.name) }
|
122
|
+
end
|
123
|
+
|
114
124
|
def virtual_pin? pin
|
115
125
|
pin.location && source_map.source.comment_at?(pin.location.range.ending)
|
116
126
|
end
|
data/lib/solargraph/version.rb
CHANGED
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.44.
|
4
|
+
version: 0.44.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|