rbs 3.5.3 → 3.6.0.dev.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|