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

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 (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