solargraph 0.38.3 → 0.38.4

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: b938f9be15a1bf0d05152f83b00bb4b04018b37b3da1ab921963f57d7a837484
4
- data.tar.gz: 8dc52f3e77661d53fd107610e33441f94cab71c4529e47559cbcb055bf04fddd
3
+ metadata.gz: fee6de28dda75ac732866b6ca8e68f52d3b5c4216feac100cbe3196280059f34
4
+ data.tar.gz: f8f51dc88c5aff911673a186d2c7ddb60a9e31cd084318741f2cae237091607a
5
5
  SHA512:
6
- metadata.gz: b5d48c9e67760aca62df62495ce1ad372327f556462498e7aaf9149eabc047be796a8c59dd5ea2874aa88827fcc204059f18f74f32ed4ed4912e49c7986ae783
7
- data.tar.gz: 27fa823a0b024ee78aafbfc69d6ea555351155bf6a963abcd9f94a1d15e79ca630f5b32cb0acfe97192e5ef0e0d8d730d34f4bcd9091cb91c699f8684930554e
6
+ metadata.gz: 78f433fe6a05b703945d53f74ef2b19c24e23c1aca77fcc71c0c6a88499e6c7900e275cdc43913cd51ff3a3fda7785885ece07e68daa18c7eae1f705dc990974
7
+ data.tar.gz: 313f01cdc3336c46a1ff6659c84b393192f0b7fab112ae479285f4e7a4b0866da61e47bbb8c2e41638beb931a92e408e2a285d841071a47f006ca16281d3a16c
data/Gemfile CHANGED
@@ -5,5 +5,3 @@ gemspec name: 'solargraph'
5
5
  # Local gemfile for development tools, etc.
6
6
  local_gemfile = File.expand_path(".Gemfile", __dir__)
7
7
  instance_eval File.read local_gemfile if File.exist? local_gemfile
8
-
9
- gem 'readapt', '~> 1.0'
@@ -121,7 +121,7 @@ module Solargraph
121
121
  pins.concat implicit.overrides
122
122
  br = reqs.include?('bundler/require') ? require_from_bundle(bundle.workspace.directory) : {}
123
123
  reqs.merge br.keys
124
- yard_map.change(reqs.to_a, br)
124
+ yard_map.change(reqs.to_a, br, bundle.workspace.gemnames)
125
125
  new_store = Store.new(pins + yard_map.pins)
126
126
  @mutex.synchronize {
127
127
  @cache.clear
@@ -45,7 +45,7 @@ module Solargraph
45
45
  if this_link && this_link != last_link && this_link != 'undefined'
46
46
  result.push this_link
47
47
  end
48
- result.push pin.documentation
48
+ result.push pin.documentation unless result.last && result.last.end_with?(pin.documentation)
49
49
  last_link = this_link
50
50
  end
51
51
  result.join("\n\n")
@@ -19,7 +19,11 @@ module Solargraph
19
19
  end
20
20
  parts.push pin.detail.gsub(':', '\\:') unless pin.is_a?(Pin::Namespace) || pin.detail.nil?
21
21
  parts.push pin.documentation unless pin.documentation.nil? || pin.documentation.empty?
22
- contents.push parts.join("\n\n") unless parts.empty?
22
+ unless parts.empty?
23
+ data = parts.join("\n\n")
24
+ next if contents.last && contents.last.end_with?(data)
25
+ contents.push data
26
+ end
23
27
  last_link = this_link unless this_link.nil?
24
28
  end
25
29
  set_result(
@@ -23,8 +23,6 @@ module Solargraph
23
23
 
24
24
  @@inference_stack = []
25
25
  @@inference_depth = 0
26
- @@last_api_map = nil
27
- @@pin_cache = {}
28
26
 
29
27
  UNDEFINED_CALL = Chain::Call.new('<undefined>')
30
28
  UNDEFINED_CONSTANT = Chain::Constant.new('<undefined>')
@@ -123,9 +121,7 @@ module Solargraph
123
121
  # Avoid infinite recursion
124
122
  next if @@inference_stack.include?(pin)
125
123
  @@inference_stack.push pin
126
- # puts " Inferring #{pin.class} | #{pin.path} | #{pin.name} | #{pin.location ? pin.location.to_hash : pin.location}"
127
- # type = pin.probe(api_map)
128
- type = remember_or_probe(pin, api_map)
124
+ type = pin.probe(api_map)
129
125
  @@inference_stack.pop
130
126
  break if type.defined?
131
127
  end
@@ -163,12 +159,6 @@ module Solargraph
163
159
  end
164
160
  end
165
161
  end
166
-
167
- def remember_or_probe pin, api_map
168
- @@pin_cache.clear if @@last_api_map != api_map
169
- @@last_api_map = api_map
170
- @@pin_cache[pin] ||= pin.probe(api_map)
171
- end
172
162
  end
173
163
  end
174
164
  end
@@ -11,7 +11,7 @@ module Solargraph
11
11
  # @param type [String]
12
12
  def initialize type
13
13
  @type = type
14
- @complex_type = ComplexType.try_parse(type).first
14
+ @complex_type = ComplexType.try_parse(type)
15
15
  end
16
16
 
17
17
  def resolve api_map, name_pin, locals
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.38.3'
4
+ VERSION = '0.38.4'
5
5
  end
@@ -11,12 +11,22 @@ module Solargraph
11
11
  # @return [String]
12
12
  attr_reader :directory
13
13
 
14
+ # The require paths associated with the workspace.
15
+ #
16
+ # @return [Array<String>]
17
+ attr_reader :require_paths
18
+
19
+ # @return [Array<String>]
20
+ attr_reader :gemnames
21
+
14
22
  # @param directory [String]
15
23
  # @param config [Config, nil]
16
24
  def initialize directory = '', config = nil
17
25
  @directory = directory
18
26
  @config = config
19
27
  load_sources
28
+ @gemnames = []
29
+ @require_paths = generate_require_paths
20
30
  end
21
31
 
22
32
  # @return [Solargraph::Workspace::Config]
@@ -85,13 +95,6 @@ module Solargraph
85
95
  source_hash[filename]
86
96
  end
87
97
 
88
- # The require paths associated with the workspace.
89
- #
90
- # @return [Array<String>]
91
- def require_paths
92
- @require_paths ||= generate_require_paths
93
- end
94
-
95
98
  # True if the path resolves to a file in the workspace's require paths.
96
99
  #
97
100
  # @param path [String]
@@ -164,6 +167,7 @@ module Solargraph
164
167
  # @type [Gem::Specification]
165
168
  spec = eval(File.read(file), binding, file)
166
169
  next unless Gem::Specification === spec
170
+ @gemnames.push spec.name
167
171
  result.concat(spec.require_paths.map { |path| File.join(base, path) })
168
172
  rescue Exception => e
169
173
  # Don't die if we have an error during eval-ing a gem spec.
@@ -50,6 +50,7 @@ module Solargraph
50
50
  @gem_paths = {}
51
51
  @stdlib_namespaces = []
52
52
  @gemset = gemset
53
+ @source_gems = []
53
54
  process_requires
54
55
  yardocs.uniq!
55
56
  end
@@ -67,13 +68,14 @@ module Solargraph
67
68
  # @param new_requires [Array<String>]
68
69
  # @param new_gemset [Hash{String => String}]
69
70
  # @return [Boolean]
70
- def change new_requires, new_gemset
71
- if new_requires.uniq.sort == required.uniq.sort && new_gemset == gemset
71
+ def change new_requires, new_gemset, source_gems = []
72
+ if new_requires.uniq.sort == required.uniq.sort && new_gemset == gemset && @source_gems.uniq.sort == source_gems.uniq.sort
72
73
  false
73
74
  else
74
75
  required.clear
75
76
  required.concat new_requires
76
77
  @gemset = new_gemset
78
+ @source_gems = source_gems
77
79
  process_requires
78
80
  true
79
81
  end
@@ -181,6 +183,10 @@ module Solargraph
181
183
  result = []
182
184
  begin
183
185
  spec = spec_for_require(r)
186
+ if @source_gems.include?(spec.name)
187
+ next
188
+ end
189
+ next if @gem_paths.key?(spec.name)
184
190
  yd = yardoc_file_for_spec(spec)
185
191
  # YARD detects gems for certain libraries that do not have a yardoc
186
192
  # but exist in the stdlib. `fileutils` is an example. Treat those
@@ -252,6 +258,9 @@ module Solargraph
252
258
  result = []
253
259
  (spec.dependencies - spec.development_dependencies).each do |dep|
254
260
  begin
261
+ if @source_gems.include?(dep.name)
262
+ next
263
+ end
255
264
  depspec = Gem::Specification.find_by_name(dep.name)
256
265
  next if depspec.nil? || @gem_paths.key?(depspec.name)
257
266
  @gem_paths[depspec.name] = depspec.full_gem_path
@@ -304,7 +313,10 @@ module Solargraph
304
313
  # @return [Gem::Specification]
305
314
  def spec_for_require path
306
315
  spec = Gem::Specification.find_by_path(path) || Gem::Specification.find_by_name(path.split('/').first)
307
- if @gemset[spec.name]
316
+ # Avoid loading the spec again if it's going to be skipped anyway
317
+ return spec if @source_gems.include?(spec.name)
318
+ # Avoid loading the spec again if it's alredy the correct version
319
+ if @gemset[spec.name] && @gemset[spec.name] != spec.version
308
320
  begin
309
321
  return Gem::Specification.find_by_name(spec.name, "= #{@gemset[spec.name]}")
310
322
  rescue Gem::LoadError
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.38.3
4
+ version: 0.38.4
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-01-20 00:00:00.000000000 Z
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport