steep 1.1.1 → 1.2.0

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