rbi 0.3.3 → 0.3.5

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.
@@ -81,7 +81,7 @@ module RBI
81
81
  when Prism::ConstantReadNode
82
82
  # `Foo[Bar]` or `Foo[Bar, Baz]`
83
83
  args = check_arguments_at_least!(node, 1)
84
- return T.unsafe(Type::Generic).new(recv.slice, *args.map { |arg| parse_node(arg) })
84
+ return Type::Generic.new(recv.slice, *args.map { |arg| parse_node(arg) })
85
85
  when Prism::ConstantPathNode
86
86
  if t_class?(recv)
87
87
  # `T::Class[Foo]` or `::T::Class[Foo]`
@@ -94,7 +94,7 @@ module RBI
94
94
  else
95
95
  # `::Foo[Bar]` or `::Foo[Bar, Baz]`
96
96
  args = check_arguments_at_least!(node, 1)
97
- return T.unsafe(Type::Generic).new(recv.slice, *args.map { |arg| parse_node(arg) })
97
+ return Type::Generic.new(recv.slice, *args.map { |arg| parse_node(arg) })
98
98
  end
99
99
  when Prism::CallNode
100
100
  # `T.class_of(Foo)[Bar]`
@@ -183,7 +183,7 @@ module RBI
183
183
 
184
184
  #: (Prism::ArrayNode node) -> Type
185
185
  def parse_tuple(node)
186
- T.unsafe(Type).tuple(*node.elements.map { |elem| parse_node(elem) })
186
+ Type.tuple(*node.elements.map { |elem| parse_node(elem) })
187
187
  end
188
188
 
189
189
  #: ((Prism::HashNode | Prism::KeywordHashNode) node) -> Type
@@ -204,7 +204,7 @@ module RBI
204
204
  end
205
205
  [key, parse_node(elem.value)]
206
206
  end.to_h
207
- T.unsafe(Type).shape(**hash)
207
+ Type.shape(**hash)
208
208
  end
209
209
 
210
210
  #: (Prism::CallNode node) -> Type
@@ -229,7 +229,9 @@ module RBI
229
229
 
230
230
  [elem.key.slice.delete_suffix(":").to_sym, parse_node(elem.value)]
231
231
  end.to_h
232
- T.unsafe(type).params(**params)
232
+ type.params(
233
+ **params, #: untyped
234
+ )
233
235
  when :returns
234
236
  args = check_arguments_exactly!(call, 1)
235
237
  type.returns(
data/lib/rbi/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module RBI
5
- VERSION = "0.3.3"
5
+ VERSION = "0.3.5"
6
6
  end
data/lib/rbi/visitor.rb CHANGED
@@ -4,11 +4,8 @@
4
4
  module RBI
5
5
  class VisitorError < Error; end
6
6
 
7
+ # @abstract
7
8
  class Visitor
8
- extend T::Helpers
9
-
10
- abstract!
11
-
12
9
  #: (Node? node) -> void
13
10
  def visit(node)
14
11
  return unless node
data/lib/rbi.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- require "sorbet-runtime"
5
4
  require "stringio"
6
5
  require "rbs"
7
6
 
data/rbi/rbi.rbi CHANGED
@@ -20,14 +20,10 @@ class RBI::Arg < ::RBI::Node
20
20
  def value; end
21
21
  end
22
22
 
23
- # Attributes
24
- #
25
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
23
+ # @abstract
26
24
  class RBI::Attr < ::RBI::NodeWithComments
27
25
  include ::RBI::Indexable
28
26
 
29
- abstract!
30
-
31
27
  sig do
32
28
  params(
33
29
  name: ::Symbol,
@@ -433,24 +429,53 @@ class RBI::Group < ::RBI::Tree
433
429
  def kind; end
434
430
  end
435
431
 
436
- class RBI::Group::Kind < ::T::Enum
437
- enums do
438
- Attrs = new
439
- Consts = new
440
- Helpers = new
441
- Inits = new
442
- Methods = new
443
- MixesInClassMethods = new
444
- Mixins = new
445
- RequiredAncestors = new
446
- Sends = new
447
- SingletonClasses = new
448
- TEnums = new
449
- TStructFields = new
450
- TypeMembers = new
432
+ class RBI::Group::Kind
433
+ class << self
434
+ private
435
+
436
+ def new(*_arg0); end
451
437
  end
452
438
  end
453
439
 
440
+ # : Kind
441
+ RBI::Group::Kind::Attrs = T.let(T.unsafe(nil), RBI::Group::Kind)
442
+
443
+ # : Kind
444
+ RBI::Group::Kind::Consts = T.let(T.unsafe(nil), RBI::Group::Kind)
445
+
446
+ # : Kind
447
+ RBI::Group::Kind::Helpers = T.let(T.unsafe(nil), RBI::Group::Kind)
448
+
449
+ # : Kind
450
+ RBI::Group::Kind::Inits = T.let(T.unsafe(nil), RBI::Group::Kind)
451
+
452
+ # : Kind
453
+ RBI::Group::Kind::Methods = T.let(T.unsafe(nil), RBI::Group::Kind)
454
+
455
+ # : Kind
456
+ RBI::Group::Kind::MixesInClassMethods = T.let(T.unsafe(nil), RBI::Group::Kind)
457
+
458
+ # : Kind
459
+ RBI::Group::Kind::Mixins = T.let(T.unsafe(nil), RBI::Group::Kind)
460
+
461
+ # : Kind
462
+ RBI::Group::Kind::RequiredAncestors = T.let(T.unsafe(nil), RBI::Group::Kind)
463
+
464
+ # : Kind
465
+ RBI::Group::Kind::Sends = T.let(T.unsafe(nil), RBI::Group::Kind)
466
+
467
+ # : Kind
468
+ RBI::Group::Kind::SingletonClasses = T.let(T.unsafe(nil), RBI::Group::Kind)
469
+
470
+ # : Kind
471
+ RBI::Group::Kind::TEnums = T.let(T.unsafe(nil), RBI::Group::Kind)
472
+
473
+ # : Kind
474
+ RBI::Group::Kind::TStructFields = T.let(T.unsafe(nil), RBI::Group::Kind)
475
+
476
+ # : Kind
477
+ RBI::Group::Kind::TypeMembers = T.let(T.unsafe(nil), RBI::Group::Kind)
478
+
454
479
  class RBI::GroupNodesError < ::RBI::Error; end
455
480
 
456
481
  # Sorbet's misc.
@@ -532,11 +557,7 @@ class RBI::Index < ::RBI::Visitor
532
557
  end
533
558
 
534
559
  # A Node that can be referred to by a unique ID inside an index
535
- #
536
- # @abstract Subclasses must implement the `abstract` methods below.
537
560
  module RBI::Indexable
538
- interface!
539
-
540
561
  # Unique IDs that refer to this node.
541
562
  #
542
563
  # Some nodes can have multiple ids, for example an attribute accessor matches the ID of the
@@ -646,6 +667,9 @@ class RBI::Loc
646
667
  sig { returns(T.nilable(::String)) }
647
668
  def file; end
648
669
 
670
+ sig { params(other: ::RBI::Loc).returns(::RBI::Loc) }
671
+ def join(other); end
672
+
649
673
  sig { returns(T.nilable(::String)) }
650
674
  def source; end
651
675
 
@@ -798,12 +822,8 @@ class RBI::MixesInClassMethods < ::RBI::Mixin
798
822
  def to_s; end
799
823
  end
800
824
 
801
- # Mixins
802
- #
803
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
825
+ # @abstract
804
826
  class RBI::Mixin < ::RBI::NodeWithComments
805
- abstract!
806
-
807
827
  sig do
808
828
  params(
809
829
  name: ::String,
@@ -845,10 +865,8 @@ class RBI::Module < ::RBI::Scope
845
865
  def name=(_arg0); end
846
866
  end
847
867
 
848
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
868
+ # @abstract
849
869
  class RBI::Node
850
- abstract!
851
-
852
870
  sig { params(loc: T.nilable(::RBI::Loc)).void }
853
871
  def initialize(loc: T.unsafe(nil)); end
854
872
 
@@ -915,10 +933,8 @@ class RBI::Node
915
933
  def string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end
916
934
  end
917
935
 
918
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
936
+ # @abstract
919
937
  class RBI::NodeWithComments < ::RBI::Node
920
- abstract!
921
-
922
938
  sig { params(loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void }
923
939
  def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil)); end
924
940
 
@@ -957,10 +973,8 @@ class RBI::OptParam < ::RBI::Param
957
973
  def value; end
958
974
  end
959
975
 
960
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
976
+ # @abstract
961
977
  class RBI::Param < ::RBI::NodeWithComments
962
- abstract!
963
-
964
978
  sig { params(name: ::String, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void }
965
979
  def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil)); end
966
980
 
@@ -1506,10 +1520,11 @@ class RBI::RBSPrinter < ::RBI::Visitor
1506
1520
  out: T.any(::IO, ::StringIO),
1507
1521
  indent: ::Integer,
1508
1522
  print_locs: T::Boolean,
1509
- positional_names: T::Boolean
1523
+ positional_names: T::Boolean,
1524
+ max_line_length: T.nilable(::Integer)
1510
1525
  ).void
1511
1526
  end
1512
- def initialize(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end
1527
+ def initialize(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil)); end
1513
1528
 
1514
1529
  sig { returns(::Integer) }
1515
1530
  def current_indent; end
@@ -1527,6 +1542,9 @@ class RBI::RBSPrinter < ::RBI::Visitor
1527
1542
  sig { void }
1528
1543
  def indent; end
1529
1544
 
1545
+ sig { returns(T.nilable(::Integer)) }
1546
+ def max_line_length; end
1547
+
1530
1548
  sig { returns(T::Boolean) }
1531
1549
  def positional_names; end
1532
1550
 
@@ -1552,6 +1570,12 @@ class RBI::RBSPrinter < ::RBI::Visitor
1552
1570
  sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void }
1553
1571
  def print_method_sig(node, sig); end
1554
1572
 
1573
+ sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void }
1574
+ def print_method_sig_inline(node, sig); end
1575
+
1576
+ sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void }
1577
+ def print_method_sig_multiline(node, sig); end
1578
+
1555
1579
  # Print a string with indentation and `\n` at the end.
1556
1580
  sig { params(string: ::String).void }
1557
1581
  def printl(string); end
@@ -2052,18 +2076,24 @@ class RBI::Rewriters::Merge
2052
2076
  end
2053
2077
 
2054
2078
  # Used for logging / error displaying purpose
2055
- class RBI::Rewriters::Merge::Conflict < ::T::Struct
2056
- const :left, ::RBI::Node
2057
- const :right, ::RBI::Node
2058
- const :left_name, ::String
2059
- const :right_name, ::String
2079
+ class RBI::Rewriters::Merge::Conflict
2080
+ sig { params(left: ::RBI::Node, right: ::RBI::Node, left_name: ::String, right_name: ::String).void }
2081
+ def initialize(left:, right:, left_name:, right_name:); end
2082
+
2083
+ sig { returns(::RBI::Node) }
2084
+ def left; end
2060
2085
 
2061
2086
  sig { returns(::String) }
2062
- def to_s; end
2087
+ def left_name; end
2063
2088
 
2064
- class << self
2065
- def inherited(s); end
2066
- end
2089
+ # @return [Node]
2090
+ def right; end
2091
+
2092
+ # @return [String]
2093
+ def right_name; end
2094
+
2095
+ sig { returns(::String) }
2096
+ def to_s; end
2067
2097
  end
2068
2098
 
2069
2099
  # Merge adjacent conflict trees
@@ -2109,14 +2139,23 @@ class RBI::Rewriters::Merge::ConflictTreeMerger < ::RBI::Visitor
2109
2139
  def merge_conflict_trees(left, right); end
2110
2140
  end
2111
2141
 
2112
- class RBI::Rewriters::Merge::Keep < ::T::Enum
2113
- enums do
2114
- LEFT = new
2115
- NONE = new
2116
- RIGHT = new
2142
+ class RBI::Rewriters::Merge::Keep
2143
+ class << self
2144
+ private
2145
+
2146
+ def new(*_arg0); end
2117
2147
  end
2118
2148
  end
2119
2149
 
2150
+ # : Keep
2151
+ RBI::Rewriters::Merge::Keep::LEFT = T.let(T.unsafe(nil), RBI::Rewriters::Merge::Keep)
2152
+
2153
+ # : Keep
2154
+ RBI::Rewriters::Merge::Keep::NONE = T.let(T.unsafe(nil), RBI::Rewriters::Merge::Keep)
2155
+
2156
+ # : Keep
2157
+ RBI::Rewriters::Merge::Keep::RIGHT = T.let(T.unsafe(nil), RBI::Rewriters::Merge::Keep)
2158
+
2120
2159
  class RBI::Rewriters::Merge::TreeMerger < ::RBI::Visitor
2121
2160
  sig do
2122
2161
  params(
@@ -2263,16 +2302,18 @@ class RBI::Rewriters::RemoveKnownDefinitions < ::RBI::Visitor
2263
2302
  end
2264
2303
  end
2265
2304
 
2266
- class RBI::Rewriters::RemoveKnownDefinitions::Operation < ::T::Struct
2267
- const :deleted_node, ::RBI::Node
2268
- const :duplicate_of, ::RBI::Node
2305
+ class RBI::Rewriters::RemoveKnownDefinitions::Operation
2306
+ sig { params(deleted_node: ::RBI::Node, duplicate_of: ::RBI::Node).void }
2307
+ def initialize(deleted_node:, duplicate_of:); end
2308
+
2309
+ sig { returns(::RBI::Node) }
2310
+ def deleted_node; end
2311
+
2312
+ # @return [Node]
2313
+ def duplicate_of; end
2269
2314
 
2270
2315
  sig { returns(::String) }
2271
2316
  def to_s; end
2272
-
2273
- class << self
2274
- def inherited(s); end
2275
- end
2276
2317
  end
2277
2318
 
2278
2319
  class RBI::Rewriters::SortNodes < ::RBI::Visitor
@@ -2313,14 +2354,10 @@ end
2313
2354
 
2314
2355
  class RBI::Rewriters::TranslateRBSSigs::Error < ::RBI::Error; end
2315
2356
 
2316
- # Scopes
2317
- #
2318
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
2357
+ # @abstract
2319
2358
  class RBI::Scope < ::RBI::Tree
2320
2359
  include ::RBI::Indexable
2321
2360
 
2322
- abstract!
2323
-
2324
2361
  # Duplicate `self` scope without its body
2325
2362
  sig { returns(T.self_type) }
2326
2363
  def dup_empty; end
@@ -2661,10 +2698,8 @@ class RBI::TStructConst < ::RBI::TStructField
2661
2698
  def to_s; end
2662
2699
  end
2663
2700
 
2664
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
2701
+ # @abstract
2665
2702
  class RBI::TStructField < ::RBI::NodeWithComments
2666
- abstract!
2667
-
2668
2703
  sig do
2669
2704
  params(
2670
2705
  name: ::String,
@@ -2864,10 +2899,8 @@ end
2864
2899
 
2865
2900
  # The base class for all RBI types.
2866
2901
  #
2867
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
2902
+ # @abstract
2868
2903
  class RBI::Type
2869
- abstract!
2870
-
2871
2904
  sig { void }
2872
2905
  def initialize; end
2873
2906
 
@@ -2910,9 +2943,33 @@ class RBI::Type
2910
2943
  sig { returns(::RBI::Type) }
2911
2944
  def non_nilable; end
2912
2945
 
2946
+ # Returns a normalized version of the type.
2947
+ #
2948
+ # Normalized types are meant to be easier to process, not to read.
2949
+ # For example, `T.any(TrueClass, FalseClass)` instead of `T::Boolean` or
2950
+ # `T.any(String, NilClass)` instead of `T.nilable(String)`.
2951
+ #
2952
+ # This is the inverse of `#simplify`.
2953
+ #
2954
+ # @abstract
2955
+ sig { abstract.returns(::RBI::Type) }
2956
+ def normalize; end
2957
+
2913
2958
  sig { returns(::String) }
2914
2959
  def rbs_string; end
2915
2960
 
2961
+ # Returns a simplified version of the type.
2962
+ #
2963
+ # Simplified types are meant to be easier to read, not to process.
2964
+ # For example, `T::Boolean` instead of `T.any(TrueClass, FalseClass)` or
2965
+ # `T.nilable(String)` instead of `T.any(String, NilClass)`.
2966
+ #
2967
+ # This is the inverse of `#normalize`.
2968
+ #
2969
+ # @abstract
2970
+ sig { abstract.returns(::RBI::Type) }
2971
+ def simplify; end
2972
+
2916
2973
  # @abstract
2917
2974
  sig { abstract.returns(::String) }
2918
2975
  def to_rbi; end
@@ -3063,6 +3120,12 @@ end
3063
3120
 
3064
3121
  # A type that is intersection of multiple types like `T.all(String, Integer)`.
3065
3122
  class RBI::Type::All < ::RBI::Type::Composite
3123
+ sig { override.returns(::RBI::Type) }
3124
+ def normalize; end
3125
+
3126
+ sig { override.returns(::RBI::Type) }
3127
+ def simplify; end
3128
+
3066
3129
  sig { override.returns(::String) }
3067
3130
  def to_rbi; end
3068
3131
  end
@@ -3072,6 +3135,12 @@ class RBI::Type::Any < ::RBI::Type::Composite
3072
3135
  sig { returns(T::Boolean) }
3073
3136
  def nilable?; end
3074
3137
 
3138
+ sig { override.returns(::RBI::Type) }
3139
+ def normalize; end
3140
+
3141
+ sig { override.returns(::RBI::Type) }
3142
+ def simplify; end
3143
+
3075
3144
  sig { override.returns(::String) }
3076
3145
  def to_rbi; end
3077
3146
  end
@@ -3081,6 +3150,12 @@ class RBI::Type::Anything < ::RBI::Type
3081
3150
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3082
3151
  def ==(other); end
3083
3152
 
3153
+ sig { override.returns(::RBI::Type) }
3154
+ def normalize; end
3155
+
3156
+ sig { override.returns(::RBI::Type) }
3157
+ def simplify; end
3158
+
3084
3159
  sig { override.returns(::String) }
3085
3160
  def to_rbi; end
3086
3161
  end
@@ -3090,6 +3165,12 @@ class RBI::Type::AttachedClass < ::RBI::Type
3090
3165
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3091
3166
  def ==(other); end
3092
3167
 
3168
+ sig { override.returns(::RBI::Type) }
3169
+ def normalize; end
3170
+
3171
+ sig { override.returns(::RBI::Type) }
3172
+ def simplify; end
3173
+
3093
3174
  sig { override.returns(::String) }
3094
3175
  def to_rbi; end
3095
3176
  end
@@ -3099,6 +3180,12 @@ class RBI::Type::Boolean < ::RBI::Type
3099
3180
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3100
3181
  def ==(other); end
3101
3182
 
3183
+ sig { override.returns(::RBI::Type) }
3184
+ def normalize; end
3185
+
3186
+ sig { override.returns(::RBI::Type) }
3187
+ def simplify; end
3188
+
3102
3189
  sig { override.returns(::String) }
3103
3190
  def to_rbi; end
3104
3191
  end
@@ -3111,6 +3198,12 @@ class RBI::Type::Class < ::RBI::Type
3111
3198
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3112
3199
  def ==(other); end
3113
3200
 
3201
+ sig { override.returns(::RBI::Type) }
3202
+ def normalize; end
3203
+
3204
+ sig { override.returns(::RBI::Type) }
3205
+ def simplify; end
3206
+
3114
3207
  sig { override.returns(::String) }
3115
3208
  def to_rbi; end
3116
3209
 
@@ -3126,6 +3219,12 @@ class RBI::Type::ClassOf < ::RBI::Type
3126
3219
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3127
3220
  def ==(other); end
3128
3221
 
3222
+ sig { override.returns(::RBI::Type) }
3223
+ def normalize; end
3224
+
3225
+ sig { override.returns(::RBI::Type) }
3226
+ def simplify; end
3227
+
3129
3228
  sig { override.returns(::String) }
3130
3229
  def to_rbi; end
3131
3230
 
@@ -3138,10 +3237,8 @@ end
3138
3237
 
3139
3238
  # A type that is composed of multiple types like `T.all(String, Integer)`.
3140
3239
  #
3141
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
3240
+ # @abstract
3142
3241
  class RBI::Type::Composite < ::RBI::Type
3143
- abstract!
3144
-
3145
3242
  sig { params(types: T::Array[::RBI::Type]).void }
3146
3243
  def initialize(types); end
3147
3244
 
@@ -3165,9 +3262,15 @@ class RBI::Type::Generic < ::RBI::Type
3165
3262
  sig { returns(::String) }
3166
3263
  def name; end
3167
3264
 
3265
+ sig { override.returns(::RBI::Type) }
3266
+ def normalize; end
3267
+
3168
3268
  sig { returns(T::Array[::RBI::Type]) }
3169
3269
  def params; end
3170
3270
 
3271
+ sig { override.returns(::RBI::Type) }
3272
+ def simplify; end
3273
+
3171
3274
  sig { override.returns(::String) }
3172
3275
  def to_rbi; end
3173
3276
  end
@@ -3180,6 +3283,12 @@ class RBI::Type::Nilable < ::RBI::Type
3180
3283
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3181
3284
  def ==(other); end
3182
3285
 
3286
+ sig { override.returns(::RBI::Type) }
3287
+ def normalize; end
3288
+
3289
+ sig { override.returns(::RBI::Type) }
3290
+ def simplify; end
3291
+
3183
3292
  sig { override.returns(::String) }
3184
3293
  def to_rbi; end
3185
3294
 
@@ -3192,6 +3301,12 @@ class RBI::Type::NoReturn < ::RBI::Type
3192
3301
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3193
3302
  def ==(other); end
3194
3303
 
3304
+ sig { override.returns(::RBI::Type) }
3305
+ def normalize; end
3306
+
3307
+ sig { override.returns(::RBI::Type) }
3308
+ def simplify; end
3309
+
3195
3310
  sig { override.returns(::String) }
3196
3311
  def to_rbi; end
3197
3312
  end
@@ -3207,6 +3322,9 @@ class RBI::Type::Proc < ::RBI::Type
3207
3322
  sig { params(type: T.untyped).returns(T.self_type) }
3208
3323
  def bind(type); end
3209
3324
 
3325
+ sig { override.returns(::RBI::Type) }
3326
+ def normalize; end
3327
+
3210
3328
  sig { params(params: ::RBI::Type).returns(T.self_type) }
3211
3329
  def params(**params); end
3212
3330
 
@@ -3222,6 +3340,9 @@ class RBI::Type::Proc < ::RBI::Type
3222
3340
  sig { params(type: T.untyped).returns(T.self_type) }
3223
3341
  def returns(type); end
3224
3342
 
3343
+ sig { override.returns(::RBI::Type) }
3344
+ def simplify; end
3345
+
3225
3346
  sig { override.returns(::String) }
3226
3347
  def to_rbi; end
3227
3348
 
@@ -3234,6 +3355,12 @@ class RBI::Type::SelfType < ::RBI::Type
3234
3355
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3235
3356
  def ==(other); end
3236
3357
 
3358
+ sig { override.returns(::RBI::Type) }
3359
+ def normalize; end
3360
+
3361
+ sig { override.returns(::RBI::Type) }
3362
+ def simplify; end
3363
+
3237
3364
  sig { override.returns(::String) }
3238
3365
  def to_rbi; end
3239
3366
  end
@@ -3246,6 +3373,12 @@ class RBI::Type::Shape < ::RBI::Type
3246
3373
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3247
3374
  def ==(other); end
3248
3375
 
3376
+ sig { override.returns(::RBI::Type) }
3377
+ def normalize; end
3378
+
3379
+ sig { override.returns(::RBI::Type) }
3380
+ def simplify; end
3381
+
3249
3382
  sig { override.returns(::String) }
3250
3383
  def to_rbi; end
3251
3384
 
@@ -3266,6 +3399,12 @@ class RBI::Type::Simple < ::RBI::Type
3266
3399
  sig { returns(::String) }
3267
3400
  def name; end
3268
3401
 
3402
+ sig { override.returns(::RBI::Type) }
3403
+ def normalize; end
3404
+
3405
+ sig { override.returns(::RBI::Type) }
3406
+ def simplify; end
3407
+
3269
3408
  sig { override.returns(::String) }
3270
3409
  def to_rbi; end
3271
3410
  end
@@ -3278,6 +3417,12 @@ class RBI::Type::Tuple < ::RBI::Type
3278
3417
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3279
3418
  def ==(other); end
3280
3419
 
3420
+ sig { override.returns(::RBI::Type) }
3421
+ def normalize; end
3422
+
3423
+ sig { override.returns(::RBI::Type) }
3424
+ def simplify; end
3425
+
3281
3426
  sig { override.returns(::String) }
3282
3427
  def to_rbi; end
3283
3428
 
@@ -3296,6 +3441,12 @@ class RBI::Type::TypeParameter < ::RBI::Type
3296
3441
  sig { returns(::Symbol) }
3297
3442
  def name; end
3298
3443
 
3444
+ sig { override.returns(::RBI::Type) }
3445
+ def normalize; end
3446
+
3447
+ sig { override.returns(::RBI::Type) }
3448
+ def simplify; end
3449
+
3299
3450
  sig { override.returns(::String) }
3300
3451
  def to_rbi; end
3301
3452
  end
@@ -3305,6 +3456,12 @@ class RBI::Type::Untyped < ::RBI::Type
3305
3456
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3306
3457
  def ==(other); end
3307
3458
 
3459
+ sig { override.returns(::RBI::Type) }
3460
+ def normalize; end
3461
+
3462
+ sig { override.returns(::RBI::Type) }
3463
+ def simplify; end
3464
+
3308
3465
  sig { override.returns(::String) }
3309
3466
  def to_rbi; end
3310
3467
  end
@@ -3377,6 +3534,12 @@ class RBI::Type::Void < ::RBI::Type
3377
3534
  sig { override.params(other: ::BasicObject).returns(T::Boolean) }
3378
3535
  def ==(other); end
3379
3536
 
3537
+ sig { override.returns(::RBI::Type) }
3538
+ def normalize; end
3539
+
3540
+ sig { override.returns(::RBI::Type) }
3541
+ def simplify; end
3542
+
3380
3543
  sig { override.returns(::String) }
3381
3544
  def to_rbi; end
3382
3545
  end
@@ -3412,8 +3575,8 @@ class RBI::TypeMember < ::RBI::NodeWithComments
3412
3575
  end
3413
3576
 
3414
3577
  class RBI::TypePrinter
3415
- sig { void }
3416
- def initialize; end
3578
+ sig { params(max_line_length: T.nilable(::Integer)).void }
3579
+ def initialize(max_line_length: T.unsafe(nil)); end
3417
3580
 
3418
3581
  sig { returns(::String) }
3419
3582
  def string; end
@@ -3502,12 +3665,8 @@ end
3502
3665
 
3503
3666
  RBI::VERSION = T.let(T.unsafe(nil), String)
3504
3667
 
3505
- # Visibility
3506
- #
3507
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
3668
+ # @abstract
3508
3669
  class RBI::Visibility < ::RBI::NodeWithComments
3509
- abstract!
3510
-
3511
3670
  sig { params(visibility: ::Symbol, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void }
3512
3671
  def initialize(visibility, loc: T.unsafe(nil), comments: T.unsafe(nil)); end
3513
3672
 
@@ -3535,10 +3694,8 @@ class RBI::VisibilityGroup < ::RBI::Tree
3535
3694
  def visibility; end
3536
3695
  end
3537
3696
 
3538
- # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
3697
+ # @abstract
3539
3698
  class RBI::Visitor
3540
- abstract!
3541
-
3542
3699
  sig { params(node: T.nilable(::RBI::Node)).void }
3543
3700
  def visit(node); end
3544
3701