steep 1.1.1 → 1.2.0.pre.1

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/Gemfile +0 -1
  4. data/Gemfile.lock +12 -11
  5. data/Gemfile.steep +1 -1
  6. data/Gemfile.steep.lock +9 -9
  7. data/README.md +3 -3
  8. data/Steepfile +23 -0
  9. data/bin/steep-prof +2 -1
  10. data/lib/steep/annotation_parser.rb +1 -1
  11. data/lib/steep/ast/types/class.rb +4 -0
  12. data/lib/steep/ast/types/factory.rb +86 -602
  13. data/lib/steep/ast/types/instance.rb +4 -0
  14. data/lib/steep/ast/types/literal.rb +1 -1
  15. data/lib/steep/ast/types/proc.rb +22 -8
  16. data/lib/steep/ast/types/self.rb +4 -0
  17. data/lib/steep/ast/types/union.rb +1 -1
  18. data/lib/steep/cli.rb +24 -1
  19. data/lib/steep/diagnostic/ruby.rb +17 -22
  20. data/lib/steep/drivers/checkfile.rb +205 -0
  21. data/lib/steep/drivers/validate.rb +3 -1
  22. data/lib/steep/equatable.rb +2 -0
  23. data/lib/steep/interface/block.rb +21 -11
  24. data/lib/steep/interface/builder.rb +756 -0
  25. data/lib/steep/interface/function.rb +32 -24
  26. data/lib/steep/interface/method_type.rb +191 -78
  27. data/lib/steep/interface/shape.rb +132 -0
  28. data/lib/steep/interface/substitution.rb +23 -12
  29. data/lib/steep/interface/type_param.rb +1 -2
  30. data/lib/steep/path_helper.rb +1 -1
  31. data/lib/steep/project.rb +5 -7
  32. data/lib/steep/server/base_worker.rb +2 -2
  33. data/lib/steep/server/change_buffer.rb +4 -3
  34. data/lib/steep/server/interaction_worker.rb +1 -1
  35. data/lib/steep/server/master.rb +69 -9
  36. data/lib/steep/server/type_check_worker.rb +13 -11
  37. data/lib/steep/server/worker_process.rb +9 -7
  38. data/lib/steep/services/completion_provider.rb +15 -3
  39. data/lib/steep/services/hover_provider/singleton_methods.rb +5 -6
  40. data/lib/steep/services/signature_service.rb +13 -8
  41. data/lib/steep/services/type_check_service.rb +2 -0
  42. data/lib/steep/signature/validator.rb +1 -1
  43. data/lib/steep/subtyping/check.rb +154 -103
  44. data/lib/steep/subtyping/relation.rb +3 -3
  45. data/lib/steep/subtyping/result.rb +20 -2
  46. data/lib/steep/subtyping/variable_variance.rb +9 -0
  47. data/lib/steep/type_construction.rb +558 -299
  48. data/lib/steep/type_inference/block_params.rb +169 -86
  49. data/lib/steep/type_inference/logic_type_interpreter.rb +9 -14
  50. data/lib/steep/type_inference/method_params.rb +12 -7
  51. data/lib/steep/type_inference/send_args.rb +41 -35
  52. data/lib/steep/type_inference/type_env_builder.rb +1 -1
  53. data/lib/steep/version.rb +1 -1
  54. data/lib/steep.rb +71 -2
  55. data/rbs_collection.steep.lock.yaml +18 -30
  56. data/rbs_collection.steep.yaml +1 -0
  57. data/sig/shims/language-server_protocol.rbs +20 -0
  58. data/sig/shims/tagged_logging.rbs +6 -0
  59. data/sig/steep/ast/annotation/collection.rbs +6 -6
  60. data/sig/steep/ast/types/class.rbs +3 -0
  61. data/sig/steep/ast/types/factory.rbs +38 -32
  62. data/sig/steep/ast/types/instance.rbs +3 -0
  63. data/sig/steep/ast/types/intersection.rbs +1 -1
  64. data/sig/steep/ast/types/literal.rbs +7 -7
  65. data/sig/steep/ast/types/name.rbs +14 -13
  66. data/sig/steep/ast/types/proc.rbs +3 -1
  67. data/sig/steep/ast/types/self.rbs +3 -0
  68. data/sig/steep/ast/types/var.rbs +1 -1
  69. data/sig/steep/diagnostic/ruby.rbs +30 -34
  70. data/sig/steep/drivers/annotations.rbs +17 -0
  71. data/sig/steep/drivers/check.rbs +33 -0
  72. data/sig/steep/drivers/checkfile.rbs +26 -0
  73. data/sig/steep/drivers/diagnostic_printer.rbs +25 -0
  74. data/sig/steep/drivers/init.rbs +19 -0
  75. data/sig/steep/drivers/langserver.rbs +35 -0
  76. data/sig/steep/drivers/print_project.rbs +15 -0
  77. data/sig/steep/drivers/stats.rbs +37 -0
  78. data/sig/steep/drivers/utils/driver_helper.rbs +23 -0
  79. data/sig/steep/drivers/utils/jobs_count.rbs +11 -0
  80. data/sig/steep/drivers/validate.rbs +15 -0
  81. data/sig/steep/drivers/vendor.rbs +19 -0
  82. data/sig/steep/drivers/watch.rbs +27 -0
  83. data/sig/steep/drivers/worker.rbs +31 -0
  84. data/sig/steep/equatable.rbs +11 -0
  85. data/sig/steep/index/rbs_index.rbs +91 -0
  86. data/sig/steep/index/signature_symbol_provider.rbs +29 -0
  87. data/sig/steep/index/source_index.rbs +63 -0
  88. data/sig/steep/interface/block.rbs +3 -1
  89. data/sig/steep/interface/builder.rbs +152 -0
  90. data/sig/steep/interface/function.rbs +67 -55
  91. data/sig/steep/interface/method_type.rbs +60 -12
  92. data/sig/steep/interface/shape.rbs +61 -0
  93. data/sig/steep/interface/substitution.rbs +18 -22
  94. data/sig/steep/interface/type_param.rbs +9 -1
  95. data/sig/steep/path_helper.rbs +7 -0
  96. data/sig/steep/project/pattern.rbs +10 -10
  97. data/sig/steep/project/target.rbs +2 -2
  98. data/sig/steep/project.rbs +15 -8
  99. data/sig/steep/server/base_worker.rbs +49 -0
  100. data/sig/steep/server/change_buffer.rbs +32 -0
  101. data/sig/steep/server/interaction_worker.rbs +41 -0
  102. data/sig/steep/server/lsp_formatter.rbs +29 -0
  103. data/sig/steep/server/master.rbs +260 -0
  104. data/sig/steep/server/type_check_worker.rbs +135 -0
  105. data/sig/steep/server/worker_process.rbs +29 -0
  106. data/sig/steep/services/completion_provider.rbs +5 -5
  107. data/sig/steep/services/content_change.rbs +14 -12
  108. data/sig/steep/services/file_loader.rbs +12 -4
  109. data/sig/steep/services/hover_provider/singleton_methods.rbs +1 -1
  110. data/sig/steep/services/path_assignment.rbs +7 -7
  111. data/sig/steep/services/signature_service.rbs +67 -40
  112. data/sig/steep/services/type_check_service.rbs +53 -39
  113. data/sig/steep/subtyping/check.rbs +80 -44
  114. data/sig/steep/subtyping/relation.rbs +24 -22
  115. data/sig/steep/subtyping/result.rbs +48 -30
  116. data/sig/steep/subtyping/variable_variance.rbs +2 -0
  117. data/sig/steep/type_construction.rbs +132 -23
  118. data/sig/steep/type_inference/block_params.rbs +120 -18
  119. data/sig/steep/type_inference/context.rbs +45 -20
  120. data/sig/steep/type_inference/context_array.rbs +37 -0
  121. data/sig/steep/type_inference/logic_type_interpreter.rbs +3 -1
  122. data/sig/steep/type_inference/method_params.rbs +13 -9
  123. data/sig/steep/type_inference/send_args.rbs +229 -0
  124. data/sig/steep/type_inference/type_env_builder.rbs +1 -1
  125. data/sig/steep/typing.rbs +4 -4
  126. data/sig/steep.rbs +4 -2
  127. data/smoke/block/e.rb +12 -0
  128. data/smoke/block/e.rbs +4 -0
  129. data/smoke/block/test_expectations.yml +12 -0
  130. data/smoke/regression/block_param_split.rb +7 -0
  131. data/smoke/regression/block_param_split.rbs +3 -0
  132. data/smoke/regression/empty_yield.rb +5 -0
  133. data/smoke/regression/empty_yield.rbs +3 -0
  134. data/smoke/regression/test_expectations.yml +12 -0
  135. data/smoke/yield/test_expectations.yml +4 -4
  136. data/steep.gemspec +2 -1
  137. metadata +61 -9
  138. data/lib/steep/interface/interface.rb +0 -34
  139. data/sig/steep/interface/interface.rbs +0 -23
  140. data/sig/version.rbs +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a82e5deea68aec9ddc24d1ff5c4872ea0c2fd1d00a6098056e144bc932fba5bf
4
- data.tar.gz: 2e55a0e505ab5ff267c911b53828f7de2159ae1ac443401a962c1d77c8cda294
3
+ metadata.gz: 16805860000461131410384bf4faece6263672c4e3378ecfe464e0f710322f61
4
+ data.tar.gz: 3c3bd23ed01ae1fc56f4ecb683e5ef1f6dfdba3ff131be88c93bd43f87b621b2
5
5
  SHA512:
6
- metadata.gz: 3d572d7d6f4908286a5714cfe029930a749a0437d5f88663b3c85f86bf14a60f2de0f53320177b6749d235ed384576cfbfc21f6954873fa4fcc29d4132a24880
7
- data.tar.gz: 7319b4110d5f5ad465f0a84a4052c7c542ed5c0f2da5bd8e378247a75883ecc62fecfb16d3da215f9e017ade5045cffa56cff3d5eaaaeeb59c602035113af370
6
+ metadata.gz: 73c14bad856adc3a5bfbd4f10604a6e42ce73fc338e8891a50de91d86e971a42195aff504fb9c1d9eee41ef39bed8ec05d0622a5208403a2e4d219f3f8a3e85d
7
+ data.tar.gz: 2c94b001a204c73498532062c14db1c01fb67b0562f18c815be5ca3dd99ceeea44e65ea13f17909dc6d7f3a00a885810ab0ec3d9d58f9a734913c06566712a42
data/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.2.0.pre.1 (2022-10-06)
6
+
7
+ ### Type checker core
8
+
9
+ * Support type checking block/proc self type binding ([#637](https://github.com/soutaro/steep/pull/637))
10
+ * Type check multiple assignment on block parameters ([#641](https://github.com/soutaro/steep/pull/641), [#643](https://github.com/soutaro/steep/pull/643))
11
+ * Make more multiple assignments type check ([#630](https://github.com/soutaro/steep/pull/630))
12
+ * Refactor *shape* calculation ([#635](https://github.com/soutaro/steep/pull/635), [#649
13
+ ](https://github.com/soutaro/steep/pull/649))
14
+ * Report type errors if argument mismatch on yield ([#640](https://github.com/soutaro/steep/pull/640))
15
+ * Relax caching requirements to cache more results ([#651](https://github.com/soutaro/steep/pull/651))
16
+
17
+ ### Commandline tool
18
+
19
+ * Add `steep checkfile` command ([#650](https://github.com/soutaro/steep/pull/650))
20
+
21
+ ### Miscellaneous
22
+
23
+ * Add docs for sublime text integration ([#633](https://github.com/soutaro/steep/pull/633))
24
+
5
25
  ## 1.1.1 (2022-07-31)
6
26
 
7
27
  ### Type checker core
data/Gemfile CHANGED
@@ -10,7 +10,6 @@ group :stackprof, optional: true do
10
10
  gem "stackprof"
11
11
  end
12
12
  gem 'minitest-slow_test'
13
- gem "rbs", "~> 2.5.1"
14
13
 
15
14
  group :ide, optional: true do
16
15
  gem "ruby-debug-ide"
data/Gemfile.lock CHANGED
@@ -1,20 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steep (1.1.1)
4
+ steep (1.2.0.pre.1)
5
5
  activesupport (>= 5.1)
6
6
  language_server-protocol (>= 3.15, < 4.0)
7
7
  listen (~> 3.0)
8
8
  parallel (>= 1.0.0)
9
9
  parser (>= 3.1)
10
10
  rainbow (>= 2.2.2, < 4.0)
11
- rbs (>= 2.3.2)
11
+ rbs (>= 2.7.0.pre)
12
+ securerandom (>= 0.1)
12
13
  terminal-table (>= 2, < 4)
13
14
 
14
15
  GEM
15
16
  remote: https://rubygems.org/
16
17
  specs:
17
- activesupport (7.0.3.1)
18
+ activesupport (7.0.4)
18
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
20
  i18n (>= 1.6, < 2)
20
21
  minitest (>= 5.1)
@@ -27,32 +28,33 @@ GEM
27
28
  ffi (1.15.5)
28
29
  i18n (1.12.0)
29
30
  concurrent-ruby (~> 1.0)
30
- language_server-protocol (3.16.0.3)
31
+ language_server-protocol (3.17.0.1)
31
32
  listen (3.7.1)
32
33
  rb-fsevent (~> 0.10, >= 0.10.3)
33
34
  rb-inotify (~> 0.9, >= 0.9.10)
34
- minitest (5.16.2)
35
+ minitest (5.16.3)
35
36
  minitest-hooks (1.5.0)
36
37
  minitest (> 5.3)
37
38
  minitest-slow_test (0.2.0)
38
39
  minitest (>= 5.0)
39
40
  parallel (1.22.1)
40
- parser (3.1.2.0)
41
+ parser (3.1.2.1)
41
42
  ast (~> 2.4.1)
42
43
  rainbow (3.1.1)
43
44
  rake (13.0.6)
44
- rb-fsevent (0.11.1)
45
+ rb-fsevent (0.11.2)
45
46
  rb-inotify (0.10.1)
46
47
  ffi (~> 1.0)
47
- rbs (2.5.1)
48
+ rbs (2.7.0.pre.3)
48
49
  ruby-debug-ide (0.7.3)
49
50
  rake (>= 0.8.1)
50
- stackprof (0.2.19)
51
+ securerandom (0.2.0)
52
+ stackprof (0.2.21)
51
53
  terminal-table (3.0.2)
52
54
  unicode-display_width (>= 1.1.1, < 3)
53
55
  tzinfo (2.0.5)
54
56
  concurrent-ruby (~> 1.0)
55
- unicode-display_width (2.2.0)
57
+ unicode-display_width (2.3.0)
56
58
 
57
59
  PLATFORMS
58
60
  ruby
@@ -63,7 +65,6 @@ DEPENDENCIES
63
65
  minitest-hooks
64
66
  minitest-slow_test
65
67
  rake
66
- rbs (~> 2.5.1)
67
68
  ruby-debug-ide
68
69
  stackprof
69
70
  steep!
data/Gemfile.steep CHANGED
@@ -1,4 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem 'steep', '~> 1.1.0'
4
- gem "rbs", "~> 2.5.0"
4
+ gem "rbs", "~> 2.7.pre"
data/Gemfile.steep.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (7.0.3.1)
4
+ activesupport (7.0.4)
5
5
  concurrent-ruby (~> 1.0, >= 1.0.2)
6
6
  i18n (>= 1.6, < 2)
7
7
  minitest (>= 5.1)
@@ -11,20 +11,20 @@ GEM
11
11
  ffi (1.15.5)
12
12
  i18n (1.12.0)
13
13
  concurrent-ruby (~> 1.0)
14
- language_server-protocol (3.16.0.3)
14
+ language_server-protocol (3.17.0.1)
15
15
  listen (3.7.1)
16
16
  rb-fsevent (~> 0.10, >= 0.10.3)
17
17
  rb-inotify (~> 0.9, >= 0.9.10)
18
- minitest (5.16.2)
18
+ minitest (5.16.3)
19
19
  parallel (1.22.1)
20
- parser (3.1.2.0)
20
+ parser (3.1.2.1)
21
21
  ast (~> 2.4.1)
22
22
  rainbow (3.1.1)
23
- rb-fsevent (0.11.1)
23
+ rb-fsevent (0.11.2)
24
24
  rb-inotify (0.10.1)
25
25
  ffi (~> 1.0)
26
- rbs (2.5.1)
27
- steep (1.1.0)
26
+ rbs (2.7.0.pre.2)
27
+ steep (1.1.1)
28
28
  activesupport (>= 5.1)
29
29
  language_server-protocol (>= 3.15, < 4.0)
30
30
  listen (~> 3.0)
@@ -37,13 +37,13 @@ GEM
37
37
  unicode-display_width (>= 1.1.1, < 3)
38
38
  tzinfo (2.0.5)
39
39
  concurrent-ruby (~> 1.0)
40
- unicode-display_width (2.2.0)
40
+ unicode-display_width (2.3.0)
41
41
 
42
42
  PLATFORMS
43
43
  arm64-darwin-21
44
44
 
45
45
  DEPENDENCIES
46
- rbs (~> 2.5.0)
46
+ rbs (~> 2.7.pre)
47
47
  steep (~> 1.1.0)
48
48
 
49
49
  BUNDLED WITH
data/README.md CHANGED
@@ -207,9 +207,9 @@ You can find examples in `smoke` directory.
207
207
 
208
208
  ## IDEs
209
209
 
210
- Steep implements some of the Language Server Protocol features. You can use Steep with VSCode and its plugin.
211
-
212
- - https://github.com/soutaro/steep-vscode
210
+ Steep implements some of the Language Server Protocol features.
211
+ - For **VSCode** please install [the plugin](https://github.com/soutaro/steep-vscode)
212
+ - For **SublimeText** please install [LSP](https://github.com/sublimelsp/LSP) package and follow [instructions](https://lsp.sublimetext.io/language_servers/#steep)
213
213
 
214
214
  Other LSP supporting tools may work with Steep where it starts the server as `steep langserver`.
215
215
 
data/Steepfile CHANGED
@@ -3,4 +3,27 @@ target :app do
3
3
  signature "sig"
4
4
 
5
5
  collection_config "rbs_collection.steep.yaml"
6
+
7
+ signature "../rbs/sig", "../rbs/stdlib/rdoc/0"
8
+ library(
9
+ "set",
10
+ "pathname",
11
+ "json",
12
+ "logger",
13
+ "monitor",
14
+ "tsort",
15
+ "uri",
16
+ 'yaml',
17
+ 'dbm',
18
+ 'pstore',
19
+ 'singleton',
20
+ 'shellwords',
21
+ 'fileutils',
22
+ 'find',
23
+ 'digest',
24
+ "strscan",
25
+ "rubygems",
26
+ "optparse",
27
+ "securerandom"
28
+ )
6
29
  end
data/bin/steep-prof CHANGED
@@ -4,12 +4,13 @@ require "stackprof"
4
4
 
5
5
  mode = (ENV["STEEP_STACKPROF_MODE"] || :wall).to_sym
6
6
  out = ENV["STEEP_STACKPROF_OUT"] || "tmp/stackprof-#{mode}-steep.dump"
7
+ interval = ENV["STEEP_STACKPROF_INTERVAL"]&.to_i || 1000
7
8
 
8
9
  def exit(*)
9
10
 
10
11
  end
11
12
 
12
13
  STDERR.puts "Running profiler: mode=#{mode}, out=#{out}"
13
- StackProf.run(mode: mode, out: out, raw: true) do
14
+ StackProf.run(mode: mode, out: out, raw: true, interval: interval) do
14
15
  load File.join(__dir__, "../exe/steep")
15
16
  end
@@ -76,7 +76,7 @@ module Steep
76
76
  name = match[:name]
77
77
  type = match[:type]
78
78
 
79
- method_type = factory.method_type(RBS::Parser.parse_method_type(type), self_type: AST::Types::Self.new, method_decls: Set[])
79
+ method_type = factory.method_type(RBS::Parser.parse_method_type(type), method_decls: Set[])
80
80
 
81
81
  AST::Annotation::MethodType.new(name: name.to_sym,
82
82
  type: method_type,
@@ -8,6 +8,10 @@ module Steep
8
8
  @location = location
9
9
  end
10
10
 
11
+ def self.instance
12
+ @instance ||= new()
13
+ end
14
+
11
15
  def to_s
12
16
  "class"
13
17
  end