steep 1.4.0.dev.2 → 1.4.0.dev.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -2
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +7 -9
  5. data/Gemfile.steep +1 -2
  6. data/Gemfile.steep.lock +9 -10
  7. data/README.md +7 -1
  8. data/Steepfile +0 -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/diagnostic/ruby.rb +79 -4
  15. data/lib/steep/drivers/check.rb +4 -4
  16. data/lib/steep/interface/block.rb +10 -0
  17. data/lib/steep/module_helper.rb +13 -11
  18. data/lib/steep/path_helper.rb +4 -0
  19. data/lib/steep/server/interaction_worker.rb +105 -92
  20. data/lib/steep/services/type_name_completion.rb +157 -0
  21. data/lib/steep/source.rb +1 -0
  22. data/lib/steep/type_construction.rb +402 -229
  23. data/lib/steep/type_inference/block_params.rb +13 -0
  24. data/lib/steep/type_inference/context.rb +3 -3
  25. data/lib/steep/type_inference/method_params.rb +42 -16
  26. data/lib/steep/type_inference/send_args.rb +79 -50
  27. data/lib/steep/type_inference/type_env.rb +7 -1
  28. data/lib/steep/version.rb +1 -1
  29. data/lib/steep.rb +1 -0
  30. data/rbs_collection.steep.lock.yaml +0 -28
  31. data/rbs_collection.steep.yaml +10 -9
  32. data/sample/lib/conference.rb +12 -0
  33. data/sample/sig/conference.rbs +5 -0
  34. data/sig/shims/language-server_protocol.rbs +12 -0
  35. data/sig/shims/parser/nodes.rbs +37 -0
  36. data/sig/shims/parser.rbs +1 -0
  37. data/sig/shims/string.rbs +4 -0
  38. data/sig/steep/ast/types/factory.rbs +10 -8
  39. data/sig/steep/diagnostic/lsp_formatter.rbs +1 -1
  40. data/sig/steep/diagnostic/ruby.rbs +38 -2
  41. data/sig/steep/drivers/check.rbs +1 -1
  42. data/sig/steep/drivers/checkfile.rbs +1 -1
  43. data/sig/steep/drivers/diagnostic_printer.rbs +1 -1
  44. data/sig/steep/drivers/watch.rbs +1 -1
  45. data/sig/steep/index/signature_symbol_provider.rbs +1 -1
  46. data/sig/steep/interface/block.rbs +2 -0
  47. data/sig/steep/interface/builder.rbs +5 -3
  48. data/sig/steep/interface/method_type.rbs +5 -3
  49. data/sig/steep/module_helper.rbs +9 -0
  50. data/sig/steep/path_helper.rbs +3 -1
  51. data/sig/steep/server/base_worker.rbs +1 -1
  52. data/sig/steep/server/interaction_worker.rbs +46 -17
  53. data/sig/steep/server/master.rbs +1 -1
  54. data/sig/steep/server/type_check_worker.rbs +7 -5
  55. data/sig/steep/server/worker_process.rbs +6 -4
  56. data/sig/steep/services/completion_provider.rbs +2 -0
  57. data/sig/steep/services/type_name_completion.rbs +122 -0
  58. data/sig/steep/type_construction.rbs +99 -30
  59. data/sig/steep/type_inference/block_params.rbs +4 -0
  60. data/sig/steep/type_inference/context.rbs +70 -22
  61. data/sig/steep/type_inference/method_params.rbs +43 -24
  62. data/sig/steep/type_inference/multiple_assignment.rbs +1 -1
  63. data/sig/steep/type_inference/send_args.rbs +13 -3
  64. data/sig/steep/typing.rbs +7 -2
  65. data/smoke/diagnostics/test_expectations.yml +1 -0
  66. data/steep.gemspec +0 -1
  67. metadata +10 -16
@@ -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,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.2"
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"
@@ -15,14 +15,6 @@ gems:
15
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'
20
- source:
21
- type: git
22
- name: ruby/gem_rbs_collection
23
- revision: c42c09528dd99252db98f0744181a6de54ec2f55
24
- remote: https://github.com/ruby/gem_rbs_collection.git
25
- repo_dir: gems
26
18
  - name: concurrent-ruby
27
19
  version: '1.1'
28
20
  source:
@@ -39,10 +31,6 @@ gems:
39
31
  version: '0'
40
32
  source:
41
33
  type: stdlib
42
- - name: dbm
43
- version: '0'
44
- source:
45
- type: stdlib
46
34
  - name: fileutils
47
35
  version: '0'
48
36
  source:
@@ -87,18 +75,6 @@ gems:
87
75
  version: '0'
88
76
  source:
89
77
  type: stdlib
90
- - name: optparse
91
- version: '0'
92
- source:
93
- type: stdlib
94
- - name: parallel
95
- version: '1.20'
96
- source:
97
- type: git
98
- name: ruby/gem_rbs_collection
99
- revision: c42c09528dd99252db98f0744181a6de54ec2f55
100
- remote: https://github.com/ruby/gem_rbs_collection.git
101
- repo_dir: gems
102
78
  - name: pathname
103
79
  version: '0'
104
80
  source:
@@ -115,10 +91,6 @@ gems:
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:
@@ -9,14 +9,15 @@ sources:
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
- ignore: true
19
12
  - name: with_steep_types
20
13
  ignore: true
21
- - name: dbm
22
- - name: optparse
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
@@ -20,3 +20,15 @@ Konference.new()
20
20
  # @type var foo: Konference
21
21
 
22
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
@@ -35,3 +35,8 @@ type foo = [Conference, Konference]
35
35
 
36
36
  type b = ::Foo::OBH
37
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
@@ -0,0 +1,37 @@
1
+ module Parser
2
+ module AST
3
+ interface _BlockNode
4
+ def type: () -> :block
5
+
6
+ %a{pure} def loc: () -> (Source::Map & _BlockLocation)
7
+ end
8
+
9
+ interface _BlockLocation
10
+ %a{pure} def end: () -> Source::Range
11
+ end
12
+
13
+ interface _DefNode
14
+ def type: () -> :def
15
+
16
+ def children: () -> [Symbol, Node, Node?]
17
+
18
+ %a{pure} def loc: () -> (Source::Map & _DefLocation)
19
+ end
20
+
21
+ interface _DefLocation
22
+ %a{pure} def end: () -> Source::Range?
23
+ end
24
+
25
+ interface _CaseNode
26
+ def type: () -> :case
27
+
28
+ %a{pure} def loc: () -> (Source::Map & _CaseLocation)
29
+ end
30
+
31
+ interface _CaseLocation
32
+ %a{pure} def else: () -> Source::Range?
33
+
34
+ %a{pure} def end: () -> Source::Range
35
+ end
36
+ end
37
+ end
data/sig/shims/parser.rbs CHANGED
@@ -36,6 +36,7 @@ module Parser
36
36
  attr_accessor self.emit_lambda: bool
37
37
  attr_accessor self.emit_procarg0: bool
38
38
  attr_accessor self.emit_kwargs: bool
39
+ attr_accessor self.emit_forward_arg: bool
39
40
 
40
41
  def string_value: (untyped) -> untyped
41
42
 
@@ -0,0 +1,4 @@
1
+ class String
2
+ def start_with?: (Regexp) -> bool
3
+ | ...
4
+ end
@@ -1,3 +1,5 @@
1
+ use RBS::TypeName, RBS::Resolver::TypeNameResolver
2
+
1
3
  module Steep
2
4
  module AST
3
5
  module Types
@@ -10,13 +12,13 @@ module Steep
10
12
 
11
13
  attr_reader type_interface_cache: untyped
12
14
 
13
- @type_name_resolver: RBS::Resolver::TypeNameResolver?
15
+ @type_name_resolver: TypeNameResolver?
14
16
 
15
17
  def inspect: () -> String
16
18
 
17
19
  def initialize: (builder: RBS::DefinitionBuilder) -> void
18
20
 
19
- def type_name_resolver: () -> RBS::Resolver::TypeNameResolver
21
+ def type_name_resolver: () -> TypeNameResolver
20
22
 
21
23
  def type: (RBS::Types::t `type`) -> t
22
24
 
@@ -40,7 +42,7 @@ module Steep
40
42
 
41
43
  def method_type_1: (Interface::MethodType method_type) -> RBS::MethodType
42
44
 
43
- def unfold: (RBS::TypeName type_name, Array[t] args) -> t
45
+ def unfold: (TypeName type_name, Array[t] args) -> t
44
46
 
45
47
  # Unfold type alias one step, or returns itself
46
48
  #
@@ -51,7 +53,7 @@ module Steep
51
53
  # * Unions and intersections are expanded
52
54
  # * Returns `nil` if it is recursive
53
55
  #
54
- def deep_expand_alias: (t `type`, ?recursive: Set[RBS::TypeName]) -> t?
56
+ def deep_expand_alias: (t `type`, ?recursive: Set[TypeName]) -> t?
55
57
 
56
58
  # Convert union types to array of types
57
59
  #
@@ -59,17 +61,17 @@ module Steep
59
61
 
60
62
  def unwrap_optional: (Types::t `type`) -> [Types::t, Types::t]
61
63
 
62
- def module_name?: (RBS::TypeName type_name) -> bool
64
+ def module_name?: (TypeName type_name) -> bool
63
65
 
64
- def class_name?: (RBS::TypeName type_name) -> bool
66
+ def class_name?: (TypeName type_name) -> bool
65
67
 
66
68
  def env: () -> RBS::Environment
67
69
 
68
70
  def absolute_type: (t `type`, context: RBS::Resolver::context) -> t
69
71
 
70
- def absolute_type_name: (RBS::TypeName type_name, context: RBS::Resolver::context) -> RBS::TypeName?
72
+ def absolute_type_name: (TypeName type_name, context: RBS::Resolver::context) -> TypeName?
71
73
 
72
- def instance_type: (RBS::TypeName type_name, ?args: Array[t]?, ?location: untyped?) -> t
74
+ def instance_type: (TypeName type_name, ?args: Array[t]?, ?location: untyped?) -> t
73
75
 
74
76
  def try_singleton_type: (t) -> t?
75
77
 
@@ -1,7 +1,7 @@
1
1
  module Steep
2
2
  module Diagnostic
3
3
  class LSPFormatter
4
- LSP: singleton(LanguageServer::Protocol)
4
+ module LSP = LanguageServer::Protocol
5
5
 
6
6
  type config = Hash[singleton(Diagnostic::Ruby::Base) | singleton(Diagnostic::Signature::Base), severity?]
7
7