solargraph 0.11.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/solargraph/api_map.rb +45 -17
- data/lib/solargraph/code_map.rb +2 -2
- data/lib/solargraph/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10495d0e5d7c64f8529c0064a10c5a46de6618da
|
4
|
+
data.tar.gz: f96a938b6f90628d25221150b7bfbdca07a7bc39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f072292781a9e234c51b2de18531cd00e350569a6a28b4fbe4e8041d0dbdadba5429032d2f93a11faa963c7b7665cdd56049a1a62173372aac16ecdad165103d
|
7
|
+
data.tar.gz: 8fd69162b003ddfaeb338c0369b8285cf2828e6b250dafb030ee0d8b6efddc0db8c3e94d1d313a4b00f15bf97d27d8dd7b6c57418450691029af308c8960570b
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -15,9 +15,9 @@ module Solargraph
|
|
15
15
|
].freeze
|
16
16
|
|
17
17
|
MAPPABLE_NODES = [
|
18
|
-
|
19
|
-
:
|
20
|
-
:
|
18
|
+
:array, :hash, :str, :int, :float, :block, :class, :sclass, :module,
|
19
|
+
:def, :defs, :ivasgn, :gvasgn, :lvasgn, :cvasgn, :casgn, :or_asgn,
|
20
|
+
:const, :lvar, :args, :kwargs
|
21
21
|
].freeze
|
22
22
|
|
23
23
|
MAPPABLE_METHODS = [
|
@@ -25,6 +25,10 @@ module Solargraph
|
|
25
25
|
:attr_accessor, :private, :public, :protected
|
26
26
|
].freeze
|
27
27
|
|
28
|
+
METHODS_RETURNING_SELF = [
|
29
|
+
'clone', 'dup', 'freeze', 'taint', 'untaint'
|
30
|
+
]
|
31
|
+
|
28
32
|
include NodeMethods
|
29
33
|
include YardMethods
|
30
34
|
|
@@ -304,11 +308,13 @@ module Solargraph
|
|
304
308
|
if type.nil?
|
305
309
|
cmnt = get_comment_for(node)
|
306
310
|
if cmnt.nil?
|
307
|
-
|
311
|
+
name_i = (node.type == :casgn ? 1 : 0)
|
312
|
+
sig_i = (node.type == :casgn ? 2 : 1)
|
313
|
+
type = infer_literal_node_type(node.children[sig_i])
|
308
314
|
if type.nil?
|
309
|
-
sig = resolve_node_signature(node.children[
|
315
|
+
sig = resolve_node_signature(node.children[sig_i])
|
310
316
|
# Avoid infinite loops from variable assignments that reference themselves
|
311
|
-
return nil if node.children[
|
317
|
+
return nil if node.children[name_i].to_s == sig.split('.').first
|
312
318
|
type = infer_signature_type(sig, namespace)
|
313
319
|
end
|
314
320
|
else
|
@@ -570,31 +576,39 @@ module Solargraph
|
|
570
576
|
s = unpack_name(n.children[1])
|
571
577
|
meths += inner_get_methods(s, root, skip)
|
572
578
|
end
|
573
|
-
|
579
|
+
vis = [:public]
|
580
|
+
vis.push :private, :protected if namespace == root
|
581
|
+
meths += inner_get_methods_from_node(n, root, :class, skip, vis)
|
574
582
|
end
|
575
583
|
end
|
576
584
|
}
|
577
585
|
meths.uniq
|
578
586
|
end
|
579
587
|
|
580
|
-
def inner_get_methods_from_node node, root, skip
|
588
|
+
def inner_get_methods_from_node node, root, scope, skip, visibility, current_visibility = :public
|
581
589
|
meths = []
|
582
590
|
node.children.each { |c|
|
583
591
|
if c.kind_of?(AST::Node)
|
584
|
-
if c.type == :
|
592
|
+
if c.kind_of?(AST::Node) and c.type == :send and [:public, :protected, :private].include?(c.children[1])
|
593
|
+
current_visibility = c.children[1]
|
594
|
+
elsif (c.type == :defs and scope == :class) or (c.type == :def and scope == :instance)
|
595
|
+
next unless visibility.include?(current_visibility)
|
585
596
|
docstring = get_comment_for(c)
|
586
|
-
|
597
|
+
child_index = (scope == :class ? 1 : 0)
|
598
|
+
label = "#{c.children[child_index]}"
|
587
599
|
args = get_method_args(c)
|
588
|
-
if (c.children[
|
589
|
-
meths.push Suggestion.new(label, insert: c.children[
|
600
|
+
if (c.children[child_index].to_s[0].match(/[a-z_]/i) and c.children[child_index] != :def)
|
601
|
+
meths.push Suggestion.new(label, insert: c.children[child_index].to_s.gsub(/=/, ' = '), kind: Suggestion::METHOD, detail: 'Method', documentation: docstring, arguments: args)
|
590
602
|
end
|
603
|
+
elsif c.type == :sclass and scope == :class and c.children[0].type == :self
|
604
|
+
meths.concat inner_get_methods_from_node c, root, :instance, skip, visibility
|
591
605
|
elsif c.type == :send and c.children[1] == :include
|
592
606
|
# TODO: This might not be right. Should we be getting singleton methods
|
593
607
|
# from an include, or only from an extend?
|
594
608
|
i = unpack_name(c.children[2])
|
595
609
|
meths.concat inner_get_methods(i, root, skip) unless i == 'Kernel'
|
596
610
|
else
|
597
|
-
meths.concat inner_get_methods_from_node(c, root, skip)
|
611
|
+
meths.concat inner_get_methods_from_node(c, root, scope, skip, visibility, current_visibility)
|
598
612
|
end
|
599
613
|
end
|
600
614
|
}
|
@@ -686,17 +700,30 @@ module Solargraph
|
|
686
700
|
result.push Suggestion.new(k, kind: kind, detail: detail)
|
687
701
|
}
|
688
702
|
nodes = get_namespace_nodes(fqns)
|
689
|
-
nodes.each
|
703
|
+
nodes.each do |n|
|
704
|
+
result.concat get_constant_nodes(n, fqns)
|
690
705
|
get_include_strings_from(n).each { |i|
|
691
706
|
result += inner_namespaces_in(i, fqns, skip)
|
692
707
|
}
|
693
|
-
|
708
|
+
end
|
694
709
|
end
|
695
710
|
end
|
696
711
|
end
|
697
712
|
result
|
698
713
|
end
|
699
714
|
|
715
|
+
def get_constant_nodes(node, fqns)
|
716
|
+
result = []
|
717
|
+
node.children.each do |n|
|
718
|
+
if n.kind_of?(AST::Node) and n.type == :casgn
|
719
|
+
cmnt = get_comment_for(n)
|
720
|
+
type = infer_assignment_node_type(n, fqns)
|
721
|
+
result.push Suggestion.new(n.children[1].to_s, kind: Suggestion::CONSTANT, documentation: cmnt, return_type: type)
|
722
|
+
end
|
723
|
+
end
|
724
|
+
result
|
725
|
+
end
|
726
|
+
|
700
727
|
def inner_get_instance_variables(node, namespace, scope)
|
701
728
|
arr = []
|
702
729
|
if node.kind_of?(AST::Node)
|
@@ -756,6 +783,7 @@ module Solargraph
|
|
756
783
|
while parts.length > 0 and !type.nil?
|
757
784
|
p = parts.shift
|
758
785
|
next if p.empty?
|
786
|
+
next if !type.nil? and !type.empty? and METHODS_RETURNING_SELF.include?(p)
|
759
787
|
if top and scope == :class
|
760
788
|
if p == 'self'
|
761
789
|
top = false
|
@@ -843,7 +871,7 @@ module Solargraph
|
|
843
871
|
return node if node.type == :args
|
844
872
|
type = node.type
|
845
873
|
children = []
|
846
|
-
if node.type == :class or node.type == :block
|
874
|
+
if node.type == :class or node.type == :block or node.type == :sclass
|
847
875
|
children += node.children[0, 2]
|
848
876
|
children += get_mappable_nodes(node.children[2..-1], comment_hash)
|
849
877
|
elsif node.type == :const or node.type == :args or node.type == :kwargs
|
@@ -857,7 +885,7 @@ module Solargraph
|
|
857
885
|
elsif node.type == :module
|
858
886
|
children += node.children[0, 1]
|
859
887
|
children += get_mappable_nodes(node.children[1..-1], comment_hash)
|
860
|
-
elsif node.type == :ivasgn or node.type == :gvasgn or node.type == :lvasgn or node.type == :cvasgn
|
888
|
+
elsif node.type == :ivasgn or node.type == :gvasgn or node.type == :lvasgn or node.type == :cvasgn or node.type == :casgn
|
861
889
|
children += node.children
|
862
890
|
elsif node.type == :send and node.children[1] == :include
|
863
891
|
children += node.children[0,3]
|
data/lib/solargraph/code_map.rb
CHANGED
@@ -553,7 +553,7 @@ module Solargraph
|
|
553
553
|
if local.type == :def
|
554
554
|
result += api_map.get_instance_methods(scope, visibility: [:public, :private, :protected])
|
555
555
|
else
|
556
|
-
result += api_map.get_methods(scope, visibility: [:public, :private, :protected])
|
556
|
+
result += api_map.get_methods(scope, scope, visibility: [:public, :private, :protected])
|
557
557
|
end
|
558
558
|
if local.type == :def or local.type == :defs
|
559
559
|
result += get_method_arguments_from local
|
@@ -581,7 +581,7 @@ module Solargraph
|
|
581
581
|
end
|
582
582
|
end
|
583
583
|
result = []
|
584
|
-
args = node.children[1]
|
584
|
+
args = node.children[(node.type == :def ? 1 : 2)]
|
585
585
|
return result unless args.kind_of?(AST::Node) and args.type == :args
|
586
586
|
args.children.each do |arg|
|
587
587
|
name = arg.children[0].to_s
|
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.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|