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
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.1.1
4
+ version: 1.2.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soutaro Matsumoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-31 00:00:00.000000000 Z
11
+ date: 2022-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -98,14 +98,14 @@ dependencies:
98
98
  requirements:
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: 2.3.2
101
+ version: 2.7.0.pre
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
- version: 2.3.2
108
+ version: 2.7.0.pre
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: parallel
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -140,6 +140,20 @@ dependencies:
140
140
  - - "<"
141
141
  - !ruby/object:Gem::Version
142
142
  version: '4'
143
+ - !ruby/object:Gem::Dependency
144
+ name: securerandom
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0.1'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0.1'
143
157
  description: Gradual Typing for Ruby
144
158
  email:
145
159
  - matsumoto@soutaro.com
@@ -204,6 +218,7 @@ files:
204
218
  - lib/steep/diagnostic/signature.rb
205
219
  - lib/steep/drivers/annotations.rb
206
220
  - lib/steep/drivers/check.rb
221
+ - lib/steep/drivers/checkfile.rb
207
222
  - lib/steep/drivers/diagnostic_printer.rb
208
223
  - lib/steep/drivers/init.rb
209
224
  - lib/steep/drivers/langserver.rb
@@ -221,9 +236,10 @@ files:
221
236
  - lib/steep/index/signature_symbol_provider.rb
222
237
  - lib/steep/index/source_index.rb
223
238
  - lib/steep/interface/block.rb
239
+ - lib/steep/interface/builder.rb
224
240
  - lib/steep/interface/function.rb
225
- - lib/steep/interface/interface.rb
226
241
  - lib/steep/interface/method_type.rb
242
+ - lib/steep/interface/shape.rb
227
243
  - lib/steep/interface/substitution.rb
228
244
  - lib/steep/interface/type_param.rb
229
245
  - lib/steep/method_name.rb
@@ -286,9 +302,11 @@ files:
286
302
  - sample/lib/length.rb
287
303
  - sample/sig/conference.rbs
288
304
  - sample/sig/length.rbs
305
+ - sig/shims/language-server_protocol.rbs
289
306
  - sig/shims/parser.rbs
290
307
  - sig/shims/parser/source/map.rbs
291
308
  - sig/shims/parser/source/range.rbs
309
+ - sig/shims/tagged_logging.rbs
292
310
  - sig/steep.rbs
293
311
  - sig/steep/ast/annotation.rbs
294
312
  - sig/steep/ast/annotation/collection.rbs
@@ -320,20 +338,47 @@ files:
320
338
  - sig/steep/diagnostic/lsp_formatter.rbs
321
339
  - sig/steep/diagnostic/ruby.rbs
322
340
  - sig/steep/diagnostic/signature.rbs
341
+ - sig/steep/drivers/annotations.rbs
342
+ - sig/steep/drivers/check.rbs
343
+ - sig/steep/drivers/checkfile.rbs
344
+ - sig/steep/drivers/diagnostic_printer.rbs
345
+ - sig/steep/drivers/init.rbs
346
+ - sig/steep/drivers/langserver.rbs
347
+ - sig/steep/drivers/print_project.rbs
348
+ - sig/steep/drivers/stats.rbs
349
+ - sig/steep/drivers/utils/driver_helper.rbs
350
+ - sig/steep/drivers/utils/jobs_count.rbs
351
+ - sig/steep/drivers/validate.rbs
352
+ - sig/steep/drivers/vendor.rbs
353
+ - sig/steep/drivers/watch.rbs
354
+ - sig/steep/drivers/worker.rbs
355
+ - sig/steep/equatable.rbs
356
+ - sig/steep/index/rbs_index.rbs
357
+ - sig/steep/index/signature_symbol_provider.rbs
358
+ - sig/steep/index/source_index.rbs
323
359
  - sig/steep/interface/block.rbs
360
+ - sig/steep/interface/builder.rbs
324
361
  - sig/steep/interface/function.rbs
325
- - sig/steep/interface/interface.rbs
326
362
  - sig/steep/interface/method_type.rbs
363
+ - sig/steep/interface/shape.rbs
327
364
  - sig/steep/interface/substitution.rbs
328
365
  - sig/steep/interface/type_param.rbs
329
366
  - sig/steep/method_name.rbs
330
367
  - sig/steep/module_helper.rbs
331
368
  - sig/steep/node_helper.rbs
369
+ - sig/steep/path_helper.rbs
332
370
  - sig/steep/project.rbs
333
371
  - sig/steep/project/dsl.rbs
334
372
  - sig/steep/project/options.rbs
335
373
  - sig/steep/project/pattern.rbs
336
374
  - sig/steep/project/target.rbs
375
+ - sig/steep/server/base_worker.rbs
376
+ - sig/steep/server/change_buffer.rbs
377
+ - sig/steep/server/interaction_worker.rbs
378
+ - sig/steep/server/lsp_formatter.rbs
379
+ - sig/steep/server/master.rbs
380
+ - sig/steep/server/type_check_worker.rbs
381
+ - sig/steep/server/worker_process.rbs
337
382
  - sig/steep/services/completion_provider.rbs
338
383
  - sig/steep/services/content_change.rbs
339
384
  - sig/steep/services/file_loader.rbs
@@ -356,14 +401,15 @@ files:
356
401
  - sig/steep/type_inference/block_params.rbs
357
402
  - sig/steep/type_inference/constant_env.rbs
358
403
  - sig/steep/type_inference/context.rbs
404
+ - sig/steep/type_inference/context_array.rbs
359
405
  - sig/steep/type_inference/logic_type_interpreter.rbs
360
406
  - sig/steep/type_inference/method_call.rbs
361
407
  - sig/steep/type_inference/method_params.rbs
362
408
  - sig/steep/type_inference/multiple_assignment.rbs
409
+ - sig/steep/type_inference/send_args.rbs
363
410
  - sig/steep/type_inference/type_env.rbs
364
411
  - sig/steep/type_inference/type_env_builder.rbs
365
412
  - sig/steep/typing.rbs
366
- - sig/version.rbs
367
413
  - smoke/alias/Steepfile
368
414
  - smoke/alias/a.rb
369
415
  - smoke/alias/a.rbs
@@ -385,6 +431,8 @@ files:
385
431
  - smoke/block/c.rb
386
432
  - smoke/block/c.rbs
387
433
  - smoke/block/d.rb
434
+ - smoke/block/e.rb
435
+ - smoke/block/e.rbs
388
436
  - smoke/block/test_expectations.yml
389
437
  - smoke/case/Steepfile
390
438
  - smoke/case/a.rb
@@ -558,6 +606,10 @@ files:
558
606
  - smoke/regexp/test_expectations.yml
559
607
  - smoke/regression/Steepfile
560
608
  - smoke/regression/array.rb
609
+ - smoke/regression/block_param_split.rb
610
+ - smoke/regression/block_param_split.rbs
611
+ - smoke/regression/empty_yield.rb
612
+ - smoke/regression/empty_yield.rbs
561
613
  - smoke/regression/fun.rb
562
614
  - smoke/regression/fun.rbs
563
615
  - smoke/regression/hash.rb
@@ -630,9 +682,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
630
682
  version: 2.6.0
631
683
  required_rubygems_version: !ruby/object:Gem::Requirement
632
684
  requirements:
633
- - - ">="
685
+ - - ">"
634
686
  - !ruby/object:Gem::Version
635
- version: '0'
687
+ version: 1.3.1
636
688
  requirements: []
637
689
  rubygems_version: 3.3.3
638
690
  signing_key:
@@ -1,34 +0,0 @@
1
- module Steep
2
- module Interface
3
- class Interface
4
- class Entry
5
- attr_reader :method_types
6
-
7
- def initialize(method_types:)
8
- @method_types = method_types
9
- end
10
-
11
- def to_s
12
- "{ #{method_types.join(" || ")} }"
13
- end
14
- end
15
-
16
- attr_reader :type
17
- attr_reader :methods
18
-
19
- def initialize(type:, private:)
20
- @type = type
21
- @private = private
22
- @methods = {}
23
- end
24
-
25
- def private?
26
- @private
27
- end
28
-
29
- def public?
30
- !private?
31
- end
32
- end
33
- end
34
- end
@@ -1,23 +0,0 @@
1
- module Steep
2
- module Interface
3
- class Interface
4
- class Entry
5
- attr_reader method_types: untyped
6
-
7
- def initialize: (method_types: untyped) -> void
8
-
9
- def to_s: () -> ::String
10
- end
11
-
12
- attr_reader type: untyped
13
-
14
- attr_reader methods: untyped
15
-
16
- def initialize: (type: untyped, private: untyped) -> void
17
-
18
- def private?: () -> untyped
19
-
20
- def public?: () -> untyped
21
- end
22
- end
23
- end
data/sig/version.rbs DELETED
@@ -1,3 +0,0 @@
1
- module Steep
2
- VERSION: String
3
- end