rbs 1.1.0 → 1.3.0

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +5 -1
  3. data/.gitignore +2 -0
  4. data/CHANGELOG.md +81 -0
  5. data/README.md +1 -1
  6. data/Rakefile +11 -0
  7. data/Steepfile +1 -0
  8. data/core/array.rbs +2 -2
  9. data/core/basic_object.rbs +1 -1
  10. data/core/enumerable.rbs +1 -1
  11. data/core/hash.rbs +13 -5
  12. data/core/io.rbs +4 -4
  13. data/core/kernel.rbs +2 -2
  14. data/core/marshal.rbs +4 -3
  15. data/core/module.rbs +1 -1
  16. data/core/numeric.rbs +10 -0
  17. data/core/proc.rbs +1 -1
  18. data/core/random.rbs +4 -2
  19. data/core/range.rbs +2 -2
  20. data/core/struct.rbs +3 -2
  21. data/core/thread.rbs +1 -1
  22. data/docs/CONTRIBUTING.md +5 -3
  23. data/docs/rbs_by_example.md +328 -0
  24. data/docs/sigs.md +21 -2
  25. data/docs/stdlib.md +1 -1
  26. data/docs/syntax.md +11 -14
  27. data/lib/rbs.rb +1 -0
  28. data/lib/rbs/ast/annotation.rb +2 -2
  29. data/lib/rbs/ast/comment.rb +2 -2
  30. data/lib/rbs/ast/declarations.rb +37 -22
  31. data/lib/rbs/ast/members.rb +26 -26
  32. data/lib/rbs/cli.rb +3 -0
  33. data/lib/rbs/constant_table.rb +4 -1
  34. data/lib/rbs/definition.rb +1 -1
  35. data/lib/rbs/definition_builder.rb +16 -18
  36. data/lib/rbs/definition_builder/ancestor_builder.rb +10 -2
  37. data/lib/rbs/definition_builder/method_builder.rb +4 -2
  38. data/lib/rbs/errors.rb +36 -0
  39. data/lib/rbs/location.rb +106 -2
  40. data/lib/rbs/locator.rb +205 -0
  41. data/lib/rbs/method_type.rb +2 -2
  42. data/lib/rbs/parser.rb +1315 -962
  43. data/lib/rbs/parser.y +411 -75
  44. data/lib/rbs/prototype/rb.rb +7 -3
  45. data/lib/rbs/prototype/runtime.rb +118 -42
  46. data/lib/rbs/test/hook.rb +8 -2
  47. data/lib/rbs/type_name.rb +2 -3
  48. data/lib/rbs/type_name_resolver.rb +1 -1
  49. data/lib/rbs/types.rb +36 -34
  50. data/lib/rbs/version.rb +1 -1
  51. data/lib/rbs/writer.rb +4 -2
  52. data/rbs.gemspec +1 -1
  53. data/sig/ancestor_builder.rbs +2 -0
  54. data/sig/annotation.rbs +1 -1
  55. data/sig/cli.rbs +31 -21
  56. data/sig/comment.rbs +1 -1
  57. data/sig/declarations.rbs +106 -21
  58. data/sig/environment.rbs +2 -2
  59. data/sig/errors.rbs +15 -0
  60. data/sig/location.rbs +84 -3
  61. data/sig/locator.rbs +44 -0
  62. data/sig/members.rbs +76 -12
  63. data/sig/method_builder.rbs +1 -1
  64. data/sig/method_types.rbs +1 -1
  65. data/sig/namespace.rbs +1 -1
  66. data/sig/polyfill.rbs +4 -17
  67. data/sig/rbs.rbs +8 -4
  68. data/sig/typename.rbs +1 -1
  69. data/sig/types.rbs +67 -20
  70. data/sig/util.rbs +0 -4
  71. data/sig/writer.rbs +8 -2
  72. data/stdlib/dbm/0/dbm.rbs +43 -30
  73. data/stdlib/mutex_m/0/mutex_m.rbs +1 -1
  74. data/stdlib/net-http/0/net-http.rbs +1846 -0
  75. data/stdlib/optparse/0/optparse.rbs +1214 -0
  76. data/stdlib/resolv/0/resolv.rbs +1504 -0
  77. data/stdlib/rubygems/0/requirement.rbs +84 -2
  78. data/stdlib/rubygems/0/rubygems.rbs +2 -2
  79. data/stdlib/rubygems/0/version.rbs +2 -1
  80. data/stdlib/shellwords/0/shellwords.rbs +252 -0
  81. data/stdlib/socket/0/addrinfo.rbs +469 -0
  82. data/stdlib/socket/0/basic_socket.rbs +503 -0
  83. data/stdlib/socket/0/ip_socket.rbs +72 -0
  84. data/stdlib/socket/0/socket.rbs +2687 -0
  85. data/stdlib/socket/0/tcp_server.rbs +177 -0
  86. data/stdlib/socket/0/tcp_socket.rbs +35 -0
  87. data/stdlib/socket/0/udp_socket.rbs +111 -0
  88. data/stdlib/socket/0/unix_server.rbs +154 -0
  89. data/stdlib/socket/0/unix_socket.rbs +132 -0
  90. data/stdlib/timeout/0/timeout.rbs +5 -0
  91. data/steep/Gemfile.lock +19 -16
  92. metadata +18 -11
  93. data/bin/annotate-with-rdoc +0 -153
  94. data/bin/console +0 -14
  95. data/bin/query-rdoc +0 -103
  96. data/bin/rbs-prof +0 -9
  97. data/bin/run_in_md.rb +0 -49
  98. data/bin/setup +0 -8
  99. data/bin/sort +0 -89
  100. data/bin/steep +0 -4
  101. data/bin/test_runner.rb +0 -29
data/sig/locator.rbs ADDED
@@ -0,0 +1,44 @@
1
+ module RBS
2
+ # Locator helps finding RBS elements based on locations in the RBS source text.
3
+ #
4
+ class Locator
5
+ type component = Symbol
6
+ | Types::t
7
+ | MethodType
8
+ | AST::Declarations::t
9
+ | AST::Members::t
10
+ | AST::Declarations::ModuleTypeParams::TypeParam
11
+ | AST::Declarations::Class::Super
12
+ | AST::Declarations::Module::Self
13
+
14
+ # Array of _top-level_ declarations.
15
+ #
16
+ attr_reader decls: Array[AST::Declarations::t]
17
+
18
+ def initialize: (decls: Array[AST::Declarations::t]) -> void
19
+
20
+ def buffer: () -> Buffer
21
+
22
+ # Returns list of components.
23
+ # Inner component comes first.
24
+ #
25
+ def find: (line: Integer, column: Integer) -> Array[component]
26
+
27
+ # Returns pair of the inner most symbol and outer components.
28
+ # It ensures the array starts with a AST/type component.
29
+ #
30
+ def find2: (line: Integer, column: Integer) -> [Symbol?, Array[component]]?
31
+
32
+ def find_in_decl: (Integer pos, decl: AST::Declarations::t, array: Array[component]) -> bool
33
+
34
+ def find_in_member: (Integer pos, member: AST::Members::t, array: Array[component]) -> bool
35
+
36
+ def find_in_method_type: (Integer pos, method_type: MethodType, array: Array[component]) -> bool
37
+
38
+ def find_in_type: (Integer pos, type: Types::t, array: Array[component]) -> bool
39
+
40
+ def find_in_loc: (Integer pos, location: Location::WithChildren[untyped, untyped] | Location | nil, array: Array[component]) -> bool
41
+
42
+ def test_loc: (Integer pos, location: Location?) -> bool
43
+ end
44
+ end
data/sig/members.rbs CHANGED
@@ -15,15 +15,27 @@ module RBS
15
15
  class MethodDefinition < Base
16
16
  type kind = :instance | :singleton | :singleton_instance
17
17
 
18
+ # def foo: () -> void
19
+ # ^^^ keyword
20
+ # ^^^ name
21
+ #
22
+ # def self.bar: () -> void | ...
23
+ # ^^^ keyword
24
+ # ^^^^^ kind
25
+ # ^^^ name
26
+ # ^^^ overload
27
+ #
28
+ type loc = Location::WithChildren[:keyword | :name, :kind | :overload]
29
+
18
30
  attr_reader name: Symbol
19
31
  attr_reader kind: kind
20
32
  attr_reader types: Array[MethodType]
21
33
  attr_reader annotations: Array[Annotation]
22
- attr_reader location: Location?
34
+ attr_reader location: loc?
23
35
  attr_reader comment: Comment?
24
36
  attr_reader overload: bool
25
37
 
26
- def initialize: (name: Symbol, kind: kind, types: Array[MethodType], annotations: Array[Annotation], location: Location?, comment: Comment?, overload: boolish) -> void
38
+ def initialize: (name: Symbol, kind: kind, types: Array[MethodType], annotations: Array[Annotation], location: loc?, comment: Comment?, overload: boolish) -> void
27
39
 
28
40
  include _HashEqual
29
41
  include _ToJson
@@ -34,16 +46,27 @@ module RBS
34
46
 
35
47
  def overload?: () -> bool
36
48
 
37
- def update: (?name: Symbol, ?kind: kind, ?types: Array[MethodType], ?annotations: Array[Annotation], ?location: Location?, ?comment: Comment?, ?overload: boolish) -> MethodDefinition
49
+ def update: (?name: Symbol, ?kind: kind, ?types: Array[MethodType], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?overload: boolish) -> MethodDefinition
38
50
  end
39
51
 
40
52
  module Var
53
+ # @foo: String
54
+ # ^^^^ name
55
+ # ^ colon
56
+ #
57
+ # self.@all: Array[String]
58
+ # ^^^^^ kind
59
+ # ^^^^ name
60
+ # ^ colon
61
+ #
62
+ type loc = Location::WithChildren[:name | :colon, :kind]
63
+
41
64
  attr_reader name: Symbol
42
65
  attr_reader type: Types::t
43
- attr_reader location: Location?
66
+ attr_reader location: loc?
44
67
  attr_reader comment: Comment?
45
68
 
46
- def initialize: (name: Symbol, type: Types::t, location: Location?, comment: Comment?) -> void
69
+ def initialize: (name: Symbol, type: Types::t, location: loc?, comment: Comment?) -> void
47
70
 
48
71
  include _HashEqual
49
72
  end
@@ -64,13 +87,25 @@ module RBS
64
87
  end
65
88
 
66
89
  module Mixin
90
+ # include Foo
91
+ # ^^^^^^^ keyword
92
+ # ^^^ name
93
+ #
94
+ # include Array[String]
95
+ # ^^^^^^^ keyword
96
+ # ^^^^^ name
97
+ # ^ arg_open
98
+ # ^ arg_close
99
+ #
100
+ type loc = Location::WithChildren[:name | :keyword, :args]
101
+
67
102
  attr_reader name: TypeName
68
103
  attr_reader args: Array[Types::t]
69
104
  attr_reader annotations: Array[Annotation]
70
- attr_reader location: Location?
105
+ attr_reader location: loc?
71
106
  attr_reader comment: Comment?
72
107
 
73
- def initialize: (name: TypeName, args: Array[Types::t], annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
108
+ def initialize: (name: TypeName, args: Array[Types::t], annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
74
109
 
75
110
  include _HashEqual
76
111
  end
@@ -93,19 +128,34 @@ module RBS
93
128
  module Attribute
94
129
  type kind = :instance | :singleton
95
130
 
131
+ # attr_reader name: String
132
+ # ^^^^^^^^^^^ keyword
133
+ # ^^^^ name
134
+ # ^ colon
135
+ #
136
+ # attr_accessor self.name (@foo) : String
137
+ # ^^^^^^^^^^^^^ keyword
138
+ # ^^^^^ kind
139
+ # ^^^^ name
140
+ # ^^^^^^ ivar
141
+ # ^^^^ ivar_name
142
+ # ^ colon
143
+ #
144
+ type loc = Location::WithChildren[:keyword | :name | :colon, :kind | :ivar | :ivar_name]
145
+
96
146
  attr_reader name: Symbol
97
147
  attr_reader type: Types::t
98
148
  attr_reader kind: kind
99
149
  attr_reader ivar_name: Symbol | false | nil
100
150
  attr_reader annotations: Array[Annotation]
101
- attr_reader location: Location?
151
+ attr_reader location: loc?
102
152
  attr_reader comment: Comment?
103
153
 
104
- def initialize: (name: Symbol, type: Types::t, ivar_name: Symbol | false | nil, kind: kind, annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
154
+ def initialize: (name: Symbol, type: Types::t, ivar_name: Symbol | false | nil, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
105
155
 
106
156
  include _HashEqual
107
157
 
108
- def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: Location?, ?comment: Comment?) -> instance
158
+ def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?) -> instance
109
159
  end
110
160
 
111
161
  class AttrReader < Base
@@ -144,14 +194,28 @@ module RBS
144
194
  class Alias < Base
145
195
  type kind = :instance | :singleton
146
196
 
197
+ # alias foo bar
198
+ # ^^^^^ keyword
199
+ # ^^^ new_name
200
+ # ^^^ old_name
201
+ #
202
+ # alias self.foo self.bar
203
+ # ^^^^^ keyword
204
+ # ^^^^^ new_kind
205
+ # ^^^ new_name
206
+ # ^^^^^ old_kind
207
+ # ^^^ old_name
208
+ #
209
+ type loc = Location::WithChildren[:keyword | :new_name | :old_name, :new_kind | :old_kind]
210
+
147
211
  attr_reader new_name: Symbol
148
212
  attr_reader old_name: Symbol
149
213
  attr_reader kind: kind
150
214
  attr_reader annotations: Array[Annotation]
151
- attr_reader location: Location?
215
+ attr_reader location: loc?
152
216
  attr_reader comment: Comment?
153
217
 
154
- def initialize: (new_name: Symbol, old_name: Symbol, kind: kind, annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
218
+ def initialize: (new_name: Symbol, old_name: Symbol, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
155
219
 
156
220
  include _HashEqual
157
221
  include _ToJson
@@ -20,7 +20,7 @@ module RBS
20
20
 
21
21
  def accessibility: () -> accessibility
22
22
 
23
- def self.empty: (name: Symbol, type: instance_type) -> instance
23
+ def self.empty: (name: Symbol, type: instance_type) -> Definition
24
24
  end
25
25
 
26
26
  attr_reader type: instance_type
data/sig/method_types.rbs CHANGED
@@ -9,7 +9,7 @@ module RBS
9
9
 
10
10
  def ==: (untyped other) -> bool
11
11
 
12
- def to_json: (*untyped) -> String
12
+ include _ToJson
13
13
 
14
14
  def sub: (Substitution) -> MethodType
15
15
 
data/sig/namespace.rbs CHANGED
@@ -13,7 +13,7 @@ module RBS
13
13
  # RBS::Types::Union
14
14
  # ^^^^^^^^^^^^ Namespace
15
15
  #
16
- # Note that `Namespace` is a RBS specific concept and there is no corresponding concept in Ruby.
16
+ # Note that `Namespace` is an RBS specific concept and there is no corresponding concept in Ruby.
17
17
  #
18
18
  # There are _absolute_ and _relative_ namespaces.
19
19
  #
data/sig/polyfill.rbs CHANGED
@@ -1,5 +1,4 @@
1
1
  module Kernel
2
- def to_json: (*untyped) -> String
3
2
  end
4
3
 
5
4
  module Gem
@@ -12,20 +11,8 @@ module Gem
12
11
  end
13
12
  end
14
13
 
15
- class OptionParser
16
- def initialize: () ?{ (instance) -> void } -> void
17
-
18
- def on: (*String) { (String) -> void } -> void
19
-
20
- attr_accessor version: String
21
-
22
- attr_accessor banner: String
23
-
24
- def order!: (Array[String]) -> void
25
-
26
- def parse!: (Array[String]) -> void
27
-
28
- def ver: () -> String
29
-
30
- def help: () -> String
14
+ module Enumerable[unchecked out Elem]
15
+ def flat_map: [U] () { (Elem) -> Array[U] } -> Array[U]
16
+ | [U] () { (Elem) -> U } -> Array[U]
17
+ | ...
31
18
  end
data/sig/rbs.rbs CHANGED
@@ -1,11 +1,15 @@
1
1
  module RBS
2
2
  def self.logger: () -> Logger
3
-
3
+
4
4
  def self.logger_level: () -> untyped
5
-
5
+
6
6
  def self.logger_level=: (untyped) -> untyped
7
-
7
+
8
8
  def self.logger_output: () -> IO
9
-
9
+
10
10
  def self.logger_output=: (IO) -> IO
11
11
  end
12
+
13
+ module Ruby
14
+ Signature: singleton(RBS)
15
+ end
data/sig/typename.rbs CHANGED
@@ -34,7 +34,7 @@ module RBS
34
34
 
35
35
  def to_s: () -> ::String
36
36
 
37
- def to_json: (*untyped a) -> untyped
37
+ include _ToJson
38
38
 
39
39
  # Returns a namespace with same components of self.
40
40
  def to_namespace: () -> Namespace
data/sig/types.rbs CHANGED
@@ -3,11 +3,6 @@ module RBS
3
3
  # _TypeBase interface represents the operations common to all of the types.
4
4
  #
5
5
  interface _TypeBase
6
- # Location for types in the RBS source code.
7
- # `nil` means there is no RBS source code for the type.
8
- #
9
- def location: () -> Location?
10
-
11
6
  # Returns names of free variables of a type.
12
7
  # You can pass a Set instance to add the free variables to the set to avoid Set object allocation.
13
8
  #
@@ -32,7 +27,7 @@ module RBS
32
27
 
33
28
  # Returns a JSON representation.
34
29
  #
35
- def to_json: (*untyped) -> String
30
+ include _ToJson
36
31
 
37
32
  # Returns a String representation.
38
33
  # `level` is used internally.
@@ -70,6 +65,8 @@ module RBS
70
65
  class Base
71
66
  include _TypeBase
72
67
 
68
+ attr_reader location: Location?
69
+
73
70
  def initialize: (location: Location?) -> void
74
71
 
75
72
  def ==: (untyped other) -> bool
@@ -119,12 +116,13 @@ module RBS
119
116
  @@count: Integer
120
117
 
121
118
  include _TypeBase
122
-
123
119
  include NoTypeName
124
120
  include EmptyEachType
125
121
 
126
122
  def initialize: (name: Symbol, location: Location?) -> void
127
123
 
124
+ attr_reader location: Location?
125
+
128
126
  def ==: (untyped other) -> bool
129
127
 
130
128
  alias eql? ==
@@ -134,25 +132,36 @@ module RBS
134
132
  def self.build: (Symbol) -> Variable
135
133
  | (Array[Symbol]) -> Array[Variable]
136
134
 
137
- def self.fresh: (?Symbol) -> Variable
135
+ # Returns fresh type variable with prefix (if given.)
136
+ #
137
+ # Variable.fresh(:S) # => S@1
138
+ # Variable.fresh(:S) # => S@2
139
+ # Variable.fresh() # => T@3
140
+ #
141
+ def self.fresh: (?Symbol prefix) -> Variable
138
142
  end
139
143
 
140
144
  class ClassSingleton
145
+ # singleton(::Foo)
146
+ # ^^^^^ => name
147
+ type loc = Location::WithChildren[:name, bot]
148
+
149
+ def initialize: (name: TypeName, location: loc?) -> void
150
+
141
151
  attr_reader name: TypeName
142
152
 
143
- include _TypeBase
153
+ attr_reader location: loc?
144
154
 
145
- def initialize: (name: TypeName, location: Location?) -> void
155
+ include _TypeBase
156
+ include NoFreeVariables
157
+ include NoSubst
158
+ include EmptyEachType
146
159
 
147
160
  def ==: (untyped other) -> bool
148
161
 
149
162
  alias eql? ==
150
163
 
151
164
  def hash: () -> Integer
152
-
153
- include NoFreeVariables
154
- include NoSubst
155
- include EmptyEachType
156
165
  end
157
166
 
158
167
  module Application
@@ -174,11 +183,20 @@ module RBS
174
183
  end
175
184
 
176
185
  class Interface
177
- include Application
186
+ # _Foo
187
+ # ^^^^ => name
188
+ #
189
+ # _Foo[Bar, Baz]
190
+ # ^^^^ => name
191
+ # ^^^^^^^^^^ => args
192
+ type loc = Location::WithChildren[:name, :args]
178
193
 
179
- def initialize: (name: TypeName, args: Array[t], location: Location?) -> void
194
+ def initialize: (name: TypeName, args: Array[t], location: loc?) -> void
180
195
 
196
+ include Application
181
197
  include _TypeBase
198
+
199
+ attr_reader location: loc?
182
200
  end
183
201
 
184
202
  # ClassInstance represents a type of an instance of a class.
@@ -190,7 +208,17 @@ module RBS
190
208
  class ClassInstance
191
209
  include Application
192
210
 
193
- def initialize: (name: TypeName, args: Array[t], location: Location?) -> void
211
+ # Foo
212
+ # ^^^ => name
213
+ #
214
+ # Foo[Bar, Baz]
215
+ # ^^^ => name
216
+ # ^^^^^^^^^^ => args
217
+ type loc = Location::WithChildren[:name, :args]
218
+
219
+ def initialize: (name: TypeName, args: Array[t], location: loc?) -> void
220
+
221
+ attr_reader location: loc?
194
222
 
195
223
  include _TypeBase
196
224
  end
@@ -204,6 +232,8 @@ module RBS
204
232
  include NoFreeVariables
205
233
  include NoSubst
206
234
  include EmptyEachType
235
+
236
+ attr_reader location: Location?
207
237
  end
208
238
 
209
239
  class Tuple
@@ -212,6 +242,8 @@ module RBS
212
242
  def initialize: (types: Array[t], location: Location?) -> void
213
243
 
214
244
  include _TypeBase
245
+
246
+ attr_reader location: Location?
215
247
  end
216
248
 
217
249
  class Record
@@ -220,6 +252,8 @@ module RBS
220
252
  def initialize: (fields: Hash[Symbol, t], location: Location?) -> void
221
253
 
222
254
  include _TypeBase
255
+
256
+ attr_reader location: Location?
223
257
  end
224
258
 
225
259
  class Optional
@@ -228,6 +262,8 @@ module RBS
228
262
  def initialize: (type: t, location: Location?) -> void
229
263
 
230
264
  include _TypeBase
265
+
266
+ attr_reader location: Location?
231
267
  end
232
268
 
233
269
  class Union
@@ -237,6 +273,8 @@ module RBS
237
273
 
238
274
  include _TypeBase
239
275
 
276
+ attr_reader location: Location?
277
+
240
278
  def map_type: () { (t) -> t } -> Union
241
279
  | () -> Enumerator[t, Union]
242
280
  end
@@ -248,16 +286,21 @@ module RBS
248
286
 
249
287
  include _TypeBase
250
288
 
289
+ attr_reader location: Location?
290
+
251
291
  def map_type: () { (t) -> t } -> Intersection
252
292
  | () -> Enumerator[t, Intersection]
253
293
  end
254
294
 
255
295
  class Function
256
296
  class Param
297
+ type loc = Location::WithChildren[bot, :name]
298
+
257
299
  attr_reader type: t
258
300
  attr_reader name: Symbol?
301
+ attr_reader location: loc?
259
302
 
260
- def initialize: (type: t, name: Symbol?) -> void
303
+ def initialize: (type: t, name: Symbol?, ?location: loc?) -> void
261
304
 
262
305
  def map_type: { (t) -> t } -> Param
263
306
  | -> Enumerator[t, Param]
@@ -294,7 +337,7 @@ module RBS
294
337
  def each_param: () { (Param) -> void } -> void
295
338
  | -> Enumerator[Param, void]
296
339
 
297
- def to_json: (*untyped) -> String
340
+ include _ToJson
298
341
 
299
342
  def sub: (Substitution) -> Function
300
343
 
@@ -330,7 +373,7 @@ module RBS
330
373
 
331
374
  def ==: (untyped other) -> bool
332
375
 
333
- def to_json: (*untyped) -> String
376
+ include _ToJson
334
377
 
335
378
  def sub: (Substitution) -> Block
336
379
 
@@ -344,6 +387,8 @@ module RBS
344
387
  def initialize: (location: Location?, type: Function, block: Block?) -> void
345
388
 
346
389
  include _TypeBase
390
+
391
+ attr_reader location: Location?
347
392
  end
348
393
 
349
394
  class Literal
@@ -358,6 +403,8 @@ module RBS
358
403
  include NoSubst
359
404
  include EmptyEachType
360
405
  include NoTypeName
406
+
407
+ attr_reader location: Location?
361
408
  end
362
409
  end
363
410
  end