rbs 3.5.3 → 3.6.0.dev.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/dependabot.yml +5 -1
- data/.github/workflows/ruby.yml +2 -18
- data/.github/workflows/windows.yml +26 -0
- data/CHANGELOG.md +0 -18
- data/core/array.rbs +10 -10
- data/core/basic_object.rbs +3 -3
- data/core/enumerable.rbs +6 -0
- data/core/enumerator.rbs +7 -0
- data/core/fiber.rbs +1 -1
- data/core/global_variables.rbs +2 -2
- data/core/kernel.rbs +67 -38
- data/core/method.rbs +98 -7
- data/core/module.rbs +2 -2
- data/core/proc.rbs +184 -23
- data/core/ractor.rbs +1 -1
- data/core/range.rbs +30 -0
- data/core/refinement.rbs +16 -26
- data/core/symbol.rbs +34 -26
- data/core/thread.rbs +2 -2
- data/core/trace_point.rbs +12 -12
- data/core/unbound_method.rbs +1 -1
- data/docs/syntax.md +21 -9
- data/ext/rbs_extension/parser.c +119 -51
- data/ext/rbs_extension/ruby_objs.c +2 -1
- data/ext/rbs_extension/ruby_objs.h +1 -1
- data/lib/rbs/ast/declarations.rb +36 -0
- data/lib/rbs/ast/type_param.rb +71 -15
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/cli/validate.rb +41 -7
- data/lib/rbs/cli.rb +3 -3
- data/lib/rbs/definition.rb +2 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +30 -4
- data/lib/rbs/definition_builder.rb +21 -6
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/errors.rb +7 -2
- data/lib/rbs/file_finder.rb +9 -12
- data/lib/rbs/locator.rb +8 -5
- data/lib/rbs/prototype/rbi.rb +2 -1
- data/lib/rbs/prototype/runtime.rb +3 -2
- data/lib/rbs/sorter.rb +9 -6
- data/lib/rbs/test/type_check.rb +6 -0
- data/lib/rbs/types.rb +11 -0
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/vendorer.rb +3 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -0
- data/sig/declarations.rbs +6 -0
- data/sig/definition.rbs +1 -1
- data/sig/definition_builder.rbs +3 -1
- data/sig/errors.rbs +3 -2
- data/sig/file_finder.rbs +24 -2
- data/sig/method_types.rbs +1 -1
- data/sig/sorter.rbs +1 -1
- data/sig/type_param.rbs +41 -9
- data/sig/types.rbs +12 -0
- data/sig/visitor.rbs +47 -0
- data/stdlib/csv/0/csv.rbs +27 -0
- data/stdlib/net-http/0/net-http.rbs +1 -1
- data/stdlib/zlib/0/gzip_reader.rbs +5 -1
- metadata +5 -2
data/lib/rbs/locator.rb
CHANGED
@@ -171,13 +171,16 @@ module RBS
|
|
171
171
|
if test_loc(pos, location: type_param.location)
|
172
172
|
array.unshift(type_param)
|
173
173
|
|
174
|
-
if upper_bound = type_param.
|
175
|
-
find_in_type(pos, type: upper_bound, array: array)
|
176
|
-
find_in_loc(pos, location: type_param.location, array: array)
|
177
|
-
else
|
178
|
-
find_in_loc(pos, location: type_param.location, array: array)
|
174
|
+
if upper_bound = type_param.upper_bound_type
|
175
|
+
find_in_type(pos, type: upper_bound, array: array) and return true
|
179
176
|
end
|
180
177
|
|
178
|
+
if default_type = type_param.default_type
|
179
|
+
find_in_type(pos, type: default_type, array: array) and return true
|
180
|
+
end
|
181
|
+
|
182
|
+
find_in_loc(pos, location: type_param.location, array: array)
|
183
|
+
|
181
184
|
true
|
182
185
|
else
|
183
186
|
false
|
data/lib/rbs/prototype/rbi.rb
CHANGED
@@ -332,8 +332,6 @@ module RBS
|
|
332
332
|
|
333
333
|
public_instance_methods = mod.public_instance_methods.select {|name| target_method?(mod, instance: name) }
|
334
334
|
unless public_instance_methods.empty?
|
335
|
-
members << AST::Members::Public.new(location: nil)
|
336
|
-
|
337
335
|
public_instance_methods.sort.each do |name|
|
338
336
|
method = mod.instance_method(name)
|
339
337
|
next if todo_object&.skip_instance_method?(module_name: module_name_absolute, method: method, accessibility: :public)
|
@@ -656,6 +654,9 @@ module RBS
|
|
656
654
|
ast = RubyVM::AbstractSyntaxTree.of(method)
|
657
655
|
rescue ArgumentError
|
658
656
|
return # When the method is defined in eval
|
657
|
+
rescue RuntimeError => error
|
658
|
+
raise unless error.message.include?("prism")
|
659
|
+
return # When the method was compiled by prism
|
659
660
|
end
|
660
661
|
|
661
662
|
if ast && ast.type == :SCOPE
|
data/lib/rbs/sorter.rb
CHANGED
@@ -17,18 +17,18 @@ module RBS
|
|
17
17
|
buffer = Buffer.new(name: path, content: path.read)
|
18
18
|
_, _, sigs = Parser.parse_signature(buffer)
|
19
19
|
|
20
|
-
sigs.
|
21
|
-
sort_decl
|
20
|
+
sigs = sigs.map do |m|
|
21
|
+
sort_decl m
|
22
22
|
end
|
23
23
|
|
24
24
|
stdout.puts "Writing #{path}..."
|
25
25
|
path.open('w') do |out|
|
26
26
|
writer = RBS::Writer.new(out: out)
|
27
|
-
writer.write sigs
|
27
|
+
writer.write _ = sigs
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def sort_decl
|
31
|
+
def sort_decl(decl)
|
32
32
|
case decl
|
33
33
|
when Declarations::Class, Declarations::Module, Declarations::Interface
|
34
34
|
partitioned = {
|
@@ -52,7 +52,8 @@ module RBS
|
|
52
52
|
private_instance_methods: [],
|
53
53
|
} #: partitioned
|
54
54
|
|
55
|
-
decl.members.
|
55
|
+
members = decl.members.map { |m| sort_decl m }
|
56
|
+
decl = decl.update(members: _ = members)
|
56
57
|
|
57
58
|
visibility_annotated_members = [] #: Array[member]
|
58
59
|
|
@@ -188,7 +189,9 @@ module RBS
|
|
188
189
|
|
189
190
|
members.push(*partitioned[:other_decls])
|
190
191
|
|
191
|
-
decl.members
|
192
|
+
decl.update(members: _ = members)
|
193
|
+
else
|
194
|
+
decl
|
192
195
|
end
|
193
196
|
end
|
194
197
|
end
|
data/lib/rbs/test/type_check.rb
CHANGED
@@ -59,6 +59,8 @@ module RBS
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def method_call(method_name, method_type, call, errors:)
|
62
|
+
return errors if method_type.type.is_a?(Types::UntypedFunction)
|
63
|
+
|
62
64
|
args(method_name, method_type, method_type.type, call.method_call, errors, type_error: Errors::ArgumentTypeError, argument_error: Errors::ArgumentError)
|
63
65
|
self.return(method_name, method_type, method_type.type, call.method_call, errors, return_error: Errors::ReturnTypeError)
|
64
66
|
|
@@ -150,6 +152,8 @@ module RBS
|
|
150
152
|
end
|
151
153
|
|
152
154
|
def zip_args(args, fun, &block)
|
155
|
+
return true if fun.is_a?(Types::UntypedFunction)
|
156
|
+
|
153
157
|
case
|
154
158
|
when args.empty?
|
155
159
|
if fun.required_positionals.empty? && fun.trailing_positionals.empty? && fun.required_keywords.empty?
|
@@ -355,6 +359,8 @@ module RBS
|
|
355
359
|
fun = method_type.type
|
356
360
|
take_has_rest = !!parameters.find { |(op, _)| op == :rest }
|
357
361
|
|
362
|
+
return true if fun.is_a?(Types::UntypedFunction)
|
363
|
+
|
358
364
|
fun.required_positionals.each do
|
359
365
|
op, _ = parameters.first
|
360
366
|
return false if op.nil? || op == :keyreq || op == :key || op == :keyrest
|
data/lib/rbs/types.rb
CHANGED
@@ -1278,6 +1278,17 @@ module RBS
|
|
1278
1278
|
def return_to_s
|
1279
1279
|
return_type.to_s(1)
|
1280
1280
|
end
|
1281
|
+
|
1282
|
+
def ==(other)
|
1283
|
+
other.is_a?(UntypedFunction) && other.return_type == return_type
|
1284
|
+
end
|
1285
|
+
|
1286
|
+
alias eql? ==
|
1287
|
+
|
1288
|
+
def hash
|
1289
|
+
self.class.hash ^ return_type.hash
|
1290
|
+
end
|
1291
|
+
|
1281
1292
|
end
|
1282
1293
|
|
1283
1294
|
class Block
|
data/lib/rbs/validator.rb
CHANGED
@@ -43,7 +43,7 @@ module RBS
|
|
43
43
|
InvalidTypeApplicationError.check!(
|
44
44
|
type_name: type.name,
|
45
45
|
args: type.args,
|
46
|
-
params: type_params
|
46
|
+
params: type_params,
|
47
47
|
location: type.location
|
48
48
|
)
|
49
49
|
end
|
@@ -125,7 +125,7 @@ module RBS
|
|
125
125
|
# @type var each_child: ^(Symbol) { (Symbol) -> void } -> void
|
126
126
|
each_child = -> (name, &block) do
|
127
127
|
if param = params.find {|p| p.name == name }
|
128
|
-
if b = param.
|
128
|
+
if b = param.upper_bound_type
|
129
129
|
b.free_variables.each do |tv|
|
130
130
|
block[tv]
|
131
131
|
end
|
data/lib/rbs/vendorer.rb
CHANGED
@@ -31,7 +31,7 @@ module RBS
|
|
31
31
|
|
32
32
|
if core_root = loader.core_root
|
33
33
|
RBS.logger.info "Vendoring core RBSs in #{vendor_dir + "core"}..."
|
34
|
-
FileFinder.each_file(core_root,
|
34
|
+
FileFinder.each_file(core_root, skip_hidden: true) do |file_path|
|
35
35
|
paths << [file_path, Pathname("core") + file_path.relative_path_from(core_root)]
|
36
36
|
end
|
37
37
|
end
|
@@ -43,7 +43,7 @@ module RBS
|
|
43
43
|
|
44
44
|
RBS.logger.info "Vendoring #{lib.name}(#{spec.version}) RBSs in #{vendor_dir + dest_dir}..."
|
45
45
|
|
46
|
-
FileFinder.each_file(path, skip_hidden: true
|
46
|
+
FileFinder.each_file(path, skip_hidden: true) do |file_path|
|
47
47
|
paths << [file_path, dest_dir + file_path.relative_path_from(path)]
|
48
48
|
end
|
49
49
|
|
@@ -52,7 +52,7 @@ module RBS
|
|
52
52
|
|
53
53
|
RBS.logger.info "Vendoring #{lib.name}(#{path.version}) RBSs in #{vendor_dir + dest_dir}..."
|
54
54
|
|
55
|
-
FileFinder.each_file(path.path, skip_hidden: true
|
55
|
+
FileFinder.each_file(path.path, skip_hidden: true) do |file_path|
|
56
56
|
paths << [file_path, dest_dir + file_path.relative_path_from(path.path)]
|
57
57
|
end
|
58
58
|
else
|
data/lib/rbs/version.rb
CHANGED
data/lib/rbs.rb
CHANGED
data/sig/declarations.rbs
CHANGED
@@ -77,6 +77,8 @@ module RBS
|
|
77
77
|
|
78
78
|
def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], super_class: Super?, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
|
79
79
|
|
80
|
+
def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?super_class: Super?, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?) -> Declarations::Class
|
81
|
+
|
80
82
|
include _HashEqual
|
81
83
|
include _ToJson
|
82
84
|
end
|
@@ -131,6 +133,8 @@ module RBS
|
|
131
133
|
|
132
134
|
def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], location: loc?, annotations: Array[Annotation], self_types: Array[Self], comment: Comment?) -> void
|
133
135
|
|
136
|
+
def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?location: loc?, ?annotations: Array[Annotation], ?self_types: Array[Self], ?comment: Comment?) -> Declarations::Module
|
137
|
+
|
134
138
|
include _HashEqual
|
135
139
|
include _ToJson
|
136
140
|
end
|
@@ -160,6 +164,8 @@ module RBS
|
|
160
164
|
|
161
165
|
def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
|
162
166
|
|
167
|
+
def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?) -> Declarations::Interface
|
168
|
+
|
163
169
|
include MixinHelper
|
164
170
|
|
165
171
|
include _HashEqual
|
data/sig/definition.rbs
CHANGED
@@ -66,7 +66,7 @@ module RBS
|
|
66
66
|
#
|
67
67
|
def map_type: () { (Types::t) -> Types::t } -> Method
|
68
68
|
|
69
|
-
def map_type_bound: () { (
|
69
|
+
def map_type_bound: () { (Types::t) -> Types::t } -> Method
|
70
70
|
|
71
71
|
def map_method_type: () { (MethodType) -> MethodType } -> Method
|
72
72
|
|
data/sig/definition_builder.rbs
CHANGED
@@ -116,6 +116,7 @@ module RBS
|
|
116
116
|
Definition class_definition,
|
117
117
|
MethodBuilder::Methods::Definition method_definition,
|
118
118
|
Substitution subst,
|
119
|
+
Hash[Symbol, Definition::Method]? self_type_methods,
|
119
120
|
defined_in: TypeName,
|
120
121
|
?implemented_in: TypeName?
|
121
122
|
) -> void
|
@@ -137,7 +138,8 @@ module RBS
|
|
137
138
|
TypeName module_name,
|
138
139
|
MethodBuilder::Methods module_methods,
|
139
140
|
interface_methods interface_methods,
|
140
|
-
Substitution subst
|
141
|
+
Substitution subst,
|
142
|
+
Hash[Symbol, Definition::Method]? self_type_methods,
|
141
143
|
) -> void
|
142
144
|
|
143
145
|
# Updates `definition` with methods and variables of `type_name` that can be a module or a class
|
data/sig/errors.rbs
CHANGED
@@ -60,11 +60,12 @@ module RBS
|
|
60
60
|
attr_reader type_name: TypeName
|
61
61
|
attr_reader args: Array[Types::t]
|
62
62
|
attr_reader params: Array[Symbol]
|
63
|
+
attr_reader type_params: Array[AST::TypeParam]
|
63
64
|
attr_reader location: Location[untyped, untyped]?
|
64
65
|
|
65
|
-
def initialize: (type_name: TypeName, args: Array[Types::t], params: Array[
|
66
|
+
def initialize: (type_name: TypeName, args: Array[Types::t], params: Array[AST::TypeParam], location: Location[untyped, untyped]?) -> void
|
66
67
|
|
67
|
-
def self.check!: (type_name: TypeName, args: Array[Types::t], params: Array[
|
68
|
+
def self.check!: (type_name: TypeName, args: Array[Types::t], params: Array[AST::TypeParam], location: Location[untyped, untyped]?) -> void
|
68
69
|
end
|
69
70
|
|
70
71
|
class RecursiveAncestorError < DefinitionError
|
data/sig/file_finder.rbs
CHANGED
@@ -1,6 +1,28 @@
|
|
1
1
|
module RBS
|
2
2
|
module FileFinder
|
3
|
-
|
4
|
-
|
3
|
+
# Enumerate RBS files under path
|
4
|
+
#
|
5
|
+
# When `path` is a file, it yields the path.
|
6
|
+
#
|
7
|
+
# ```rb
|
8
|
+
# FileFinder.each_file(Pathname("foo.rbs")) {} # => yields `foo.rbs`
|
9
|
+
# ```
|
10
|
+
#
|
11
|
+
# When `path` is a directory, it yields all `.rbs` files under the directory, recursively.
|
12
|
+
#
|
13
|
+
# * Skips files under directory starting with `_`, if `skip_hidden` is `true`
|
14
|
+
# * Yields files under directory starting with `_` even if `skip_hidden` is true, when the `_` directory is given explicitly, and `immediate:` is `true`
|
15
|
+
#
|
16
|
+
# ```rb
|
17
|
+
# FileFinder.each_file(Pathname("sig"), skip_hidden: false) {} # => yields all `.rbs` files under `sig`
|
18
|
+
# FileFinder.each_file(Pathname("sig"), skip_hidden: true) {} # => yields all `.rbs` files under `sig`, skips `_` directories
|
19
|
+
#
|
20
|
+
# FileFinder.each_file(Pathname("_hidden"), skip_hidden: true) {} # => yields all `.rbs` files under `_hidden`, skips other `_` directories
|
21
|
+
# ```
|
22
|
+
#
|
23
|
+
# `immediate` keyword is unused and left for API compatibility.
|
24
|
+
#
|
25
|
+
def self?.each_file: (Pathname path, ?immediate: top, skip_hidden: boolish) { (Pathname) -> void } -> void
|
26
|
+
| (Pathname path, ?immediate: top, skip_hidden: boolish) -> Enumerator[Pathname, void]
|
5
27
|
end
|
6
28
|
end
|
data/sig/method_types.rbs
CHANGED
@@ -40,7 +40,7 @@ module RBS
|
|
40
40
|
#
|
41
41
|
def map_type: () { (Types::t) -> Types::t } -> MethodType
|
42
42
|
|
43
|
-
def map_type_bound: () { (
|
43
|
+
def map_type_bound: () { (Types::t) -> Types::t } -> MethodType
|
44
44
|
|
45
45
|
def each_type: () { (Types::t) -> void } -> void
|
46
46
|
| () -> Enumerator[Types::t, void]
|
data/sig/sorter.rbs
CHANGED
data/sig/type_param.rbs
CHANGED
@@ -4,12 +4,13 @@ module RBS
|
|
4
4
|
# Key
|
5
5
|
# ^^^ name
|
6
6
|
#
|
7
|
-
# unchecked out Elem < _ToJson
|
8
|
-
# ^^^^^^^^^
|
9
|
-
# ^^^
|
10
|
-
# ^^^^
|
11
|
-
# ^^^^^^^^^
|
12
|
-
|
7
|
+
# unchecked out Elem < _ToJson = untyped
|
8
|
+
# ^^^^^^^^^ unchecked
|
9
|
+
# ^^^ variance
|
10
|
+
# ^^^^ name
|
11
|
+
# ^^^^^^^^^ upper_bound
|
12
|
+
# ^^^^^^^^^ default
|
13
|
+
type loc = Location[:name, :variance | :unchecked | :upper_bound | :default]
|
13
14
|
|
14
15
|
type variance = :invariant | :covariant | :contravariant
|
15
16
|
|
@@ -19,9 +20,13 @@ module RBS
|
|
19
20
|
attr_reader variance: variance
|
20
21
|
attr_reader location: loc?
|
21
22
|
|
22
|
-
|
23
|
+
%a{pure} def upper_bound: () -> bound?
|
23
24
|
|
24
|
-
|
25
|
+
attr_reader upper_bound_type: Types::t?
|
26
|
+
|
27
|
+
attr_reader default_type: Types::t?
|
28
|
+
|
29
|
+
def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, location: loc?, ?default_type: Types::t?) -> void
|
25
30
|
|
26
31
|
include _ToJson
|
27
32
|
|
@@ -37,7 +42,7 @@ module RBS
|
|
37
42
|
|
38
43
|
def unchecked?: () -> bool
|
39
44
|
|
40
|
-
def map_type: () { (
|
45
|
+
def map_type: () { (Types::t) -> Types::t } -> TypeParam
|
41
46
|
|
42
47
|
# Helper function to resolve _class instance types_ to _type variables_.
|
43
48
|
#
|
@@ -69,6 +74,33 @@ module RBS
|
|
69
74
|
def self.rename: (Array[TypeParam], new_names: Array[Symbol]) -> Array[TypeParam]
|
70
75
|
|
71
76
|
def to_s: () -> String
|
77
|
+
|
78
|
+
# Returns an application with respect to type params` default
|
79
|
+
#
|
80
|
+
def self.application: (Array[TypeParam], Array[Types::t]) -> Substitution?
|
81
|
+
|
82
|
+
# Returns an array of type args, that fills ommited types with the defaults
|
83
|
+
#
|
84
|
+
# ```rbs
|
85
|
+
# interface _Foo[T, S = untyped]
|
86
|
+
# end
|
87
|
+
# ```
|
88
|
+
#
|
89
|
+
# Normalizing type args with `_Foo` works as following:
|
90
|
+
#
|
91
|
+
# ```rbs
|
92
|
+
# _Foo[String] # => _Foo[String, untyped]
|
93
|
+
# _Foo[String, Integer] # => _Foo[String, Integer]
|
94
|
+
# _Foo # => _Foo (Omitting missing args)
|
95
|
+
# _Foo[String, Integer, untyped] # => _Foo[String, Integer, untyped] (Keeping extra args)
|
96
|
+
# ```
|
97
|
+
#
|
98
|
+
# Note that it allows iinvalid arities.
|
99
|
+
#
|
100
|
+
# * Missing args will be omitted
|
101
|
+
# * Extra args will be keeped
|
102
|
+
#
|
103
|
+
def self.normalize_args: (Array[TypeParam], Array[Types::t]) -> Array[Types::t]
|
72
104
|
end
|
73
105
|
end
|
74
106
|
end
|
data/sig/types.rbs
CHANGED
@@ -446,6 +446,12 @@ module RBS
|
|
446
446
|
def has_classish_type?: () -> bool
|
447
447
|
|
448
448
|
def with_nonreturn_void?: () -> bool
|
449
|
+
|
450
|
+
def ==: (untyped) -> bool
|
451
|
+
|
452
|
+
alias eql? ==
|
453
|
+
|
454
|
+
def hash: () -> Integer
|
449
455
|
end
|
450
456
|
|
451
457
|
# Function type without type checking arguments
|
@@ -489,6 +495,12 @@ module RBS
|
|
489
495
|
|
490
496
|
# Returns `return_type.to_s(1)`
|
491
497
|
def return_to_s: () -> String
|
498
|
+
|
499
|
+
def ==: (untyped) -> bool
|
500
|
+
|
501
|
+
alias eql? ==
|
502
|
+
|
503
|
+
def hash: () -> Integer
|
492
504
|
end
|
493
505
|
|
494
506
|
type function = Types::Function | Types::UntypedFunction
|
data/sig/visitor.rbs
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
class Visitor
|
4
|
+
def visit_all: (Enumerable[(Members::Base | Declarations::Base)] nodes) -> void
|
5
|
+
|
6
|
+
def visit: ((Members::Base | Declarations::Base) node) -> void
|
7
|
+
|
8
|
+
def visit_declaration_global: (Declarations::Global node) -> void
|
9
|
+
|
10
|
+
def visit_declaration_class: (Declarations::Class node) -> void
|
11
|
+
|
12
|
+
def visit_declaration_module: (Declarations::Module node) -> void
|
13
|
+
|
14
|
+
def visit_declaration_constant: (Declarations::Constant node) -> void
|
15
|
+
|
16
|
+
def visit_declaration_type_alias: (Declarations::TypeAlias node) -> void
|
17
|
+
|
18
|
+
def visit_declaration_interface: (Declarations::Interface node) -> void
|
19
|
+
|
20
|
+
def visit_member_alias: (Members::Alias node) -> void
|
21
|
+
|
22
|
+
def visit_member_class_instance_variable: (Members::ClassInstanceVariable node) -> void
|
23
|
+
|
24
|
+
def visit_member_class_variable: (Members::ClassVariable node) -> void
|
25
|
+
|
26
|
+
def visit_member_instance_variable: (Members::InstanceVariable node) -> void
|
27
|
+
|
28
|
+
def visit_member_private: (Members::Private node) -> void
|
29
|
+
|
30
|
+
def visit_member_public: (Members::Public node) -> void
|
31
|
+
|
32
|
+
def visit_member_method_definition: (Members::MethodDefinition node) -> void
|
33
|
+
|
34
|
+
def visit_member_attr_reader: (Members::AttrReader node) -> void
|
35
|
+
|
36
|
+
def visit_member_attr_writer: (Members::AttrWriter node) -> void
|
37
|
+
|
38
|
+
def visit_member_attr_accessor: (Members::AttrAccessor node) -> void
|
39
|
+
|
40
|
+
def visit_member_include: (Members::Include node) -> void
|
41
|
+
|
42
|
+
def visit_member_prepend: (Members::Prepend node) -> void
|
43
|
+
|
44
|
+
def visit_member_extend: (Members::Extend node) -> void
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/stdlib/csv/0/csv.rbs
CHANGED
@@ -2287,6 +2287,33 @@ class CSV::Row < Object
|
|
2287
2287
|
include Enumerable[Array[String]]
|
2288
2288
|
extend Forwardable
|
2289
2289
|
|
2290
|
+
# <!--
|
2291
|
+
# rdoc-file=lib/csv/row.rb
|
2292
|
+
# - CSV::Row.new(headers, fields, header_row = false) -> csv_row
|
2293
|
+
# -->
|
2294
|
+
# Returns the new CSV::Row instance constructed from arguments `headers` and
|
2295
|
+
# `fields`; both should be Arrays; note that the fields need not be Strings:
|
2296
|
+
# row = CSV::Row.new(['Name', 'Value'], ['foo', 0])
|
2297
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0>
|
2298
|
+
#
|
2299
|
+
# If the Array lengths are different, the shorter is `nil`-filled:
|
2300
|
+
# row = CSV::Row.new(['Name', 'Value', 'Date', 'Size'], ['foo', 0])
|
2301
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0 "Date":nil "Size":nil>
|
2302
|
+
#
|
2303
|
+
# Each CSV::Row object is either a *field row* or a *header row*; by default, a
|
2304
|
+
# new row is a field row; for the row created above:
|
2305
|
+
# row.field_row? # => true
|
2306
|
+
# row.header_row? # => false
|
2307
|
+
#
|
2308
|
+
# If the optional argument `header_row` is given as `true`, the created row is a
|
2309
|
+
# header row:
|
2310
|
+
# row = CSV::Row.new(['Name', 'Value'], ['foo', 0], header_row = true)
|
2311
|
+
# row # => #<CSV::Row "Name":"foo" "Value":0>
|
2312
|
+
# row.field_row? # => false
|
2313
|
+
# row.header_row? # => true
|
2314
|
+
#
|
2315
|
+
def initialize: (Array[untyped] headers, Array[untyped] fields, ?header_row: bool) -> void
|
2316
|
+
|
2290
2317
|
# <!--
|
2291
2318
|
# rdoc-file=lib/csv/row.rb
|
2292
2319
|
# - row << [header, value] -> self
|
@@ -2437,7 +2437,7 @@ module Net
|
|
2437
2437
|
# * #each_name: Passes each field name to the block.
|
2438
2438
|
# * #each_value: Passes each string field value to the block.
|
2439
2439
|
#
|
2440
|
-
module HTTPHeader
|
2440
|
+
module HTTPHeader : BasicObject
|
2441
2441
|
# <!--
|
2442
2442
|
# rdoc-file=lib/net/http/header.rb
|
2443
2443
|
# - initialize_http_header(initheader)
|
@@ -122,6 +122,9 @@ module Zlib
|
|
122
122
|
class GzipReader < Zlib::GzipFile
|
123
123
|
include Enumerable[String]
|
124
124
|
|
125
|
+
def self.wrap: (IO io) -> instance
|
126
|
+
| (IO io) { (instance gz) -> void } -> void
|
127
|
+
|
125
128
|
# <!--
|
126
129
|
# rdoc-file=ext/zlib/zlib.c
|
127
130
|
# - Zlib::GzipReader.open(filename) {|gz| ... }
|
@@ -130,7 +133,8 @@ module Zlib
|
|
130
133
|
# GzipReader object associated with that file. Further details of this method
|
131
134
|
# are in Zlib::GzipReader.new and ZLib::GzipFile.wrap.
|
132
135
|
#
|
133
|
-
def self.open: (String
|
136
|
+
def self.open: (String | _ToPath filename) -> instance
|
137
|
+
| (String | _ToPath filename) { (instance gz) -> void } -> void
|
134
138
|
|
135
139
|
# <!--
|
136
140
|
# rdoc-file=ext/zlib/zlib.c
|
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: 3.
|
4
|
+
version: 3.6.0.dev.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logger
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- ".github/workflows/dependabot.yml"
|
40
40
|
- ".github/workflows/ruby.yml"
|
41
41
|
- ".github/workflows/typecheck.yml"
|
42
|
+
- ".github/workflows/windows.yml"
|
42
43
|
- ".gitignore"
|
43
44
|
- ".rubocop.yml"
|
44
45
|
- BSDL
|
@@ -174,6 +175,7 @@ files:
|
|
174
175
|
- lib/rbs/ast/directives.rb
|
175
176
|
- lib/rbs/ast/members.rb
|
176
177
|
- lib/rbs/ast/type_param.rb
|
178
|
+
- lib/rbs/ast/visitor.rb
|
177
179
|
- lib/rbs/buffer.rb
|
178
180
|
- lib/rbs/builtin_names.rb
|
179
181
|
- lib/rbs/cli.rb
|
@@ -338,6 +340,7 @@ files:
|
|
338
340
|
- sig/variance_calculator.rbs
|
339
341
|
- sig/vendorer.rbs
|
340
342
|
- sig/version.rbs
|
343
|
+
- sig/visitor.rbs
|
341
344
|
- sig/writer.rbs
|
342
345
|
- stdlib/abbrev/0/abbrev.rbs
|
343
346
|
- stdlib/abbrev/0/array.rbs
|