steep 1.5.3 → 1.6.0.pre.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-windows.yml +1 -2
  3. data/.github/workflows/ruby.yml +1 -2
  4. data/CHANGELOG.md +46 -0
  5. data/Gemfile +3 -1
  6. data/Gemfile.lock +37 -10
  7. data/gemfile_steep/Gemfile.lock +3 -3
  8. data/lib/steep/ast/types/logic.rb +6 -0
  9. data/lib/steep/cli.rb +39 -19
  10. data/lib/steep/diagnostic/ruby.rb +4 -4
  11. data/lib/steep/interface/builder.rb +9 -0
  12. data/lib/steep/path_helper.rb +2 -0
  13. data/lib/steep/project/pattern.rb +1 -1
  14. data/lib/steep/server/change_buffer.rb +9 -0
  15. data/lib/steep/server/delay_queue.rb +41 -0
  16. data/lib/steep/server/interaction_worker.rb +4 -2
  17. data/lib/steep/server/master.rb +106 -10
  18. data/lib/steep/server/type_check_worker.rb +10 -3
  19. data/lib/steep/services/completion_provider.rb +2 -2
  20. data/lib/steep/services/stats_calculator.rb +2 -2
  21. data/lib/steep/services/type_name_completion.rb +86 -15
  22. data/lib/steep/signature/validator.rb +9 -2
  23. data/lib/steep/subtyping/check.rb +24 -18
  24. data/lib/steep/type_construction.rb +61 -17
  25. data/lib/steep/type_inference/logic_type_interpreter.rb +26 -0
  26. data/lib/steep/type_inference/method_params.rb +1 -1
  27. data/lib/steep/version.rb +1 -1
  28. data/lib/steep.rb +1 -3
  29. data/sig/shims/language-server_protocol.rbs +12 -0
  30. data/sig/steep/ast/types/logic.rbs +5 -0
  31. data/sig/steep/ast/types.rbs +1 -1
  32. data/sig/steep/cli.rbs +2 -0
  33. data/sig/steep/diagnostic/ruby.rbs +7 -7
  34. data/sig/steep/project/pattern.rbs +22 -0
  35. data/sig/steep/server/change_buffer.rbs +4 -0
  36. data/sig/steep/server/delay_queue.rbs +37 -0
  37. data/sig/steep/server/master.rbs +4 -0
  38. data/sig/steep/services/stats_calculator.rbs +30 -6
  39. data/sig/steep/services/type_name_completion.rbs +13 -0
  40. data/sig/steep/signature/validator.rbs +5 -0
  41. data/sig/steep/subtyping/check.rbs +1 -1
  42. data/sig/steep/subtyping/relation.rbs +11 -1
  43. data/sig/steep/subtyping/result.rbs +1 -1
  44. data/sig/steep/type_construction.rbs +1 -1
  45. data/smoke/block/test_expectations.yml +10 -14
  46. data/smoke/enumerator/test_expectations.yml +10 -10
  47. data/smoke/integer/test_expectations.yml +5 -16
  48. data/smoke/regression/hello world.rb +1 -0
  49. data/smoke/regression/test_expectations.yml +12 -0
  50. data/steep.gemspec +1 -1
  51. metadata +8 -7
  52. data/lib/steep/shims/filter_map.rb +0 -30
  53. data/lib/steep/shims/symbol_start_with.rb +0 -18
@@ -35,6 +35,18 @@
35
35
  severity: ERROR
36
36
  message: 'Cannot find the declaration of class: `Foo`'
37
37
  code: Ruby::UnknownConstant
38
+ - file: hello world.rb
39
+ diagnostics:
40
+ - range:
41
+ start:
42
+ line: 1
43
+ character: 2
44
+ end:
45
+ line: 1
46
+ character: 5
47
+ severity: ERROR
48
+ message: Type `::Integer` does not have method `foo`
49
+ code: Ruby::NoMethod
38
50
  - file: issue_332.rb
39
51
  diagnostics:
40
52
  - range:
data/steep.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- spec.required_ruby_version = '>= 2.7.0'
29
+ spec.required_ruby_version = '>= 3.0.0'
30
30
 
31
31
  spec.add_runtime_dependency "parser", ">= 3.1"
32
32
  spec.add_runtime_dependency "activesupport", ">= 5.1"
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.5.3
4
+ version: 1.6.0.pre.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: 2023-08-10 00:00:00.000000000 Z
11
+ date: 2023-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -332,6 +332,7 @@ files:
332
332
  - lib/steep/range_extension.rb
333
333
  - lib/steep/server/base_worker.rb
334
334
  - lib/steep/server/change_buffer.rb
335
+ - lib/steep/server/delay_queue.rb
335
336
  - lib/steep/server/interaction_worker.rb
336
337
  - lib/steep/server/lsp_formatter.rb
337
338
  - lib/steep/server/master.rb
@@ -350,8 +351,6 @@ files:
350
351
  - lib/steep/services/stats_calculator.rb
351
352
  - lib/steep/services/type_check_service.rb
352
353
  - lib/steep/services/type_name_completion.rb
353
- - lib/steep/shims/filter_map.rb
354
- - lib/steep/shims/symbol_start_with.rb
355
354
  - lib/steep/signature/validator.rb
356
355
  - lib/steep/source.rb
357
356
  - lib/steep/subtyping/cache.rb
@@ -467,6 +466,7 @@ files:
467
466
  - sig/steep/range_extension.rbs
468
467
  - sig/steep/server/base_worker.rbs
469
468
  - sig/steep/server/change_buffer.rbs
469
+ - sig/steep/server/delay_queue.rbs
470
470
  - sig/steep/server/interaction_worker.rbs
471
471
  - sig/steep/server/lsp_formatter.rbs
472
472
  - sig/steep/server/master.rbs
@@ -712,6 +712,7 @@ files:
712
712
  - smoke/regression/fun.rb
713
713
  - smoke/regression/fun.rbs
714
714
  - smoke/regression/hash.rb
715
+ - smoke/regression/hello world.rb
715
716
  - smoke/regression/issue_328.rb
716
717
  - smoke/regression/issue_328.rbs
717
718
  - smoke/regression/issue_332.rb
@@ -777,12 +778,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
777
778
  requirements:
778
779
  - - ">="
779
780
  - !ruby/object:Gem::Version
780
- version: 2.7.0
781
+ version: 3.0.0
781
782
  required_rubygems_version: !ruby/object:Gem::Requirement
782
783
  requirements:
783
- - - ">="
784
+ - - ">"
784
785
  - !ruby/object:Gem::Version
785
- version: '0'
786
+ version: 1.3.1
786
787
  requirements: []
787
788
  rubygems_version: 3.4.10
788
789
  signing_key:
@@ -1,30 +0,0 @@
1
- # Steep runs on Ruby 2.6 and it needs a shim of `filter_map`
2
-
3
- module Shims
4
- module EnumerableFilterMap
5
- def filter_map(&block)
6
- if block
7
- result = []
8
-
9
- each do |element|
10
- if value = yield(element)
11
- result << value
12
- end
13
- end
14
-
15
- result
16
- else
17
- enum_for :filter_map
18
- end
19
- end
20
- end
21
-
22
- unless Enumerable.method_defined?(:filter_map)
23
- Enumerable.include EnumerableFilterMap
24
-
25
- module ::Enumerable
26
- alias filter_map filter_map
27
- end
28
- end
29
- end
30
-
@@ -1,18 +0,0 @@
1
- # Steep runs on Ruby 2.6 and it needs a shim of `Symbol#start_with?`
2
-
3
- module Shims
4
- module SymbolStartWith
5
- def start_with?(*args)
6
- to_s.start_with?(*args)
7
- end
8
-
9
- def end_with?(*args)
10
- to_s.end_with?(*args)
11
- end
12
- end
13
-
14
- unless Symbol.method_defined?(:start_with?)
15
- Symbol.include(SymbolStartWith)
16
- end
17
- end
18
-