solargraph 0.29.1 → 0.29.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4f5e9883da2bf043ec933e73742ac8c6978909a921363752cf5f2d169cde3b2
4
- data.tar.gz: 04b1c7dd1ad9b07733203a9d9b4cdb055ddae3b50dc1cb6ef0866ea6de351951
3
+ metadata.gz: be265fd0b2ea3120f015047342056b5f09b4b94f24ff2929c951932055d03ed1
4
+ data.tar.gz: 963b915e3bd728fe9e6664ca124855d72eb219c9008b4a30b212703cbd32314f
5
5
  SHA512:
6
- metadata.gz: ba354000fecb790560b0daeb734ae82d83849a6f07b06e28b623c6db5138124606df8f1e101ad8d2ce8245f013d4690d1421b89c10a45cc279e815cc9eeb5e3d
7
- data.tar.gz: 4619ea14518c56476503c6f19cb709cb2ad6ee8b5eb9071f471e8a37b589abddd8addcf2b1285099841a621375041e66aa7662cf798564dc9fcb644f11068042
6
+ metadata.gz: 318104cf900c2f984a03a31a35034dae0552a0a097731c1cf0b62af95d871b717984502dc0cfccbeb28f6745290f1c6188efd06483597b24b99d7fd7355cdc6f
7
+ data.tar.gz: ecf023d2a603e78970ed3770fc0f7054701845dd6f0874173308c2243c618ec52664e1c839b2a0fc035f0a28782244ab972cb24530e7d32efddf620b10b146e2
@@ -39,10 +39,7 @@ module Solargraph
39
39
  @store = Store.new(pins + YardMap.new.pins)
40
40
  @unresolved_requires = []
41
41
  }
42
- resolved = resolve_method_aliases
43
- unless resolved.nil?
44
- @mutex.synchronize { @store = Store.new(resolved) }
45
- end
42
+ resolve_method_aliases
46
43
  self
47
44
  end
48
45
 
@@ -65,7 +62,8 @@ module Solargraph
65
62
  # @return [self]
66
63
  def catalog bundle
67
64
  new_map_hash = {}
68
- unmerged = false
65
+ # Bundle always needs to be merged if it adds or removes sources
66
+ merged = (bundle.sources.length == source_map_hash.values.length)
69
67
  bundle.sources.each do |source|
70
68
  if source_map_hash.has_key?(source.filename)
71
69
  if source_map_hash[source.filename].code == source.code
@@ -76,16 +74,16 @@ module Solargraph
76
74
  new_map_hash[source.filename] = source_map_hash[source.filename]
77
75
  else
78
76
  new_map_hash[source.filename] = map
79
- unmerged = true
77
+ merged = false
80
78
  end
81
79
  end
82
80
  else
83
81
  map = Solargraph::SourceMap.map(source)
84
82
  new_map_hash[source.filename] = map
85
- unmerged = true
83
+ merged = false
86
84
  end
87
85
  end
88
- return self unless unmerged
86
+ return self if merged
89
87
  pins = []
90
88
  reqs = []
91
89
  # @param map [SourceMap]
@@ -114,10 +112,7 @@ module Solargraph
114
112
  @store = new_store
115
113
  @unresolved_requires = yard_map.unresolved_requires
116
114
  }
117
- resolved = resolve_method_aliases
118
- unless resolved.nil?
119
- @mutex.synchronize { @store = Store.new(resolved) }
120
- end
115
+ resolve_method_aliases
121
116
  self
122
117
  end
123
118
 
@@ -641,7 +636,7 @@ module Solargraph
641
636
  false
642
637
  end
643
638
 
644
- # @return [Array<Pin::Base>, nil]
639
+ # @return [void]
645
640
  def resolve_method_aliases
646
641
  aliased = false
647
642
  result = pins.map do |pin|
@@ -652,7 +647,7 @@ module Solargraph
652
647
  Pin::Method.new(pin.location, pin.namespace, pin.name, origin.comments, origin.scope, origin.visibility, origin.parameters)
653
648
  end
654
649
  return nil unless aliased
655
- result
650
+ @mutex.synchronize { @store = Store.new(result) }
656
651
  end
657
652
  end
658
653
  end
@@ -4,65 +4,68 @@ module Solargraph
4
4
  # parser nodes.
5
5
  #
6
6
  module NodeProcessor
7
- autoload :Base, 'solargraph/source_map/node_processor/base'
8
- autoload :BeginNode, 'solargraph/source_map/node_processor/begin_node'
9
- autoload :DefNode, 'solargraph/source_map/node_processor/def_node'
10
- autoload :DefsNode, 'solargraph/source_map/node_processor/defs_node'
11
- autoload :SendNode, 'solargraph/source_map/node_processor/send_node'
12
- autoload :NamespaceNode, 'solargraph/source_map/node_processor/namespace_node'
13
- autoload :SclassNode, 'solargraph/source_map/node_processor/sclass_node'
14
- autoload :ModuleNode, 'solargraph/source_map/node_processor/module_node'
15
- autoload :IvasgnNode, 'solargraph/source_map/node_processor/ivasgn_node'
16
- autoload :CvasgnNode, 'solargraph/source_map/node_processor/cvasgn_node'
17
- autoload :LvasgnNode, 'solargraph/source_map/node_processor/lvasgn_node'
18
- autoload :GvasgnNode, 'solargraph/source_map/node_processor/gvasgn_node'
19
- autoload :CasgnNode, 'solargraph/source_map/node_processor/casgn_node'
20
- autoload :AliasNode, 'solargraph/source_map/node_processor/alias_node'
21
- autoload :ArgsNode, 'solargraph/source_map/node_processor/args_node'
22
- autoload :BlockNode, 'solargraph/source_map/node_processor/block_node'
23
- autoload :OrasgnNode, 'solargraph/source_map/node_processor/orasgn_node'
24
- autoload :SymNode, 'solargraph/source_map/node_processor/sym_node'
7
+ autoload :Base, 'solargraph/source_map/node_processor/base'
8
+ autoload :BeginNode, 'solargraph/source_map/node_processor/begin_node'
9
+ autoload :DefNode, 'solargraph/source_map/node_processor/def_node'
10
+ autoload :DefsNode, 'solargraph/source_map/node_processor/defs_node'
11
+ autoload :SendNode, 'solargraph/source_map/node_processor/send_node'
12
+ autoload :NamespaceNode, 'solargraph/source_map/node_processor/namespace_node'
13
+ autoload :SclassNode, 'solargraph/source_map/node_processor/sclass_node'
14
+ autoload :ModuleNode, 'solargraph/source_map/node_processor/module_node'
15
+ autoload :IvasgnNode, 'solargraph/source_map/node_processor/ivasgn_node'
16
+ autoload :CvasgnNode, 'solargraph/source_map/node_processor/cvasgn_node'
17
+ autoload :LvasgnNode, 'solargraph/source_map/node_processor/lvasgn_node'
18
+ autoload :GvasgnNode, 'solargraph/source_map/node_processor/gvasgn_node'
19
+ autoload :CasgnNode, 'solargraph/source_map/node_processor/casgn_node'
20
+ autoload :AliasNode, 'solargraph/source_map/node_processor/alias_node'
21
+ autoload :ArgsNode, 'solargraph/source_map/node_processor/args_node'
22
+ autoload :BlockNode, 'solargraph/source_map/node_processor/block_node'
23
+ autoload :OrasgnNode, 'solargraph/source_map/node_processor/orasgn_node'
24
+ autoload :SymNode, 'solargraph/source_map/node_processor/sym_node'
25
25
 
26
26
  class << self
27
27
  @@processors ||= {}
28
28
 
29
29
  private
30
30
 
31
- def register node, cls
32
- @@processors[node] = cls
31
+ # Register a processor for a node type.
32
+ #
33
+ # @param type [Symbol]
34
+ # @param cls [Class<NodeProcessor::Base>]
35
+ # @return [Class<NodeProcessor::Base>]
36
+ def register type, cls
37
+ @@processors[type] = cls
33
38
  end
34
39
  end
35
40
 
36
- register :source, BeginNode
37
- register :begin, BeginNode
41
+ register :source, BeginNode
42
+ register :begin, BeginNode
38
43
  register :kwbegin, BeginNode
39
44
  # # @todo Is this the best way to handle rescue nodes?
40
- register :rescue, BeginNode
45
+ register :rescue, BeginNode
41
46
  register :resbody, BeginNode
42
- register :def, DefNode
43
- register :defs, DefsNode
44
- register :send, SendNode
45
- register :class, NamespaceNode
46
- register :module, NamespaceNode
47
- register :sclass, SclassNode
48
- register :ivasgn, IvasgnNode
49
- register :cvasgn, CvasgnNode
50
- register :lvasgn, LvasgnNode
51
- register :gvasgn, GvasgnNode
52
- register :casgn, CasgnNode
53
- register :alias, AliasNode
54
- register :args, ArgsNode
55
- register :block, BlockNode
47
+ register :def, DefNode
48
+ register :defs, DefsNode
49
+ register :send, SendNode
50
+ register :class, NamespaceNode
51
+ register :module, NamespaceNode
52
+ register :sclass, SclassNode
53
+ register :ivasgn, IvasgnNode
54
+ register :cvasgn, CvasgnNode
55
+ register :lvasgn, LvasgnNode
56
+ register :gvasgn, GvasgnNode
57
+ register :casgn, CasgnNode
58
+ register :alias, AliasNode
59
+ register :args, ArgsNode
60
+ register :block, BlockNode
56
61
  register :or_asgn, OrasgnNode
57
- register :sym, SymNode
58
-
59
- module_function
62
+ register :sym, SymNode
60
63
 
61
64
  # @param node [Parser::AST::Node]
62
65
  # @param region [Region]
63
66
  # @param pins [Array<Pin::Base>]
64
67
  # @return [Array<Pin::Base>]
65
- def process node, region = Region.new(nil, '', :instance, :public, []), pins = []
68
+ def self.process node, region = Region.new(nil, '', :instance, :public, []), pins = []
66
69
  pins.push Pin::Namespace.new(region.source.location, '', '', nil, :class, :public) if pins.empty?
67
70
  return pins unless node.is_a?(Parser::AST::Node) #&& @@processors.key?(node.type)
68
71
  klass = @@processors[node.type] || BeginNode
@@ -82,7 +82,7 @@ module Solargraph
82
82
  # @todo What to do about references?
83
83
  node.children[2..-1].each do |x|
84
84
  cn = x.children[0].to_s
85
- ref = pins.select{|p| p.namespace == region.namespace and p.name == cn}.first
85
+ ref = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.namespace == region.namespace && p.name == cn}.first
86
86
  unless ref.nil?
87
87
  pins.delete ref
88
88
  mm = Solargraph::Pin::Method.new(ref.location, ref.namespace, ref.name, ref.comments, :class, :public, ref.parameters, ref.node)
@@ -104,7 +104,7 @@ module Solargraph
104
104
  if node.children[2] && (node.children[2].type == :sym || node.children[2].type == :str)
105
105
  # @todo What to do about references?
106
106
  cn = node.children[2].children[0].to_s
107
- ref = pins.select{|p| p.namespace == region.namespace and p.name == cn}.first
107
+ ref = pins.select{|p| [Solargraph::Pin::Namespace, Solargraph::Pin::Constant].include?(p.class) && p.namespace == region.namespace && p.name == cn}.first
108
108
  unless ref.nil?
109
109
  pins.delete ref
110
110
  # Might be either a namespace or constant
@@ -133,7 +133,7 @@ module Solargraph
133
133
 
134
134
  def process_private_class_method
135
135
  if node.children[2].type == :sym || node.children[2].type == :str
136
- ref = pins.select{|p| p.namespace == region.namespace and p.name == node.children[2].children[0].to_s}.first
136
+ ref = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.namespace == region.namespace && p.name == node.children[2].children[0].to_s}.first
137
137
  unless ref.nil?
138
138
  pins.delete ref
139
139
  pins.push Solargraph::Pin::Method.new(ref.location, ref.namespace, ref.name, ref.comments, ref.scope, :private, ref.parameters, ref.node)
@@ -1,3 +1,3 @@
1
1
  module Solargraph
2
- VERSION = '0.29.1'
2
+ VERSION = '0.29.2'
3
3
  end
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.29.1
4
+ version: 0.29.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2018-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine