steep 1.1.1 → 1.2.0

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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -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 +24 -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 +35 -13
  19. data/lib/steep/diagnostic/ruby.rb +17 -22
  20. data/lib/steep/drivers/check.rb +4 -3
  21. data/lib/steep/drivers/checkfile.rb +210 -0
  22. data/lib/steep/drivers/langserver.rb +4 -6
  23. data/lib/steep/drivers/stats.rb +4 -3
  24. data/lib/steep/drivers/utils/jobs_option.rb +27 -0
  25. data/lib/steep/drivers/validate.rb +3 -1
  26. data/lib/steep/drivers/watch.rb +7 -6
  27. data/lib/steep/equatable.rb +2 -0
  28. data/lib/steep/interface/block.rb +21 -11
  29. data/lib/steep/interface/builder.rb +756 -0
  30. data/lib/steep/interface/function.rb +32 -24
  31. data/lib/steep/interface/method_type.rb +191 -78
  32. data/lib/steep/interface/shape.rb +132 -0
  33. data/lib/steep/interface/substitution.rb +23 -12
  34. data/lib/steep/interface/type_param.rb +1 -2
  35. data/lib/steep/path_helper.rb +1 -1
  36. data/lib/steep/project.rb +5 -7
  37. data/lib/steep/server/base_worker.rb +2 -2
  38. data/lib/steep/server/change_buffer.rb +4 -3
  39. data/lib/steep/server/interaction_worker.rb +1 -1
  40. data/lib/steep/server/master.rb +69 -9
  41. data/lib/steep/server/type_check_worker.rb +13 -11
  42. data/lib/steep/server/worker_process.rb +9 -7
  43. data/lib/steep/services/completion_provider.rb +15 -3
  44. data/lib/steep/services/hover_provider/singleton_methods.rb +5 -6
  45. data/lib/steep/services/signature_service.rb +13 -8
  46. data/lib/steep/services/type_check_service.rb +2 -0
  47. data/lib/steep/signature/validator.rb +1 -1
  48. data/lib/steep/source.rb +0 -2
  49. data/lib/steep/subtyping/check.rb +153 -103
  50. data/lib/steep/subtyping/relation.rb +3 -3
  51. data/lib/steep/subtyping/result.rb +20 -2
  52. data/lib/steep/subtyping/variable_variance.rb +9 -0
  53. data/lib/steep/type_construction.rb +558 -299
  54. data/lib/steep/type_inference/block_params.rb +169 -86
  55. data/lib/steep/type_inference/logic_type_interpreter.rb +9 -14
  56. data/lib/steep/type_inference/method_params.rb +12 -7
  57. data/lib/steep/type_inference/send_args.rb +41 -35
  58. data/lib/steep/type_inference/type_env_builder.rb +1 -1
  59. data/lib/steep/version.rb +1 -1
  60. data/lib/steep.rb +72 -3
  61. data/rbs_collection.steep.lock.yaml +18 -30
  62. data/rbs_collection.steep.yaml +1 -0
  63. data/sig/shims/language-server_protocol.rbs +20 -0
  64. data/sig/shims/parallel.rbs +5 -0
  65. data/sig/shims/tagged_logging.rbs +6 -0
  66. data/sig/steep/ast/annotation/collection.rbs +6 -6
  67. data/sig/steep/ast/types/class.rbs +3 -0
  68. data/sig/steep/ast/types/factory.rbs +38 -32
  69. data/sig/steep/ast/types/instance.rbs +3 -0
  70. data/sig/steep/ast/types/intersection.rbs +1 -1
  71. data/sig/steep/ast/types/literal.rbs +7 -7
  72. data/sig/steep/ast/types/name.rbs +14 -13
  73. data/sig/steep/ast/types/proc.rbs +3 -1
  74. data/sig/steep/ast/types/self.rbs +3 -0
  75. data/sig/steep/ast/types/var.rbs +1 -1
  76. data/sig/steep/cli.rbs +55 -0
  77. data/sig/steep/diagnostic/ruby.rbs +30 -34
  78. data/sig/steep/drivers/annotations.rbs +17 -0
  79. data/sig/steep/drivers/check.rbs +33 -0
  80. data/sig/steep/drivers/checkfile.rbs +27 -0
  81. data/sig/steep/drivers/diagnostic_printer.rbs +25 -0
  82. data/sig/steep/drivers/init.rbs +19 -0
  83. data/sig/steep/drivers/langserver.rbs +36 -0
  84. data/sig/steep/drivers/print_project.rbs +15 -0
  85. data/sig/steep/drivers/stats.rbs +47 -0
  86. data/sig/steep/drivers/utils/driver_helper.rbs +23 -0
  87. data/sig/steep/drivers/utils/jobs_option.rbs +23 -0
  88. data/sig/steep/drivers/validate.rbs +15 -0
  89. data/sig/steep/drivers/vendor.rbs +19 -0
  90. data/sig/steep/drivers/watch.rbs +27 -0
  91. data/sig/steep/drivers/worker.rbs +31 -0
  92. data/sig/steep/equatable.rbs +11 -0
  93. data/sig/steep/index/rbs_index.rbs +91 -0
  94. data/sig/steep/index/signature_symbol_provider.rbs +29 -0
  95. data/sig/steep/index/source_index.rbs +63 -0
  96. data/sig/steep/interface/block.rbs +3 -1
  97. data/sig/steep/interface/builder.rbs +152 -0
  98. data/sig/steep/interface/function.rbs +67 -55
  99. data/sig/steep/interface/method_type.rbs +60 -12
  100. data/sig/steep/interface/shape.rbs +61 -0
  101. data/sig/steep/interface/substitution.rbs +18 -22
  102. data/sig/steep/interface/type_param.rbs +9 -1
  103. data/sig/steep/path_helper.rbs +13 -0
  104. data/sig/steep/project/pattern.rbs +10 -10
  105. data/sig/steep/project/target.rbs +2 -2
  106. data/sig/steep/project.rbs +15 -8
  107. data/sig/steep/server/base_worker.rbs +49 -0
  108. data/sig/steep/server/change_buffer.rbs +32 -0
  109. data/sig/steep/server/interaction_worker.rbs +41 -0
  110. data/sig/steep/server/lsp_formatter.rbs +29 -0
  111. data/sig/steep/server/master.rbs +260 -0
  112. data/sig/steep/server/type_check_worker.rbs +135 -0
  113. data/sig/steep/server/worker_process.rbs +29 -0
  114. data/sig/steep/services/completion_provider.rbs +5 -5
  115. data/sig/steep/services/content_change.rbs +14 -12
  116. data/sig/steep/services/file_loader.rbs +12 -4
  117. data/sig/steep/services/hover_provider/singleton_methods.rbs +1 -1
  118. data/sig/steep/services/path_assignment.rbs +7 -7
  119. data/sig/steep/services/signature_service.rbs +67 -40
  120. data/sig/steep/services/type_check_service.rbs +53 -39
  121. data/sig/steep/subtyping/check.rbs +80 -44
  122. data/sig/steep/subtyping/relation.rbs +24 -22
  123. data/sig/steep/subtyping/result.rbs +48 -30
  124. data/sig/steep/subtyping/variable_variance.rbs +2 -0
  125. data/sig/steep/type_construction.rbs +132 -23
  126. data/sig/steep/type_inference/block_params.rbs +120 -18
  127. data/sig/steep/type_inference/context.rbs +45 -20
  128. data/sig/steep/type_inference/context_array.rbs +37 -0
  129. data/sig/steep/type_inference/logic_type_interpreter.rbs +3 -1
  130. data/sig/steep/type_inference/method_params.rbs +13 -9
  131. data/sig/steep/type_inference/send_args.rbs +229 -0
  132. data/sig/steep/type_inference/type_env_builder.rbs +1 -1
  133. data/sig/steep/typing.rbs +4 -4
  134. data/sig/steep.rbs +4 -2
  135. data/smoke/block/e.rb +12 -0
  136. data/smoke/block/e.rbs +4 -0
  137. data/smoke/block/test_expectations.yml +12 -0
  138. data/smoke/regression/block_param_split.rb +7 -0
  139. data/smoke/regression/block_param_split.rbs +3 -0
  140. data/smoke/regression/empty_yield.rb +5 -0
  141. data/smoke/regression/empty_yield.rbs +3 -0
  142. data/smoke/regression/test_expectations.yml +12 -0
  143. data/smoke/yield/test_expectations.yml +4 -4
  144. data/steep.gemspec +2 -1
  145. metadata +63 -9
  146. data/lib/steep/drivers/utils/jobs_count.rb +0 -9
  147. data/lib/steep/interface/interface.rb +0 -34
  148. data/sig/steep/interface/interface.rbs +0 -23
  149. 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: 93e3e37cfc8107518827a5b5e7126618c6189fae7804456e706b8ee810941ad7
4
+ data.tar.gz: c80ef32b93abb3f0c1f6f77eba1a675c993a2eb94632825f9057f76a39edb0ce
5
5
  SHA512:
6
- metadata.gz: 3d572d7d6f4908286a5714cfe029930a749a0437d5f88663b3c85f86bf14a60f2de0f53320177b6749d235ed384576cfbfc21f6954873fa4fcc29d4132a24880
7
- data.tar.gz: 7319b4110d5f5ad465f0a84a4052c7c542ed5c0f2da5bd8e378247a75883ecc62fecfb16d3da215f9e017ade5045cffa56cff3d5eaaaeeb59c602035113af370
6
+ metadata.gz: 72d8aadb1ea9454f47f4ab98dbd353c8372aa676096923c05d13d87f3b226fc7102c573bf02d563a5adbb2a072747ff5e9ea282e33cf0654ad3d3f562ebe81a5
7
+ data.tar.gz: 15fe6ea35cb298337440074e188178c6fdf73a03b5104fbca92863f8863862bfbb9d8e942e0b2482394307a19061185335da442af29d878c7d98f904ee52d2ab
data/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.2.0 (2022-10-08)
6
+
7
+ ### Commandline tool
8
+
9
+ * Refactor `--jobs` and `--steep-command` option handling ([#654](https://github.com/soutaro/steep/pull/654))
10
+
11
+ ### Miscellaneous
12
+
13
+ * Delete debug prints ([#653](https://github.com/soutaro/steep/pull/653))
14
+ * Update RBS to 2.7.0 ([#655](https://github.com/soutaro/steep/pull/655))
15
+
16
+ ## 1.2.0.pre.1 (2022-10-06)
17
+
18
+ ### Type checker core
19
+
20
+ * Support type checking block/proc self type binding ([#637](https://github.com/soutaro/steep/pull/637))
21
+ * Type check multiple assignment on block parameters ([#641](https://github.com/soutaro/steep/pull/641), [#643](https://github.com/soutaro/steep/pull/643))
22
+ * Make more multiple assignments type check ([#630](https://github.com/soutaro/steep/pull/630))
23
+ * Refactor *shape* calculation ([#635](https://github.com/soutaro/steep/pull/635), [#649
24
+ ](https://github.com/soutaro/steep/pull/649))
25
+ * Report type errors if argument mismatch on yield ([#640](https://github.com/soutaro/steep/pull/640))
26
+ * Relax caching requirements to cache more results ([#651](https://github.com/soutaro/steep/pull/651))
27
+
28
+ ### Commandline tool
29
+
30
+ * Add `steep checkfile` command ([#650](https://github.com/soutaro/steep/pull/650))
31
+
32
+ ### Miscellaneous
33
+
34
+ * Add docs for sublime text integration ([#633](https://github.com/soutaro/steep/pull/633))
35
+
5
36
  ## 1.1.1 (2022-07-31)
6
37
 
7
38
  ### 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)
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)
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)
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,28 @@ 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
+ "csv"
29
+ )
6
30
  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