steep 1.8.3 → 1.9.0.dev.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -22
  3. data/Steepfile +35 -26
  4. data/bin/rbs-inline +19 -0
  5. data/lib/steep/cli.rb +38 -5
  6. data/lib/steep/diagnostic/ruby.rb +11 -58
  7. data/lib/steep/drivers/annotations.rb +1 -1
  8. data/lib/steep/drivers/check.rb +103 -1
  9. data/lib/steep/drivers/checkfile.rb +10 -8
  10. data/lib/steep/drivers/print_project.rb +83 -40
  11. data/lib/steep/drivers/utils/driver_helper.rb +39 -6
  12. data/lib/steep/drivers/watch.rb +24 -2
  13. data/lib/steep/index/signature_symbol_provider.rb +8 -8
  14. data/lib/steep/interface/builder.rb +14 -1
  15. data/lib/steep/interface/function.rb +2 -2
  16. data/lib/steep/path_helper.rb +4 -2
  17. data/lib/steep/project/dsl.rb +176 -151
  18. data/lib/steep/project/group.rb +31 -0
  19. data/lib/steep/project/pattern.rb +4 -0
  20. data/lib/steep/project/target.rb +32 -6
  21. data/lib/steep/project.rb +38 -10
  22. data/lib/steep/server/custom_methods.rb +16 -0
  23. data/lib/steep/server/delay_queue.rb +0 -3
  24. data/lib/steep/server/interaction_worker.rb +2 -11
  25. data/lib/steep/server/master.rb +129 -279
  26. data/lib/steep/server/target_group_files.rb +205 -0
  27. data/lib/steep/server/type_check_controller.rb +366 -0
  28. data/lib/steep/server/type_check_worker.rb +60 -86
  29. data/lib/steep/services/file_loader.rb +23 -0
  30. data/lib/steep/services/goto_service.rb +40 -31
  31. data/lib/steep/services/hover_provider/singleton_methods.rb +4 -4
  32. data/lib/steep/services/path_assignment.rb +23 -4
  33. data/lib/steep/services/type_check_service.rb +76 -159
  34. data/lib/steep/signature/validator.rb +4 -4
  35. data/lib/steep/subtyping/check.rb +2 -2
  36. data/lib/steep/thread_waiter.rb +24 -16
  37. data/lib/steep/type_construction.rb +12 -3
  38. data/lib/steep/type_inference/block_params.rb +1 -2
  39. data/lib/steep/type_inference/context.rb +1 -1
  40. data/lib/steep/type_inference/type_env.rb +4 -4
  41. data/lib/steep/type_inference/type_env_builder.rb +1 -1
  42. data/lib/steep/version.rb +1 -1
  43. data/lib/steep.rb +6 -4
  44. data/sample/Steepfile +6 -0
  45. data/sample/lib/conference.rb +1 -5
  46. data/steep.gemspec +7 -1
  47. metadata +9 -6
  48. data/lib/steep/drivers/validate.rb +0 -65
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3
4
+ version: 1.9.0.dev.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soutaro Matsumoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-29 00:00:00.000000000 Z
11
+ date: 2024-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -98,14 +98,14 @@ dependencies:
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 3.6.0
101
+ version: 3.7.0.dev
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: 3.6.0
108
+ version: 3.7.0.dev
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: concurrent-ruby
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +245,7 @@ files:
245
245
  - bin/output_rebaseline.rb
246
246
  - bin/output_test.rb
247
247
  - bin/rbs
248
+ - bin/rbs-inline
248
249
  - bin/setup
249
250
  - bin/stackprof_test.rb
250
251
  - bin/steep
@@ -304,7 +305,6 @@ files:
304
305
  - lib/steep/drivers/stats.rb
305
306
  - lib/steep/drivers/utils/driver_helper.rb
306
307
  - lib/steep/drivers/utils/jobs_option.rb
307
- - lib/steep/drivers/validate.rb
308
308
  - lib/steep/drivers/vendor.rb
309
309
  - lib/steep/drivers/watch.rb
310
310
  - lib/steep/drivers/worker.rb
@@ -327,6 +327,7 @@ files:
327
327
  - lib/steep/path_helper.rb
328
328
  - lib/steep/project.rb
329
329
  - lib/steep/project/dsl.rb
330
+ - lib/steep/project/group.rb
330
331
  - lib/steep/project/options.rb
331
332
  - lib/steep/project/pattern.rb
332
333
  - lib/steep/project/target.rb
@@ -339,6 +340,8 @@ files:
339
340
  - lib/steep/server/interaction_worker.rb
340
341
  - lib/steep/server/lsp_formatter.rb
341
342
  - lib/steep/server/master.rb
343
+ - lib/steep/server/target_group_files.rb
344
+ - lib/steep/server/type_check_controller.rb
342
345
  - lib/steep/server/type_check_worker.rb
343
346
  - lib/steep/server/work_done_progress.rb
344
347
  - lib/steep/server/worker_process.rb
@@ -410,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
410
413
  - !ruby/object:Gem::Version
411
414
  version: '0'
412
415
  requirements: []
413
- rubygems_version: 3.5.17
416
+ rubygems_version: 3.5.11
414
417
  signing_key:
415
418
  specification_version: 4
416
419
  summary: Gradual Typing for Ruby
@@ -1,65 +0,0 @@
1
- module Steep
2
- module Drivers
3
- class Validate
4
- attr_reader :stdout
5
- attr_reader :stderr
6
-
7
- include Utils::DriverHelper
8
-
9
- def initialize(stdout:, stderr:)
10
- @stdout = stdout
11
- @stderr = stderr
12
- end
13
-
14
- def run
15
- project = load_config()
16
- file_loader = Services::FileLoader.new(base_dir: project.base_dir)
17
-
18
- any_error = false
19
-
20
- project.targets.each do |target|
21
- controller = Services::SignatureService.load_from(target.new_env_loader(project: project))
22
-
23
- changes = file_loader.load_changes(target.signature_pattern, changes: {})
24
- controller.update(changes)
25
-
26
- errors =
27
- Steep.measure "Validation" do
28
- case controller.status
29
- when Services::SignatureService::SyntaxErrorStatus, Services::SignatureService::AncestorErrorStatus
30
- controller.status.diagnostics
31
- when Services::SignatureService::LoadedStatus
32
- factory = AST::Types::Factory.new(builder: controller.latest_builder)
33
- builder = Interface::Builder.new(factory)
34
- check = Subtyping::Check.new(builder: builder)
35
- Signature::Validator.new(checker: check).tap {|v| v.validate() }.each_error.to_a
36
- else
37
- raise
38
- end
39
- end
40
-
41
- any_error ||= !errors.empty?
42
-
43
- formatter = Diagnostic::LSPFormatter.new({})
44
- diagnostics = errors.group_by {|e| e.location&.buffer }.transform_values do |errors|
45
- errors.map {|error| formatter.format(error) }
46
- end
47
-
48
- diagnostics.each do |buffer, ds|
49
- if buffer
50
- printer = DiagnosticPrinter.new(stdout: stdout, buffer: buffer)
51
- ds.each do |d|
52
- if d
53
- printer.print(_ = d)
54
- stdout.puts
55
- end
56
- end
57
- end
58
- end
59
- end
60
-
61
- any_error ? 1 : 0
62
- end
63
- end
64
- end
65
- end