steep 1.4.0.dev.1 → 1.4.0.dev.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -2
  3. data/Gemfile +2 -2
  4. data/Gemfile.lock +13 -15
  5. data/Gemfile.steep +1 -2
  6. data/Gemfile.steep.lock +20 -18
  7. data/README.md +7 -1
  8. data/Steepfile +16 -3
  9. data/bin/rbs +0 -1
  10. data/guides/README.md +5 -0
  11. data/guides/src/gem-rbs-collection/gem-rbs-collection.md +143 -0
  12. data/guides/src/getting-started/getting-started.md +164 -0
  13. data/guides/src/nil-optional/nil-optional.md +195 -0
  14. data/lib/steep/annotation_parser.rb +40 -20
  15. data/lib/steep/ast/types/factory.rb +56 -10
  16. data/lib/steep/ast/types/name.rb +10 -0
  17. data/lib/steep/diagnostic/ruby.rb +80 -5
  18. data/lib/steep/diagnostic/signature.rb +40 -0
  19. data/lib/steep/drivers/check.rb +4 -4
  20. data/lib/steep/index/rbs_index.rb +12 -3
  21. data/lib/steep/index/signature_symbol_provider.rb +1 -1
  22. data/lib/steep/interface/block.rb +10 -0
  23. data/lib/steep/module_helper.rb +13 -11
  24. data/lib/steep/path_helper.rb +4 -0
  25. data/lib/steep/project/target.rb +1 -3
  26. data/lib/steep/server/interaction_worker.rb +102 -72
  27. data/lib/steep/server/lsp_formatter.rb +14 -5
  28. data/lib/steep/services/completion_provider.rb +10 -12
  29. data/lib/steep/services/goto_service.rb +15 -14
  30. data/lib/steep/services/hover_provider/rbs.rb +29 -9
  31. data/lib/steep/services/hover_provider/ruby.rb +16 -10
  32. data/lib/steep/services/signature_service.rb +36 -39
  33. data/lib/steep/services/type_name_completion.rb +157 -0
  34. data/lib/steep/signature/validator.rb +28 -6
  35. data/lib/steep/source.rb +1 -0
  36. data/lib/steep/subtyping/check.rb +1 -1
  37. data/lib/steep/type_construction.rb +414 -239
  38. data/lib/steep/type_inference/block_params.rb +13 -0
  39. data/lib/steep/type_inference/constant_env.rb +7 -3
  40. data/lib/steep/type_inference/context.rb +3 -3
  41. data/lib/steep/type_inference/method_params.rb +42 -16
  42. data/lib/steep/type_inference/send_args.rb +79 -50
  43. data/lib/steep/type_inference/type_env.rb +7 -1
  44. data/lib/steep/version.rb +1 -1
  45. data/lib/steep.rb +1 -0
  46. data/rbs_collection.steep.lock.yaml +9 -41
  47. data/rbs_collection.steep.yaml +11 -8
  48. data/sample/lib/conference.rb +22 -0
  49. data/sample/sig/conference.rbs +28 -0
  50. data/sig/shims/language-server_protocol.rbs +12 -0
  51. data/sig/shims/parser/nodes.rbs +37 -0
  52. data/sig/shims/parser.rbs +1 -0
  53. data/sig/shims/string.rbs +4 -0
  54. data/sig/steep/annotation_parser.rbs +3 -2
  55. data/sig/steep/ast/annotation/collection.rbs +1 -1
  56. data/sig/steep/ast/types/factory.rbs +12 -8
  57. data/sig/steep/ast/types/name.rbs +4 -0
  58. data/sig/steep/diagnostic/lsp_formatter.rbs +1 -1
  59. data/sig/steep/diagnostic/ruby.rbs +38 -2
  60. data/sig/steep/diagnostic/signature.rbs +18 -14
  61. data/sig/steep/drivers/check.rbs +1 -1
  62. data/sig/steep/drivers/checkfile.rbs +1 -1
  63. data/sig/steep/drivers/diagnostic_printer.rbs +1 -1
  64. data/sig/steep/drivers/watch.rbs +1 -1
  65. data/sig/steep/index/rbs_index.rbs +6 -2
  66. data/sig/steep/index/signature_symbol_provider.rbs +1 -1
  67. data/sig/steep/interface/block.rbs +2 -0
  68. data/sig/steep/interface/builder.rbs +5 -3
  69. data/sig/steep/interface/method_type.rbs +5 -3
  70. data/sig/steep/module_helper.rbs +9 -0
  71. data/sig/steep/path_helper.rbs +3 -1
  72. data/sig/steep/project/target.rbs +7 -7
  73. data/sig/steep/server/base_worker.rbs +1 -1
  74. data/sig/steep/server/interaction_worker.rbs +46 -17
  75. data/sig/steep/server/lsp_formatter.rbs +4 -2
  76. data/sig/steep/server/master.rbs +1 -1
  77. data/sig/steep/server/type_check_worker.rbs +7 -5
  78. data/sig/steep/server/worker_process.rbs +6 -4
  79. data/sig/steep/services/completion_provider.rbs +8 -0
  80. data/sig/steep/services/hover_provider/rbs.rbs +6 -4
  81. data/sig/steep/services/hover_provider/ruby.rbs +8 -4
  82. data/sig/steep/services/signature_service.rbs +27 -3
  83. data/sig/steep/services/type_name_completion.rbs +122 -0
  84. data/sig/steep/signature/validator.rbs +9 -5
  85. data/sig/steep/type_construction.rbs +100 -31
  86. data/sig/steep/type_inference/block_params.rbs +4 -0
  87. data/sig/steep/type_inference/constant_env.rbs +2 -0
  88. data/sig/steep/type_inference/context.rbs +70 -22
  89. data/sig/steep/type_inference/method_params.rbs +43 -24
  90. data/sig/steep/type_inference/multiple_assignment.rbs +1 -1
  91. data/sig/steep/type_inference/send_args.rbs +13 -3
  92. data/sig/steep/typing.rbs +7 -2
  93. data/smoke/diagnostics/test_expectations.yml +1 -0
  94. data/smoke/regexp/a.rb +2 -2
  95. data/steep.gemspec +0 -1
  96. metadata +11 -17
@@ -328,6 +328,19 @@ module Steep
328
328
  end
329
329
  end
330
330
 
331
+ def each_single_param()
332
+ each do |param|
333
+ case param
334
+ when Param
335
+ yield param
336
+ when MultipleParam
337
+ param.each_param do |p|
338
+ yield p
339
+ end
340
+ end
341
+ end
342
+ end
343
+
331
344
  def self.from_multiple(node, annotations)
332
345
  # @type var params: Array[Param | MultipleParam]
333
346
  params = []
@@ -6,7 +6,6 @@ module Steep
6
6
  attr_reader :resolver
7
7
 
8
8
  def initialize(factory:, context:, resolver:)
9
- @cache = {}
10
9
  @factory = factory
11
10
  @context = context
12
11
  @resolver = resolver
@@ -25,7 +24,8 @@ module Steep
25
24
  end
26
25
 
27
26
  def constants
28
- resolver.constants(context).transform_values {|c| decompose_constant(c) }
27
+ cs = resolver.constants(context) or raise
28
+ cs.transform_values {|c| decompose_constant!(c) }
29
29
  end
30
30
 
31
31
  def resolve_child(module_name, constant_name)
@@ -35,7 +35,11 @@ module Steep
35
35
  end
36
36
 
37
37
  def children(module_name)
38
- resolver.children(module_name).transform_values {|c| decompose_constant(c) }
38
+ resolver.children(module_name).transform_values {|c| decompose_constant!(c) }
39
+ end
40
+
41
+ def decompose_constant!(constant)
42
+ decompose_constant(constant) || raise
39
43
  end
40
44
 
41
45
  def decompose_constant(constant)
@@ -6,16 +6,16 @@ module Steep
6
6
  attr_reader :method
7
7
  attr_reader :method_type
8
8
  attr_reader :return_type
9
- attr_reader :constructor
10
9
  attr_reader :super_method
10
+ attr_reader :forward_arg_type
11
11
 
12
- def initialize(name:, method:, method_type:, return_type:, constructor:, super_method:)
12
+ def initialize(name:, method:, method_type:, return_type:, super_method:, forward_arg_type:)
13
13
  @name = name
14
14
  @method = method
15
15
  @return_type = return_type
16
16
  @method_type = method_type
17
- @constructor = constructor
18
17
  @super_method = super_method
18
+ @forward_arg_type = forward_arg_type
19
19
  end
20
20
 
21
21
  def block_type
@@ -143,24 +143,34 @@ module Steep
143
143
  attr_reader :method_type
144
144
  attr_reader :params
145
145
  attr_reader :errors
146
+ attr_reader :forward_arg_type
146
147
 
147
- def initialize(args:, method_type:)
148
+ def initialize(args:, method_type:, forward_arg_type:)
148
149
  @args = args
149
150
  @method_type = method_type
150
151
  @params = {}
151
152
  @errors = []
153
+ @forward_arg_type = forward_arg_type
152
154
  end
153
155
 
154
156
  def [](name)
155
157
  params[name] or raise "Unknown variable name: #{name}"
156
158
  end
157
159
 
160
+ def param?(name)
161
+ params.key?(name)
162
+ end
163
+
158
164
  def size
159
165
  params.size
160
166
  end
161
167
 
162
168
  def each_param(&block)
163
- params.each_value(&block)
169
+ if block
170
+ params.each_value(&block)
171
+ else
172
+ params.each_value
173
+ end
164
174
  end
165
175
 
166
176
  def each
@@ -173,7 +183,12 @@ module Steep
173
183
  end
174
184
  end
175
185
 
186
+ def update(forward_arg_type: self.forward_arg_type)
187
+ MethodParams.new(args: args, method_type: method_type, forward_arg_type: forward_arg_type)
188
+ end
189
+
176
190
  def self.empty(node:)
191
+ # @type var args_node: ::Parser::AST::Node
177
192
  args_node =
178
193
  case node.type
179
194
  when :def
@@ -184,9 +199,10 @@ module Steep
184
199
  raise
185
200
  end
186
201
 
187
- params = new(args: args_node.children, method_type: nil)
202
+ params = new(args: args_node.children, method_type: nil, forward_arg_type: nil)
188
203
 
189
204
  args_node.children.each do |arg|
205
+ # @type var arg: ::Parser::AST::Node
190
206
  case arg.type
191
207
  when :arg, :optarg
192
208
  name = arg.children[0]
@@ -210,6 +226,7 @@ module Steep
210
226
  end
211
227
 
212
228
  def self.build(node:, method_type:)
229
+ # @type var args_node: ::Parser::AST::Node
213
230
  args_node =
214
231
  case node.type
215
232
  when :def
@@ -219,17 +236,17 @@ module Steep
219
236
  else
220
237
  raise
221
238
  end
222
- original = args_node.children
239
+ original = args_node.children #: Array[Parser::AST::Node]
223
240
  args = original.dup
224
241
 
225
- instance = new(args: original, method_type: method_type)
242
+ instance = new(args: original, method_type: method_type, forward_arg_type: nil)
226
243
 
227
244
  positional_params = method_type.type.params.positional_params
228
245
 
229
246
  loop do
230
- arg = args.first
247
+ arg = args.first or break
231
248
 
232
- case arg&.type
249
+ case arg.type
233
250
  when :arg
234
251
  name = arg.children[0]
235
252
  param = positional_params&.head
@@ -300,9 +317,14 @@ module Steep
300
317
  args.shift
301
318
  end
302
319
 
303
- if (arg = args.first)&.type == :restarg
320
+ if (arg = args.first) && arg.type == :forward_arg
321
+ forward_params = method_type.type.params.update(positional_params: positional_params)
322
+ return instance.update(forward_arg_type: [forward_params, method_type.block])
323
+ end
324
+
325
+ if (arg = args.first) && arg.type == :restarg
304
326
  name = arg.children[0]
305
- rest_types = []
327
+ rest_types = [] #: Array[AST::Types::t]
306
328
  has_error = false
307
329
 
308
330
  loop do
@@ -325,7 +347,11 @@ module Steep
325
347
  break
326
348
  end
327
349
 
328
- positional_params = positional_params.tail
350
+ if positional_params
351
+ positional_params = positional_params.tail
352
+ else
353
+ raise "Fatal error"
354
+ end
329
355
  end
330
356
 
331
357
  type = rest_types.empty? ? nil : AST::Types::Union.build(types: rest_types)
@@ -348,9 +374,9 @@ module Steep
348
374
  keywords = keyword_params.keywords
349
375
 
350
376
  loop do
351
- arg = args.first
377
+ arg = args.first or break
352
378
 
353
- case arg&.type
379
+ case arg.type
354
380
  when :kwarg
355
381
  name = arg.children[0]
356
382
 
@@ -421,9 +447,9 @@ module Steep
421
447
  args.shift
422
448
  end
423
449
 
424
- if (arg = args.first)&.type == :kwrestarg
450
+ if (arg = args.first) && arg.type == :kwrestarg
425
451
  name = arg.children[0]
426
- rest_types = []
452
+ rest_types = [] #: Array[AST::Types::t]
427
453
  has_error = false
428
454
 
429
455
  keywords.each do |keyword|
@@ -460,8 +486,8 @@ module Steep
460
486
  end
461
487
  end
462
488
 
463
- if (arg = args.first)&.type == :blockarg
464
- name = arg.children[0]
489
+ if (arg = args.first) && arg.type == :blockarg
490
+ name = arg.children[0] #: Symbol
465
491
 
466
492
  if method_type.block
467
493
  instance.params[name] = BlockParameter.new(
@@ -101,6 +101,9 @@ module Steep
101
101
 
102
102
  def next()
103
103
  case
104
+ when node && node.type == :forwarded_args
105
+ # If the node is a `:forwarded_args`, abort
106
+ nil
104
107
  when !node && param.is_a?(Interface::Function::Params::PositionalParams::Required)
105
108
  [
106
109
  MissingArg.new(params: positional_params),
@@ -410,8 +413,8 @@ module Steep
410
413
  when type = keyword_type(key)
411
414
  consumed_keys << key
412
415
  types << type
413
- when rest_type
414
- types << rest_type
416
+ when type = rest_type()
417
+ types << type
415
418
  else
416
419
  unexpected_keyword = key
417
420
  end
@@ -483,6 +486,15 @@ module Steep
483
486
  end
484
487
  end
485
488
 
489
+ class ForwardedArgs
490
+ attr_reader :node, :params
491
+
492
+ def initialize(node:, params:)
493
+ @node = node
494
+ @params = params
495
+ end
496
+ end
497
+
486
498
  attr_reader :node
487
499
  attr_reader :arguments
488
500
  attr_reader :type
@@ -499,6 +511,8 @@ module Steep
499
511
  type.type.params
500
512
  when AST::Types::Proc
501
513
  type.type.params
514
+ else
515
+ raise
502
516
  end
503
517
  end
504
518
 
@@ -526,14 +540,20 @@ module Steep
526
540
  end
527
541
 
528
542
  def positional_arg
529
- args = if keyword_params.empty?
530
- arguments.take_while {|node| node.type != :block_pass }
531
- else
532
- arguments.take_while {|node| node.type != :kwargs && node.type != :block_pass }
533
- end
543
+ args =
544
+ if keyword_params.empty?
545
+ arguments.take_while {|node| node.type != :block_pass }
546
+ else
547
+ arguments.take_while {|node| node.type != :kwargs && node.type != :block_pass }
548
+ end
549
+
534
550
  PositionalArgs.new(args: args, index: 0, positional_params: positional_params)
535
551
  end
536
552
 
553
+ def forwarded_args_node
554
+ arguments.find {|node| node.type == :forwarded_args }
555
+ end
556
+
537
557
  def keyword_args
538
558
  KeywordArgs.new(
539
559
  kwarg_nodes: kwargs_node&.children || [],
@@ -551,6 +571,8 @@ module Steep
551
571
  if block_given?
552
572
  errors = []
553
573
 
574
+ last_positional_args = positional_arg
575
+
554
576
  positional_arg.tap do |args|
555
577
  while (value, args = args.next())
556
578
  yield value
@@ -591,66 +613,73 @@ module Steep
591
613
  when PositionalArgs::UnexpectedArg, PositionalArgs::MissingArg
592
614
  errors << value
593
615
  end
616
+
617
+ last_positional_args = args
594
618
  end
595
619
  end
596
620
 
597
- keyword_args.tap do |args|
598
- while (a, args = args.next)
599
- case a
600
- when KeywordArgs::MissingKeyword
601
- errors << a
602
- when KeywordArgs::UnexpectedKeyword
603
- errors << a
604
- end
605
-
606
- yield a
607
-
608
- case a
609
- when KeywordArgs::SplatArg
610
- case type = a.type
611
- when nil
612
- raise
613
- when AST::Types::Record
614
- # @type var keys: Array[Symbol]
615
- keys = _ = type.elements.keys
616
- ts, args = args.consume_keys(keys, node: a.node)
621
+ if fag = forwarded_args_node
622
+ params = Interface::Function::Params.new(
623
+ positional_params: last_positional_args.positional_params,
624
+ keyword_params: keyword_params
625
+ )
617
626
 
618
- case ts
619
- when KeywordArgs::UnexpectedKeyword
620
- yield ts
621
- errors << ts
622
- when Array
623
- record = AST::Types::Record.new(elements: Hash[keys.zip(ts)])
624
- yield KeywordArgs::ArgTypePairs.new(pairs: [[a.node, record]])
625
- end
626
- else
627
- args = args.update(index: args.index + 1)
627
+ forwarded_args = ForwardedArgs.new(node: fag, params: params)
628
+ else
629
+ keyword_args.tap do |args|
630
+ while (a, args = args.next)
631
+ case a
632
+ when KeywordArgs::MissingKeyword
633
+ errors << a
634
+ when KeywordArgs::UnexpectedKeyword
635
+ errors << a
636
+ end
628
637
 
629
- if args.rest_type
630
- type = AST::Builtin::Hash.instance_type(AST::Builtin::Symbol.instance_type, args.possible_value_type)
631
- yield KeywordArgs::ArgTypePairs.new(pairs: [[a.node, type]])
638
+ yield a
639
+
640
+ case a
641
+ when KeywordArgs::SplatArg
642
+ case type = a.type
643
+ when nil
644
+ raise
645
+ when AST::Types::Record
646
+ # @type var keys: Array[Symbol]
647
+ keys = _ = type.elements.keys
648
+ ts, args = args.consume_keys(keys, node: a.node)
649
+
650
+ case ts
651
+ when KeywordArgs::UnexpectedKeyword
652
+ yield ts
653
+ errors << ts
654
+ when Array
655
+ pairs = keys.zip(ts) #: Array[[Symbol, AST::Types::t]]
656
+ record = AST::Types::Record.new(elements: Hash[pairs])
657
+ yield KeywordArgs::ArgTypePairs.new(pairs: [[a.node, record]])
658
+ end
632
659
  else
633
- yield KeywordArgs::UnexpectedKeyword.new(keyword: nil, node: a.node)
660
+ args = args.update(index: args.index + 1)
661
+
662
+ if args.rest_type
663
+ type = AST::Builtin::Hash.instance_type(AST::Builtin::Symbol.instance_type, args.possible_value_type)
664
+ yield KeywordArgs::ArgTypePairs.new(pairs: [[a.node, type]])
665
+ else
666
+ yield KeywordArgs::UnexpectedKeyword.new(keyword: nil, node: a.node)
667
+ end
634
668
  end
635
669
  end
636
670
  end
637
671
  end
638
672
  end
639
673
 
640
- # pass = block_pass_arg
641
- # if pass.node
642
- # yield pass
643
- # end
644
-
645
- diagnostics = []
674
+ diagnostics = [] #: Array[Diagnostic::Ruby::Base]
646
675
 
647
- missing_keywords = []
676
+ missing_keywords = [] #: Array[Symbol]
648
677
  errors.each do |error|
649
678
  case error
650
679
  when KeywordArgs::UnexpectedKeyword
651
680
  diagnostics << Diagnostic::Ruby::UnexpectedKeywordArgument.new(node: error.node, params: params)
652
681
  when KeywordArgs::MissingKeyword
653
- missing_keywords.push(*error.keywords)
682
+ missing_keywords.push(*error.keywords.to_a)
654
683
  when PositionalArgs::UnexpectedArg
655
684
  diagnostics << Diagnostic::Ruby::UnexpectedPositionalArgument.new(node: error.node, params: params)
656
685
  when PositionalArgs::MissingArg
@@ -662,7 +691,7 @@ module Steep
662
691
  diagnostics << Diagnostic::Ruby::InsufficientKeywordArguments.new(node: node, params: params, missing_keywords: missing_keywords)
663
692
  end
664
693
 
665
- diagnostics
694
+ [forwarded_args, diagnostics]
666
695
  else
667
696
  enum_for :each
668
697
  end
@@ -308,7 +308,13 @@ module Steep
308
308
  end
309
309
 
310
310
  def local_variable_name?(name)
311
- name.start_with?(/[a-z_]/) && name != :_ && name != :__skip__ && name != :__any__
311
+ # Ruby constants start with Uppercase_Letter or Titlecase_Letter in the unicode property.
312
+ # If name start with `@`, it is instance variable or class instance variable.
313
+ # If name start with `$`, it is global variable.
314
+ return false if name.start_with?(/[\p{Uppercase_Letter}\p{Titlecase_Letter}@$]/)
315
+ return false if TypeConstruction::SPECIAL_LVAR_NAMES.include?(name)
316
+
317
+ true
312
318
  end
313
319
 
314
320
  def local_variable_name!(name)
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.4.0.dev.1"
2
+ VERSION = "1.4.0.dev.3"
3
3
  end
data/lib/steep.rb CHANGED
@@ -105,6 +105,7 @@ require "steep/services/type_check_service"
105
105
  require "steep/services/hover_provider/singleton_methods"
106
106
  require "steep/services/hover_provider/ruby"
107
107
  require "steep/services/hover_provider/rbs"
108
+ require "steep/services/type_name_completion"
108
109
  require "steep/services/completion_provider"
109
110
  require "steep/services/stats_calculator"
110
111
  require "steep/services/file_loader"
@@ -2,25 +2,25 @@
2
2
  sources:
3
3
  - type: git
4
4
  name: ruby/gem_rbs_collection
5
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
5
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
6
6
  remote: https://github.com/ruby/gem_rbs_collection.git
7
7
  repo_dir: gems
8
8
  path: ".gem_rbs_collection"
9
9
  gems:
10
10
  - name: activesupport
11
- version: '6.0'
11
+ version: '7.0'
12
12
  source:
13
13
  type: git
14
14
  name: ruby/gem_rbs_collection
15
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
15
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
16
16
  remote: https://github.com/ruby/gem_rbs_collection.git
17
17
  repo_dir: gems
18
- - name: ast
19
- version: '2.4'
18
+ - name: concurrent-ruby
19
+ version: '1.1'
20
20
  source:
21
21
  type: git
22
22
  name: ruby/gem_rbs_collection
23
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
23
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
24
24
  remote: https://github.com/ruby/gem_rbs_collection.git
25
25
  repo_dir: gems
26
26
  - name: csv
@@ -31,10 +31,6 @@ gems:
31
31
  version: '0'
32
32
  source:
33
33
  type: stdlib
34
- - name: dbm
35
- version: '0'
36
- source:
37
- type: stdlib
38
34
  - name: fileutils
39
35
  version: '0'
40
36
  source:
@@ -48,7 +44,7 @@ gems:
48
44
  source:
49
45
  type: git
50
46
  name: ruby/gem_rbs_collection
51
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
47
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
52
48
  remote: https://github.com/ruby/gem_rbs_collection.git
53
49
  repo_dir: gems
54
50
  - name: json
@@ -60,7 +56,7 @@ gems:
60
56
  source:
61
57
  type: git
62
58
  name: ruby/gem_rbs_collection
63
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
59
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
64
60
  remote: https://github.com/ruby/gem_rbs_collection.git
65
61
  repo_dir: gems
66
62
  - name: logger
@@ -79,18 +75,6 @@ gems:
79
75
  version: '0'
80
76
  source:
81
77
  type: stdlib
82
- - name: optparse
83
- version: '0'
84
- source:
85
- type: stdlib
86
- - name: parallel
87
- version: '1.20'
88
- source:
89
- type: git
90
- name: ruby/gem_rbs_collection
91
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
92
- remote: https://github.com/ruby/gem_rbs_collection.git
93
- repo_dir: gems
94
78
  - name: pathname
95
79
  version: '0'
96
80
  source:
@@ -100,25 +84,13 @@ gems:
100
84
  source:
101
85
  type: git
102
86
  name: ruby/gem_rbs_collection
103
- revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
87
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
104
88
  remote: https://github.com/ruby/gem_rbs_collection.git
105
89
  repo_dir: gems
106
- - name: rbs
107
- version: 3.0.0.dev.1
108
- source:
109
- type: rubygems
110
- - name: rdoc
111
- version: '0'
112
- source:
113
- type: stdlib
114
90
  - name: securerandom
115
91
  version: '0'
116
92
  source:
117
93
  type: stdlib
118
- - name: set
119
- version: '0'
120
- source:
121
- type: stdlib
122
94
  - name: singleton
123
95
  version: '0'
124
96
  source:
@@ -131,8 +103,4 @@ gems:
131
103
  version: '0'
132
104
  source:
133
105
  type: stdlib
134
- - name: tsort
135
- version: '0'
136
- source:
137
- type: stdlib
138
106
  gemfile_lock_path: Gemfile.steep.lock
@@ -2,19 +2,22 @@
2
2
  sources:
3
3
  - name: ruby/gem_rbs_collection
4
4
  remote: https://github.com/ruby/gem_rbs_collection.git
5
- revision: main
5
+ revision: c42c09528dd99252db98f0744181a6de54ec2f55
6
6
  repo_dir: gems
7
7
 
8
8
  # A directory to install the downloaded RBSs
9
9
  path: .gem_rbs_collection
10
10
 
11
11
  gems:
12
- # Skip loading rbs gem's RBS.
13
- # It's unnecessary if you don't use rbs as a library.
14
- - name: steep
15
- ignore: true
16
- - name: set
17
- - name: rbs
18
12
  - name: with_steep_types
19
13
  ignore: true
20
- - name: dbm
14
+ - name: activesupport
15
+ - name: rainbow
16
+ - name: listen
17
+ - name: json
18
+ - name: logger
19
+ - name: fileutils
20
+ - name: strscan
21
+ - name: csv
22
+ - name: pathname
23
+ - name: securerandom
@@ -10,3 +10,25 @@ class Conference
10
10
  end
11
11
 
12
12
  Conference.new()
13
+
14
+
15
+ Konference
16
+
17
+ Konference.new()
18
+
19
+
20
+ # @type var foo: Konference
21
+
22
+ foo = Conference.new
23
+
24
+ class Conference12
25
+ class Integer
26
+
27
+ end
28
+ end
29
+
30
+ class HogeHoge
31
+ def foo(...)
32
+ bar(self, ...).to_s
33
+ end
34
+ end
@@ -1,3 +1,5 @@
1
+ use Object as Foo
2
+
1
3
  class Conference
2
4
  attr_reader title: String
3
5
  attr_reader year: Integer
@@ -12,3 +14,29 @@ end
12
14
  class Object
13
15
  def must: () -> self
14
16
  end
17
+
18
+ # Test data
19
+ class Konference = Conference
20
+
21
+ class Allay = ::Array
22
+
23
+ module Hoge = Bazzz
24
+
25
+ module Bazzz = Hoge
26
+
27
+ class Foo < Konference
28
+ class OBH = String
29
+
30
+ type a = Integer
31
+ end
32
+
33
+ type foo = [Conference, Konference]
34
+
35
+
36
+ type b = ::Foo::OBH
37
+
38
+ class HogeHoge
39
+ def foo: (Integer, bar: String) -> String
40
+
41
+ def bar: (Object, Integer, bar: String, ?baz: Integer) { () -> Integer } -> Integer
42
+ end
@@ -16,5 +16,17 @@ module LanguageServer
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ module Constant
21
+ module DiagnosticSeverity
22
+ ERROR: String
23
+
24
+ WARNING: String
25
+
26
+ INFORMATION: String
27
+
28
+ HINT: String
29
+ end
30
+ end
19
31
  end
20
32
  end