steep 1.8.3 → 1.9.0.dev.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.
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