steep 1.5.3 → 1.6.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
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
-