rbs 1.0.0.pre → 1.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -4
- data/Rakefile +8 -0
- data/Steepfile +2 -1
- data/bin/annotate-with-rdoc +0 -4
- data/core/file.rbs +3 -0
- data/core/io.rbs +6 -1
- data/core/module.rbs +41 -0
- data/docs/syntax.md +0 -17
- data/goodcheck.yml +2 -2
- data/lib/rbs/ast/declarations.rb +0 -47
- data/lib/rbs/definition_builder.rb +80 -46
- data/lib/rbs/definition_builder/ancestor_builder.rb +52 -3
- data/lib/rbs/environment.rb +1 -7
- data/lib/rbs/environment_loader.rb +7 -3
- data/lib/rbs/errors.rb +19 -57
- data/lib/rbs/parser.rb +994 -1032
- data/lib/rbs/parser.y +0 -19
- data/lib/rbs/prototype/rb.rb +4 -0
- data/lib/rbs/prototype/runtime.rb +30 -14
- data/lib/rbs/test/hook.rb +7 -6
- data/lib/rbs/types.rb +6 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +4 -3
- data/sig/ancestor_builder.rbs +98 -0
- data/sig/declarations.rbs +4 -16
- data/sig/definition_builder.rbs +14 -69
- data/sig/errors.rbs +141 -2
- data/sig/method_builder.rbs +71 -0
- data/sig/substitution.rbs +3 -0
- data/sig/types.rbs +1 -15
- data/stdlib/csv/0/csv.rbs +3 -0
- data/stdlib/pathname/0/pathname.rbs +1 -1
- data/stdlib/prime/0/prime.rbs +6 -0
- data/stdlib/securerandom/0/securerandom.rbs +2 -0
- metadata +4 -2
data/sig/errors.rbs
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
module RBS
|
2
|
-
interface
|
2
|
+
interface _MethodName
|
3
3
|
def kind: () -> (:instance | :singleton)
|
4
|
+
|
5
|
+
def type_name: () -> TypeName
|
6
|
+
|
7
|
+
def method_name: () -> Symbol
|
4
8
|
end
|
5
9
|
|
6
|
-
module MethodNameHelper :
|
10
|
+
module MethodNameHelper : _MethodName
|
7
11
|
def method_name_string: () -> String
|
8
12
|
end
|
9
13
|
|
@@ -17,4 +21,139 @@ module RBS
|
|
17
21
|
|
18
22
|
def self.check!: (type_name: TypeName, args: Array[Types::t], params: Array[Symbol], location: Location?) -> void
|
19
23
|
end
|
24
|
+
|
25
|
+
class RecursiveAncestorError < StandardError
|
26
|
+
attr_reader ancestors: Array[Definition::Ancestor::t]
|
27
|
+
attr_reader location: Location
|
28
|
+
|
29
|
+
def initialize: (ancestors: Array[Definition::Ancestor::t], location: Location?) -> void
|
30
|
+
|
31
|
+
def self.check!: (Definition::Ancestor::t, ancestors: Array[Definition::Ancestor::t], location: Location?) -> void
|
32
|
+
end
|
33
|
+
|
34
|
+
class NoTypeFoundError < StandardError
|
35
|
+
attr_reader type_name: TypeName
|
36
|
+
attr_reader location: Location?
|
37
|
+
|
38
|
+
def initialize: (type_name: TypeName, location: Location?) -> void
|
39
|
+
|
40
|
+
def self.check!: (TypeName, env: Environment, location: Location?) -> TypeName
|
41
|
+
end
|
42
|
+
|
43
|
+
class NoSuperclassFoundError < StandardError
|
44
|
+
attr_reader type_name: TypeName
|
45
|
+
attr_reader location: Location?
|
46
|
+
|
47
|
+
def initialize: (type_name: TypeName, location: Location?) -> void
|
48
|
+
|
49
|
+
def self.check!: (TypeName, env: Environment, location: Location?) -> void
|
50
|
+
end
|
51
|
+
|
52
|
+
class NoSelfTypeFoundError < StandardError
|
53
|
+
attr_reader type_name: TypeName
|
54
|
+
attr_reader location: Location?
|
55
|
+
|
56
|
+
def initialize: (type_name: TypeName, location: Location?) -> void
|
57
|
+
|
58
|
+
def self.check!: (AST::Declarations::Module::Self, env: Environment) -> void
|
59
|
+
end
|
60
|
+
|
61
|
+
class NoMixinFoundError < StandardError
|
62
|
+
attr_reader type_name: TypeName
|
63
|
+
attr_reader member: AST::Members::t
|
64
|
+
|
65
|
+
def initialize: (type_name: TypeName, member: AST::Members::t) -> void
|
66
|
+
|
67
|
+
def location: () -> Location?
|
68
|
+
|
69
|
+
def self.check!: (TypeName, env: Environment, member: AST::Members::t) -> void
|
70
|
+
end
|
71
|
+
|
72
|
+
class DuplicatedMethodDefinitionError < StandardError
|
73
|
+
type ty = Types::ClassSingleton | Types::ClassInstance | Types::Interface
|
74
|
+
type original = DefinitionBuilder::MethodBuilder::Methods::Definition::original
|
75
|
+
|
76
|
+
attr_reader type: ty
|
77
|
+
attr_reader method_name: Symbol
|
78
|
+
attr_reader members: Array[original]
|
79
|
+
|
80
|
+
def initialize: (type: ty, method_name: Symbol, members: Array[original]) -> void
|
81
|
+
|
82
|
+
def qualified_method_name: () -> String
|
83
|
+
|
84
|
+
def location: () -> Location?
|
85
|
+
|
86
|
+
def other_locations: () -> Array[Location?]
|
87
|
+
end
|
88
|
+
|
89
|
+
class DuplicatedInterfaceMethodDefinitionError < StandardError
|
90
|
+
type ty = Types::ClassSingleton | Types::ClassInstance | Types::Interface
|
91
|
+
type mixin_member = AST::Members::Include | AST::Members::Extend
|
92
|
+
|
93
|
+
attr_reader type: ty
|
94
|
+
attr_reader method_name: Symbol
|
95
|
+
attr_reader member: mixin_member
|
96
|
+
|
97
|
+
def initialize: (type: ty, method_name: Symbol, member: mixin_member) -> void
|
98
|
+
|
99
|
+
def qualified_method_name: () -> String
|
100
|
+
end
|
101
|
+
|
102
|
+
class UnknownMethodAliasError < StandardError
|
103
|
+
attr_reader original_name: Symbol
|
104
|
+
attr_reader aliased_name: Symbol
|
105
|
+
attr_reader location: Location?
|
106
|
+
|
107
|
+
def initialize: (original_name: Symbol, aliased_name: Symbol, location: Location?) -> void
|
108
|
+
end
|
109
|
+
|
110
|
+
class SuperclassMismatchError < StandardError
|
111
|
+
attr_reader name: TypeName
|
112
|
+
attr_reader entry: Environment::ClassEntry
|
113
|
+
|
114
|
+
def initialize: (name: TypeName, entry: Environment::ClassEntry) -> void
|
115
|
+
end
|
116
|
+
|
117
|
+
class InvalidOverloadMethodError < StandardError
|
118
|
+
attr_reader type_name: TypeName
|
119
|
+
attr_reader method_name: Symbol
|
120
|
+
attr_reader kind: :instance | :singleton
|
121
|
+
attr_reader members: Array[AST::Members::MethodDefinition]
|
122
|
+
|
123
|
+
def initialize: (type_name: TypeName, method_name: Symbol, kind: :instance | :singleton, members: Array[AST::Members::MethodDefinition]) -> void
|
124
|
+
end
|
125
|
+
|
126
|
+
class GenericParameterMismatchError < StandardError
|
127
|
+
attr_reader name: TypeName
|
128
|
+
attr_reader decl: AST::Declarations::Class | AST::Declarations::Module
|
129
|
+
|
130
|
+
def initialize: (name: TypeName, decl: AST::Declarations::Class | AST::Declarations::Module) -> void
|
131
|
+
end
|
132
|
+
|
133
|
+
class DuplicatedDeclarationError < StandardError
|
134
|
+
attr_reader name: TypeName | Symbol
|
135
|
+
attr_reader decls: Array[AST::Declarations::t]
|
136
|
+
|
137
|
+
def initialize: (TypeName | Symbol, *AST::Declarations::t) -> void
|
138
|
+
end
|
139
|
+
|
140
|
+
class InvalidVarianceAnnotationError < StandardError
|
141
|
+
attr_reader type_name: TypeName
|
142
|
+
attr_reader param: AST::Declarations::ModuleTypeParams::TypeParam
|
143
|
+
attr_reader location: Location?
|
144
|
+
|
145
|
+
def initialize: (type_name: TypeName, param: AST::Declarations::ModuleTypeParams::TypeParam, location: Location?) -> void
|
146
|
+
end
|
147
|
+
|
148
|
+
class RecursiveAliasDefinitionError < StandardError
|
149
|
+
type ty = Types::ClassInstance | Types::ClassSingleton | Types::Interface
|
150
|
+
type defn = DefinitionBuilder::MethodBuilder::Methods::Definition
|
151
|
+
|
152
|
+
attr_reader type: ty
|
153
|
+
attr_reader defs: Array[defn]
|
154
|
+
|
155
|
+
def initialize: (type: ty, defs: Array[defn]) -> void
|
156
|
+
|
157
|
+
def location: () -> Location?
|
158
|
+
end
|
20
159
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module RBS
|
2
|
+
class DefinitionBuilder
|
3
|
+
class MethodBuilder
|
4
|
+
class Methods
|
5
|
+
type instance_type = Types::ClassInstance | Types::ClassSingleton | Types::Interface
|
6
|
+
|
7
|
+
class Definition
|
8
|
+
type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
|
9
|
+
type accessibility = :public | :private
|
10
|
+
|
11
|
+
attr_reader name: Symbol
|
12
|
+
attr_reader type: instance_type
|
13
|
+
attr_reader originals: Array[original]
|
14
|
+
attr_reader overloads: Array[AST::Members::MethodDefinition]
|
15
|
+
attr_reader accessibilities: Array[accessibility]
|
16
|
+
|
17
|
+
def initialize: (name: Symbol, type: instance_type, originals: Array[original], overloads: Array[AST::Members::MethodDefinition], accessibilities: Array[accessibility]) -> void
|
18
|
+
|
19
|
+
def original: () -> original?
|
20
|
+
|
21
|
+
def accessibility: () -> accessibility
|
22
|
+
|
23
|
+
def self.empty: (name: Symbol, type: instance_type) -> instance
|
24
|
+
end
|
25
|
+
|
26
|
+
attr_reader type: instance_type
|
27
|
+
attr_reader methods: Hash[Symbol, Definition]
|
28
|
+
|
29
|
+
def initialize: (type: instance_type) -> void
|
30
|
+
|
31
|
+
def validate!: () -> self
|
32
|
+
|
33
|
+
def each: () { (Definition) -> void } -> void
|
34
|
+
| () -> Enumerator[Definition, void]
|
35
|
+
|
36
|
+
class Sorter
|
37
|
+
include TSort[Definition]
|
38
|
+
|
39
|
+
attr_reader methods: Hash[Symbol, Definition]
|
40
|
+
|
41
|
+
def initialize: (Hash[Symbol, Definition]) -> void
|
42
|
+
|
43
|
+
def tsort_each_node: { (Definition) -> void } -> void
|
44
|
+
|
45
|
+
def tsort_each_child: (Definition) { (Definition) -> void } -> void
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
attr_reader env: Environment
|
50
|
+
attr_reader instance_methods: Hash[TypeName, Methods]
|
51
|
+
attr_reader singleton_methods: Hash[TypeName, Methods]
|
52
|
+
attr_reader interface_methods: Hash[TypeName, Methods]
|
53
|
+
|
54
|
+
def initialize: (env: Environment) -> void
|
55
|
+
|
56
|
+
def build_instance: (TypeName) -> Methods
|
57
|
+
|
58
|
+
def build_singleton: (TypeName) -> Methods
|
59
|
+
|
60
|
+
def build_interface: (TypeName) -> Methods
|
61
|
+
|
62
|
+
def build_alias: (Methods, Methods::instance_type, member: AST::Members::Alias, accessibility: Methods::Definition::accessibility) -> void
|
63
|
+
|
64
|
+
def build_attribute: (Methods, Methods::instance_type, member: AST::Members::AttrAccessor | AST::Members::AttrReader | AST::Members::AttrWriter, accessibility: Methods::Definition::accessibility) -> void
|
65
|
+
|
66
|
+
def build_method: (Methods, Methods::instance_type, member: AST::Members::MethodDefinition, accessibility: Methods::Definition::accessibility) -> void
|
67
|
+
|
68
|
+
def each_member_with_accessibility: (Array[AST::Members::t | AST::Declarations::t], ?accessibility: Definition::accessibility) { (AST::Members::t | AST::Declarations::t, Definition::accessibility) -> void } -> void
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/sig/substitution.rbs
CHANGED
data/sig/types.rbs
CHANGED
@@ -115,7 +115,6 @@ module RBS
|
|
115
115
|
|
116
116
|
class Variable
|
117
117
|
attr_reader name: Symbol
|
118
|
-
attr_reader location: Location?
|
119
118
|
|
120
119
|
@@count: Integer
|
121
120
|
|
@@ -140,7 +139,6 @@ module RBS
|
|
140
139
|
|
141
140
|
class ClassSingleton
|
142
141
|
attr_reader name: TypeName
|
143
|
-
attr_reader location: Location?
|
144
142
|
|
145
143
|
include _TypeBase
|
146
144
|
|
@@ -178,8 +176,6 @@ module RBS
|
|
178
176
|
class Interface
|
179
177
|
include Application
|
180
178
|
|
181
|
-
attr_reader location: Location?
|
182
|
-
|
183
179
|
def initialize: (name: TypeName, args: Array[t], location: Location?) -> void
|
184
180
|
|
185
181
|
include _TypeBase
|
@@ -194,15 +190,12 @@ module RBS
|
|
194
190
|
class ClassInstance
|
195
191
|
include Application
|
196
192
|
|
197
|
-
attr_reader location: Location?
|
198
|
-
|
199
193
|
def initialize: (name: TypeName, args: Array[t], location: Location?) -> void
|
200
194
|
|
201
195
|
include _TypeBase
|
202
196
|
end
|
203
197
|
|
204
198
|
class Alias
|
205
|
-
attr_reader location: Location?
|
206
199
|
attr_reader name: TypeName
|
207
200
|
|
208
201
|
def initialize: (name: TypeName, location: Location?) -> void
|
@@ -215,7 +208,6 @@ module RBS
|
|
215
208
|
|
216
209
|
class Tuple
|
217
210
|
attr_reader types: Array[t]
|
218
|
-
attr_reader location: Location?
|
219
211
|
|
220
212
|
def initialize: (types: Array[t], location: Location?) -> void
|
221
213
|
|
@@ -224,7 +216,6 @@ module RBS
|
|
224
216
|
|
225
217
|
class Record
|
226
218
|
attr_reader fields: Hash[Symbol, t]
|
227
|
-
attr_reader location: Location?
|
228
219
|
|
229
220
|
def initialize: (fields: Hash[Symbol, t], location: Location?) -> void
|
230
221
|
|
@@ -233,7 +224,6 @@ module RBS
|
|
233
224
|
|
234
225
|
class Optional
|
235
226
|
attr_reader type: t
|
236
|
-
attr_reader location: Location?
|
237
227
|
|
238
228
|
def initialize: (type: t, location: Location?) -> void
|
239
229
|
|
@@ -242,7 +232,6 @@ module RBS
|
|
242
232
|
|
243
233
|
class Union
|
244
234
|
attr_reader types: Array[t]
|
245
|
-
attr_reader location: Location?
|
246
235
|
|
247
236
|
def initialize: (types: Array[t], location: Location?) -> void
|
248
237
|
|
@@ -254,7 +243,6 @@ module RBS
|
|
254
243
|
|
255
244
|
class Intersection
|
256
245
|
attr_reader types: Array[t]
|
257
|
-
attr_reader location: Location?
|
258
246
|
|
259
247
|
def initialize: (types: Array[t], location: Location?) -> void
|
260
248
|
|
@@ -336,7 +324,7 @@ module RBS
|
|
336
324
|
|
337
325
|
class Block
|
338
326
|
attr_reader type: Types::Function
|
339
|
-
attr_reader required:
|
327
|
+
attr_reader required: bool
|
340
328
|
|
341
329
|
def initialize: (type: Types::Function, required: boolish) -> void
|
342
330
|
|
@@ -352,7 +340,6 @@ module RBS
|
|
352
340
|
class Proc
|
353
341
|
attr_reader type: Function
|
354
342
|
attr_reader block: Block?
|
355
|
-
attr_reader location: Location?
|
356
343
|
|
357
344
|
def initialize: (location: Location?, type: Function, block: Block?) -> void
|
358
345
|
|
@@ -363,7 +350,6 @@ module RBS
|
|
363
350
|
type literal = String | Integer | Symbol | TrueClass | FalseClass
|
364
351
|
|
365
352
|
attr_reader literal: literal
|
366
|
-
attr_reader location: Location?
|
367
353
|
|
368
354
|
def initialize: (literal: literal, location: Location?) -> void
|
369
355
|
|
data/stdlib/csv/0/csv.rbs
CHANGED
@@ -160,6 +160,7 @@
|
|
160
160
|
#
|
161
161
|
class CSV < Object
|
162
162
|
include Enumerable[untyped]
|
163
|
+
extend Forwardable
|
163
164
|
|
164
165
|
# This method is intended as the primary interface for reading CSV files. You
|
165
166
|
# pass a `path` and any `options` you wish to set for the read. Each row of file
|
@@ -408,6 +409,7 @@ CSV::VERSION: String
|
|
408
409
|
#
|
409
410
|
class CSV::Row < Object
|
410
411
|
include Enumerable[untyped]
|
412
|
+
extend Forwardable
|
411
413
|
|
412
414
|
# If a two-element Array is provided, it is assumed to be a header and field and
|
413
415
|
# the pair is appended. A Hash works the same way with the key being the header
|
@@ -579,6 +581,7 @@ end
|
|
579
581
|
#
|
580
582
|
class CSV::Table[out Elem] < Object
|
581
583
|
include Enumerable[untyped]
|
584
|
+
extend Forwardable
|
582
585
|
|
583
586
|
# Constructs a new CSV::Table from `array_of_rows`, which are expected to be
|
584
587
|
# CSV::Row objects. All rows are assumed to have the same headers.
|
@@ -373,7 +373,7 @@ class Pathname
|
|
373
373
|
# Note that the results never contain the entries `.` and `..` in the directory
|
374
374
|
# because they are not children.
|
375
375
|
#
|
376
|
-
def children: (?boolish with_directory) ->
|
376
|
+
def children: (?boolish with_directory) -> Array[Pathname]
|
377
377
|
|
378
378
|
# Changes file permissions.
|
379
379
|
#
|
data/stdlib/prime/0/prime.rbs
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: RBS is the language for type signatures for Ruby and standard library
|
14
14
|
definitions.
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- schema/members.json
|
159
159
|
- schema/methodType.json
|
160
160
|
- schema/types.json
|
161
|
+
- sig/ancestor_builder.rbs
|
161
162
|
- sig/annotation.rbs
|
162
163
|
- sig/buffer.rbs
|
163
164
|
- sig/builtin_names.rbs
|
@@ -173,6 +174,7 @@ files:
|
|
173
174
|
- sig/errors.rbs
|
174
175
|
- sig/location.rbs
|
175
176
|
- sig/members.rbs
|
177
|
+
- sig/method_builder.rbs
|
176
178
|
- sig/method_types.rbs
|
177
179
|
- sig/namespace.rbs
|
178
180
|
- sig/parser.rbs
|