solargraph 0.53.1 → 0.53.2
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/api_map.rb +1 -1
- data/lib/solargraph/doc_map.rb +44 -21
- data/lib/solargraph/language_server/host/dispatch.rb +5 -1
- data/lib/solargraph/language_server/host.rb +2 -1
- data/lib/solargraph/library.rb +1 -1
- data/lib/solargraph/type_checker.rb +1 -0
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace.rb +14 -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: dd82572e0c8ca2d5e7477c4bbcd58fa66b318550a23b6944d8749f67913560e3
|
4
|
+
data.tar.gz: 79ba0becff2e00fbcc7139ec540e91db5dec195cf5ae557cdcf599026b11b964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 743c84f70a8d49f253f4fdf3e8b43a3061ad7cd6eec68fbbf592505d63d56666ae5654ca2664750a7963d43f5b131ff1c7bc52660266786d345c9a19b86856fa
|
7
|
+
data.tar.gz: 8accd71eec8ce6f5ccf3aa5efd692a3ff71ea35eabf125446fe533049df80bd84fb33bf73d0cdadd7914598d485ed1f013c7cc898575b1a34238c90e92d8318e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.53.2 - March 27, 2025
|
2
|
+
- Fix a self-type-related false-positive in strict typechecking (#834)
|
3
|
+
- DocMap fetches gem dependencies (#835)
|
4
|
+
- Use configured command path to spawn solargraph processes (#837)
|
5
|
+
|
1
6
|
## 0.53.1 - March 26, 2025
|
2
7
|
- Reject nil requires in live code (#831)
|
3
8
|
- RbsMap adds mixins to current namespace (#832)
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -64,7 +64,7 @@ module Solargraph
|
|
64
64
|
implicit.merge map.environ
|
65
65
|
end
|
66
66
|
unresolved_requires = (bench.external_requires + implicit.requires + bench.workspace.config.required).uniq
|
67
|
-
@doc_map = DocMap.new(unresolved_requires, []) # @todo Implement gem
|
67
|
+
@doc_map = DocMap.new(unresolved_requires, []) # @todo Implement gem preferences
|
68
68
|
@store = Store.new(@@core_map.pins + @doc_map.pins + implicit.pins + pins)
|
69
69
|
@unresolved_requires = @doc_map.unresolved_requires
|
70
70
|
@missing_docs = [] # @todo Implement missing docs
|
data/lib/solargraph/doc_map.rb
CHANGED
@@ -8,7 +8,7 @@ module Solargraph
|
|
8
8
|
attr_reader :requires
|
9
9
|
|
10
10
|
# @return [Array<Gem::Specification>]
|
11
|
-
attr_reader :
|
11
|
+
attr_reader :preferences
|
12
12
|
|
13
13
|
# @return [Array<Pin::Base>]
|
14
14
|
attr_reader :pins
|
@@ -17,10 +17,10 @@ module Solargraph
|
|
17
17
|
attr_reader :uncached_gemspecs
|
18
18
|
|
19
19
|
# @param requires [Array<String>]
|
20
|
-
# @param
|
21
|
-
def initialize(requires,
|
20
|
+
# @param preferences [Array<Gem::Specification>]
|
21
|
+
def initialize(requires, preferences)
|
22
22
|
@requires = requires.compact
|
23
|
-
@
|
23
|
+
@preferences = preferences.compact
|
24
24
|
generate
|
25
25
|
end
|
26
26
|
|
@@ -39,17 +39,11 @@ module Solargraph
|
|
39
39
|
@gems_in_memory ||= {}
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
# @return [Hash{String => Gem::Specification, nil}]
|
45
|
-
def required_gem_map
|
46
|
-
@required_gem_map ||= requires.to_h { |path| [path, resolve_path_to_gemspec(path)] }
|
42
|
+
def dependencies
|
43
|
+
@dependencies ||= (gemspecs.flat_map { |spec| fetch_dependencies(spec) } - gemspecs).to_set
|
47
44
|
end
|
48
45
|
|
49
|
-
|
50
|
-
def dependency_map
|
51
|
-
@dependency_map ||= dependencies.to_h { |gemspec| [gemspec.name, gemspec] }
|
52
|
-
end
|
46
|
+
private
|
53
47
|
|
54
48
|
# @return [void]
|
55
49
|
def generate
|
@@ -62,6 +56,17 @@ module Solargraph
|
|
62
56
|
try_stdlib_map path
|
63
57
|
end
|
64
58
|
end
|
59
|
+
dependencies.each { |dep| try_cache dep }
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [Hash{String => Gem::Specification, nil}]
|
63
|
+
def required_gem_map
|
64
|
+
@required_gem_map ||= requires.to_h { |path| [path, resolve_path_to_gemspec(path)] }
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return [Hash{String => Gem::Specification}]
|
68
|
+
def preference_map
|
69
|
+
@preference_map ||= preferences.to_h { |gemspec| [gemspec.name, gemspec] }
|
65
70
|
end
|
66
71
|
|
67
72
|
# @param gemspec [Gem::Specification]
|
@@ -123,16 +128,16 @@ module Solargraph
|
|
123
128
|
nil
|
124
129
|
end
|
125
130
|
end
|
126
|
-
|
131
|
+
gemspec_or_preference gemspec
|
132
|
+
end
|
127
133
|
|
128
|
-
|
129
|
-
|
134
|
+
# @param gemspec [Gem::Specification, nil]
|
135
|
+
# @return [Gem::Specification, nil]
|
136
|
+
def gemspec_or_preference gemspec
|
137
|
+
return gemspec unless gemspec && preference_map.key?(gemspec.name)
|
138
|
+
return gemspec if gemspec.version == preference_map[gemspec.name].version
|
130
139
|
|
131
|
-
|
132
|
-
else
|
133
|
-
Solargraph.logger.warn "Gem #{gemspec.name} is not an expected dependency"
|
134
|
-
gemspec
|
135
|
-
end
|
140
|
+
change_gemspec_version gemspec, preference_map[by_path.name].version
|
136
141
|
end
|
137
142
|
|
138
143
|
# @param gemspec [Gem::Specification]
|
@@ -144,5 +149,23 @@ module Solargraph
|
|
144
149
|
Solargraph.logger.info "Gem #{gemspec.name} version #{version} not found. Using #{gemspec.version} instead"
|
145
150
|
gemspec
|
146
151
|
end
|
152
|
+
|
153
|
+
# @param gemspec [Gem::Specification]
|
154
|
+
# @return [Array<Gem::Specification>]
|
155
|
+
def fetch_dependencies gemspec
|
156
|
+
only_runtime_dependencies(gemspec).each_with_object(Set.new) do |spec, deps|
|
157
|
+
Solargraph.logger.info "Adding #{spec.name} dependency for #{gemspec.name}"
|
158
|
+
dep = Gem::Specification.find_by_name(spec.name, spec.requirement)
|
159
|
+
deps.merge fetch_dependencies(dep) if deps.add?(dep)
|
160
|
+
rescue Gem::MissingSpecError
|
161
|
+
Solargraph.logger.warn "Gem dependency #{spec.name} #{spec.requirements} for #{gemspec.name} not found."
|
162
|
+
end.to_a
|
163
|
+
end
|
164
|
+
|
165
|
+
# @param gemspec [Gem::Specification]
|
166
|
+
# @return [Array<Gem::Dependency>]
|
167
|
+
def only_runtime_dependencies gemspec
|
168
|
+
gemspec.dependencies - gemspec.development_dependencies
|
169
|
+
end
|
147
170
|
end
|
148
171
|
end
|
@@ -95,6 +95,10 @@ module Solargraph
|
|
95
95
|
nil
|
96
96
|
end
|
97
97
|
|
98
|
+
def options
|
99
|
+
@options ||= {}.freeze
|
100
|
+
end
|
101
|
+
|
98
102
|
# Get a generic library for the given URI and attach the corresponding
|
99
103
|
# source.
|
100
104
|
#
|
@@ -109,7 +113,7 @@ module Solargraph
|
|
109
113
|
|
110
114
|
# @return [Library]
|
111
115
|
def generic_library
|
112
|
-
@generic_library ||= Solargraph::Library.new
|
116
|
+
@generic_library ||= Solargraph::Library.new(Solargraph::Workspace.new('', nil, options), nil)
|
113
117
|
end
|
114
118
|
end
|
115
119
|
end
|
@@ -292,7 +292,8 @@ module Solargraph
|
|
292
292
|
path = ''
|
293
293
|
path = normalize_separators(directory) unless directory.nil?
|
294
294
|
begin
|
295
|
-
|
295
|
+
workspace = Solargraph::Workspace.new(path, nil, options)
|
296
|
+
lib = Solargraph::Library.new(workspace, name)
|
296
297
|
libraries.push lib
|
297
298
|
async_library_map lib
|
298
299
|
rescue WorkspaceTooLargeError => e
|
data/lib/solargraph/library.rb
CHANGED
@@ -603,7 +603,7 @@ module Solargraph
|
|
603
603
|
|
604
604
|
logger.info "Caching #{spec.name} #{spec.version}"
|
605
605
|
Thread.new do
|
606
|
-
@cache_pid = Process.spawn(
|
606
|
+
@cache_pid = Process.spawn(workspace.command_path, 'cache', spec.name, spec.version.to_s)
|
607
607
|
Process.wait(@cache_pid)
|
608
608
|
logger.info "Cached #{spec.name} #{spec.version}"
|
609
609
|
@synchronized = false
|
@@ -333,6 +333,7 @@ module Solargraph
|
|
333
333
|
next
|
334
334
|
else
|
335
335
|
ptype = params.key?(par.name) ? params[par.name][:qualified] : ComplexType::UNDEFINED
|
336
|
+
ptype = ptype.self_to(par.context.namespace)
|
336
337
|
if ptype.nil?
|
337
338
|
# @todo Some level (strong, I guess) should require the param here
|
338
339
|
else
|
data/lib/solargraph/version.rb
CHANGED
data/lib/solargraph/workspace.rb
CHANGED
@@ -25,9 +25,11 @@ module Solargraph
|
|
25
25
|
|
26
26
|
# @param directory [String]
|
27
27
|
# @param config [Config, nil]
|
28
|
-
|
28
|
+
# @param server [Hash]
|
29
|
+
def initialize directory = '', config = nil, server = {}
|
29
30
|
@directory = directory
|
30
31
|
@config = config
|
32
|
+
@server = server
|
31
33
|
load_sources
|
32
34
|
@gemnames = []
|
33
35
|
@require_paths = generate_require_paths
|
@@ -134,8 +136,19 @@ module Solargraph
|
|
134
136
|
source_hash[updater.filename] = source_hash[updater.filename].synchronize(updater)
|
135
137
|
end
|
136
138
|
|
139
|
+
# @return [String]
|
140
|
+
def command_path
|
141
|
+
server['commandPath'] || 'solargraph'
|
142
|
+
end
|
143
|
+
|
137
144
|
private
|
138
145
|
|
146
|
+
# The language server configuration (or an empty hash if the workspace was
|
147
|
+
# not initialized from a server).
|
148
|
+
#
|
149
|
+
# @return [Hash]
|
150
|
+
attr_reader :server
|
151
|
+
|
139
152
|
# @return [Hash{String => Solargraph::Source}]
|
140
153
|
def source_hash
|
141
154
|
@source_hash ||= {}
|
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.53.
|
4
|
+
version: 0.53.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: 2025-03-
|
11
|
+
date: 2025-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|