raap 0.5.0 → 0.6.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/README.md +8 -1
- data/Rakefile +3 -1
- data/lib/raap/cli.rb +18 -15
- data/lib/raap/function_type.rb +6 -6
- data/lib/raap/method_property.rb +15 -15
- data/lib/raap/method_type.rb +5 -5
- data/lib/raap/minitest.rb +2 -2
- data/lib/raap/symbolic_caller.rb +2 -2
- data/lib/raap/type.rb +27 -27
- data/lib/raap/type_substitution.rb +3 -3
- data/lib/raap/value/interface.rb +5 -5
- data/lib/raap/value/intersection.rb +2 -2
- data/lib/raap/value/module.rb +1 -1
- data/lib/raap/version.rb +1 -1
- data/lib/raap.rb +1 -0
- data/lib/shims.rb +38 -0
- data/rbs_collection.lock.yaml +5 -5
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5780226ede8755c1ef7f82e18b7e8d96a63d2ab6eb253bc8964f5745776f993f
|
4
|
+
data.tar.gz: 6e9dd39a302f555cac12ecb6232a7c2f39d206911fcee7a30650d5fe4a9cbc63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2841e75bc0b03742cc0d9268f9ec2ae69f2f9c6e1f579ec6e794db5e9b8f80d763fac4ce28abd7361e19ada8f6289e594b6a9a3cdc63b1806181a69a9f49bb6a
|
7
|
+
data.tar.gz: a3057811c5d13ac4f891fc2c2082b91f33a1a8d35d3c9b6e1ccb1871c268127811caa6f2708c878ef35ae4cc25143db62c4e5801ded32cfad9a1db50387753a6
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -70,7 +70,7 @@ $ raap 'MyClass' # Run only RBS of MyClass
|
|
70
70
|
$ raap 'MyClass::*' # Run each class under MyClass
|
71
71
|
$ raap 'MyClass.singleton_method' # Run only MyClass.singleton_method
|
72
72
|
$ raap 'MyClass#instance_method' # Run only MyClass#instance_method
|
73
|
-
$ raap 'MyClass' '!MyClass#skip' # Run
|
73
|
+
$ raap 'MyClass' '!MyClass#skip' # Run methods MyClass without #skip
|
74
74
|
```
|
75
75
|
|
76
76
|
```
|
@@ -81,6 +81,13 @@ MyClass
|
|
81
81
|
$ raap $(cat test/raap.txt) # You can manage the methods to be tested in a file
|
82
82
|
```
|
83
83
|
|
84
|
+
## Log level definition
|
85
|
+
|
86
|
+
- error: Information on status of inability to continue execution.
|
87
|
+
- warn: Information on partial corrections required.
|
88
|
+
- info: A somewhat visualized representation of the execution state.
|
89
|
+
- debug: All information including stack traces.
|
90
|
+
|
84
91
|
## Size
|
85
92
|
|
86
93
|
Random values are determined based on size.
|
data/Rakefile
CHANGED
data/lib/raap/cli.rb
CHANGED
@@ -104,7 +104,7 @@ module RaaP
|
|
104
104
|
|
105
105
|
# Search skip tag
|
106
106
|
@argv.each do |tag|
|
107
|
-
if tag.start_with?('!')
|
107
|
+
if tag.start_with?('!')
|
108
108
|
t = tag[1..] or raise
|
109
109
|
t = "::#{t}" unless t.start_with?('::')
|
110
110
|
t or raise
|
@@ -118,13 +118,13 @@ module RaaP
|
|
118
118
|
|
119
119
|
case
|
120
120
|
when tag.include?('#')
|
121
|
-
run_by(kind: :instance, tag:)
|
121
|
+
run_by(kind: :instance, tag: tag)
|
122
122
|
when tag.include?('.')
|
123
|
-
run_by(kind: :singleton, tag:)
|
123
|
+
run_by(kind: :singleton, tag: tag)
|
124
124
|
when tag.end_with?('*')
|
125
|
-
run_by_type_name_with_search(tag:)
|
125
|
+
run_by_type_name_with_search(tag: tag)
|
126
126
|
else
|
127
|
-
run_by_type_name(tag:)
|
127
|
+
run_by_type_name(tag: tag)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -198,9 +198,10 @@ module RaaP
|
|
198
198
|
|
199
199
|
RaaP.logger.info("# #{type}")
|
200
200
|
@results << {
|
201
|
-
method
|
201
|
+
method: method,
|
202
202
|
properties: method.method_types.map do |method_type|
|
203
|
-
property(receiver_type
|
203
|
+
property(receiver_type: receiver_type, type_params_decl: type_params_decl, type_args: type_args, method_type: method_type,
|
204
|
+
method_name: method_name)
|
204
205
|
end
|
205
206
|
}
|
206
207
|
end
|
@@ -238,9 +239,10 @@ module RaaP
|
|
238
239
|
|
239
240
|
RaaP.logger.info("# #{type_name}.#{method_name}")
|
240
241
|
@results << {
|
241
|
-
method
|
242
|
+
method: method,
|
242
243
|
properties: method.method_types.map do |method_type|
|
243
|
-
property(receiver_type: Type.new("singleton(#{type.name})"), type_params_decl
|
244
|
+
property(receiver_type: Type.new("singleton(#{type.name})"), type_params_decl: type_params_decl, type_args: type_args,
|
245
|
+
method_type: method_type, method_name: method_name)
|
244
246
|
end
|
245
247
|
}
|
246
248
|
end
|
@@ -257,9 +259,10 @@ module RaaP
|
|
257
259
|
|
258
260
|
RaaP.logger.info("# #{type_name}##{method_name}")
|
259
261
|
@results << {
|
260
|
-
method
|
262
|
+
method: method,
|
261
263
|
properties: method.method_types.map do |method_type|
|
262
|
-
property(receiver_type: Type.new(type.name), type_params_decl
|
264
|
+
property(receiver_type: Type.new(type.name), type_params_decl: type_params_decl, type_args: type_args, method_type: method_type,
|
265
|
+
method_name: method_name)
|
263
266
|
end
|
264
267
|
}
|
265
268
|
end
|
@@ -283,12 +286,12 @@ module RaaP
|
|
283
286
|
status = 0
|
284
287
|
reason = nil
|
285
288
|
prop = MethodProperty.new(
|
286
|
-
receiver_type
|
287
|
-
method_name
|
289
|
+
receiver_type: receiver_type,
|
290
|
+
method_name: method_name,
|
288
291
|
method_type: MethodType.new(
|
289
292
|
method_type,
|
290
|
-
type_params_decl
|
291
|
-
type_args
|
293
|
+
type_params_decl: type_params_decl,
|
294
|
+
type_args: type_args,
|
292
295
|
self_type: rtype,
|
293
296
|
instance_type: ::RBS::Types::ClassInstance.new(name: rtype.name, args: type_args, location: nil),
|
294
297
|
class_type: ::RBS::Types::ClassSingleton.new(name: rtype.name, location: nil),
|
data/lib/raap/function_type.rb
CHANGED
@@ -7,12 +7,12 @@ module RaaP
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def pick_arguments(size: 10)
|
10
|
-
SymbolicCaller.new(arguments_to_symbolic_call(size:)).eval
|
10
|
+
SymbolicCaller.new(arguments_to_symbolic_call(size: size)).eval
|
11
11
|
end
|
12
12
|
|
13
13
|
def arguments_to_symbolic_call(size: 10)
|
14
|
-
a = to_symbolic_call_recursive(build_args_type, size:)
|
15
|
-
k = to_symbolic_call_recursive(build_kwargs_type, size:)
|
14
|
+
a = to_symbolic_call_recursive(build_args_type, size: size)
|
15
|
+
k = to_symbolic_call_recursive(build_kwargs_type, size: size)
|
16
16
|
|
17
17
|
[a, k]
|
18
18
|
end
|
@@ -24,11 +24,11 @@ module RaaP
|
|
24
24
|
when type.nil?
|
25
25
|
nil
|
26
26
|
when type.respond_to?(:each_pair)
|
27
|
-
type.each_pair.to_h { |k, v| [k, to_symbolic_call_recursive(v, size:)] }
|
27
|
+
type.each_pair.to_h { |k, v| [k, to_symbolic_call_recursive(v, size: size)] }
|
28
28
|
when type.respond_to?(:each)
|
29
|
-
type.each.map { |v| to_symbolic_call_recursive(v, size:) }
|
29
|
+
type.each.map { |v| to_symbolic_call_recursive(v, size: size) }
|
30
30
|
else
|
31
|
-
type.to_symbolic_call(size:)
|
31
|
+
type.to_symbolic_call(size: size)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
data/lib/raap/method_property.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RaaP
|
4
4
|
class MethodProperty
|
5
|
-
class Stats < Struct.new(:success, :skip, :exception, :break)
|
5
|
+
class Stats < Struct.new(:success, :skip, :exception, :break, keyword_init: true)
|
6
6
|
def initialize(success: 0, skip: 0, exception: 0, break: false)
|
7
7
|
super
|
8
8
|
end
|
@@ -23,7 +23,7 @@ module RaaP
|
|
23
23
|
Timeout.timeout(@timeout) do
|
24
24
|
catch(:break) do
|
25
25
|
@size_step.each do |size|
|
26
|
-
call(size
|
26
|
+
call(size: size, stats: stats).tap do |ret|
|
27
27
|
case ret
|
28
28
|
when Result::Success
|
29
29
|
stats.success += 1
|
@@ -55,8 +55,8 @@ module RaaP
|
|
55
55
|
stats.break = true
|
56
56
|
throw :break
|
57
57
|
end
|
58
|
-
receiver_value = @receiver_type.to_symbolic_call(size:)
|
59
|
-
args, kwargs, block = @method_type.arguments_to_symbolic_call(size:)
|
58
|
+
receiver_value = @receiver_type.to_symbolic_call(size: size)
|
59
|
+
args, kwargs, block = @method_type.arguments_to_symbolic_call(size: size)
|
60
60
|
# @type var symbolic_call: symbolic_call
|
61
61
|
symbolic_call = [:call, receiver_value, @method_name, args, kwargs, block]
|
62
62
|
symbolic_caller = SymbolicCaller.new(symbolic_call, allow_private: @allow_private)
|
@@ -77,25 +77,25 @@ module RaaP
|
|
77
77
|
end
|
78
78
|
else
|
79
79
|
return_value = symbolic_caller.eval
|
80
|
-
check = check_return(receiver_value
|
80
|
+
check = check_return(receiver_value: receiver_value, return_value: return_value)
|
81
81
|
end
|
82
82
|
case check
|
83
83
|
in [:success]
|
84
|
-
Result::Success.new(symbolic_call
|
84
|
+
Result::Success.new(symbolic_call: symbolic_call, return_value: return_value)
|
85
85
|
in [:failure]
|
86
|
-
Result::Failure.new(symbolic_call
|
86
|
+
Result::Failure.new(symbolic_call: symbolic_call, return_value: return_value)
|
87
87
|
in [:exception, exception]
|
88
|
-
Result::Exception.new(symbolic_call
|
88
|
+
Result::Exception.new(symbolic_call: symbolic_call, exception: exception)
|
89
89
|
end
|
90
90
|
rescue TypeError => exception
|
91
|
-
Result::Failure.new(symbolic_call
|
91
|
+
Result::Failure.new(symbolic_call: symbolic_call, return_value: return_value, exception: exception)
|
92
92
|
end
|
93
93
|
|
94
94
|
# not ensure symbolic_call
|
95
95
|
rescue NoMethodError, NotImplementedError => exception
|
96
|
-
Result::Skip.new(symbolic_call
|
96
|
+
Result::Skip.new(symbolic_call: symbolic_call, exception: exception)
|
97
97
|
rescue NameError => e
|
98
|
-
RaaP.logger.
|
98
|
+
RaaP.logger.warn("[#{e.class}] #{e.detailed_message}")
|
99
99
|
msg = e.name.nil? ? '' : "for `#{BindCall.to_s(e.receiver)}::#{e.name}`"
|
100
100
|
RaaP.logger.warn("Implementation is not found #{msg} maybe.")
|
101
101
|
RaaP.logger.debug(e.backtrace&.join("\n"))
|
@@ -103,9 +103,9 @@ module RaaP
|
|
103
103
|
throw :break
|
104
104
|
rescue SystemStackError => exception
|
105
105
|
RaaP.logger.info "Found recursive type definition."
|
106
|
-
Result::Skip.new(symbolic_call
|
106
|
+
Result::Skip.new(symbolic_call: symbolic_call, exception: exception)
|
107
107
|
rescue => exception
|
108
|
-
Result::Exception.new(symbolic_call
|
108
|
+
Result::Exception.new(symbolic_call: symbolic_call, exception: exception)
|
109
109
|
end
|
110
110
|
|
111
111
|
def check_return(receiver_value:, return_value:)
|
@@ -126,8 +126,8 @@ module RaaP
|
|
126
126
|
instance_class = BindCall.class(receiver_value)
|
127
127
|
end
|
128
128
|
type_check = ::RBS::Test::TypeCheck.new(
|
129
|
-
self_class
|
130
|
-
instance_class
|
129
|
+
self_class: self_class,
|
130
|
+
instance_class: instance_class,
|
131
131
|
class_class: Module,
|
132
132
|
builder: RBS.builder,
|
133
133
|
sample_size: 100,
|
data/lib/raap/method_type.rb
CHANGED
@@ -20,17 +20,17 @@ module RaaP
|
|
20
20
|
params = (type_params_decl + rbs.type_params).uniq
|
21
21
|
ts = TypeSubstitution.new(params, type_args)
|
22
22
|
|
23
|
-
@rbs = ts.method_type_sub(rbs, self_type
|
23
|
+
@rbs = ts.method_type_sub(rbs, self_type: self_type, instance_type: instance_type, class_type: class_type)
|
24
24
|
@fun_type = FunctionType.new(@rbs.type)
|
25
25
|
end
|
26
26
|
|
27
27
|
def pick_arguments(size: 10)
|
28
|
-
SymbolicCaller.new(arguments_to_symbolic_call(size:)).eval
|
28
|
+
SymbolicCaller.new(arguments_to_symbolic_call(size: size)).eval
|
29
29
|
end
|
30
30
|
|
31
31
|
def arguments_to_symbolic_call(size: 10)
|
32
|
-
args, kwargs = @fun_type.arguments_to_symbolic_call(size:)
|
33
|
-
block = pick_block(size:)
|
32
|
+
args, kwargs = @fun_type.arguments_to_symbolic_call(size: size)
|
33
|
+
block = pick_block(size: size)
|
34
34
|
|
35
35
|
[args, kwargs, block]
|
36
36
|
end
|
@@ -40,7 +40,7 @@ module RaaP
|
|
40
40
|
return nil if block.nil?
|
41
41
|
return nil if (block.required == false) && [true, false].sample
|
42
42
|
|
43
|
-
fixed_return_value = Type.new(block.type.return_type).pick(size:)
|
43
|
+
fixed_return_value = Type.new(block.type.return_type).pick(size: size)
|
44
44
|
Proc.new { fixed_return_value }
|
45
45
|
end
|
46
46
|
|
data/lib/raap/minitest.rb
CHANGED
@@ -13,7 +13,7 @@ module RaaP
|
|
13
13
|
method_type = RaaP::MethodType.new(type)
|
14
14
|
size_step.each do |size|
|
15
15
|
# TODO assert_send_type
|
16
|
-
args, kwargs, _block = method_type.pick_arguments(size:)
|
16
|
+
args, kwargs, _block = method_type.pick_arguments(size: size)
|
17
17
|
return_value = yield(*args, **kwargs)
|
18
18
|
i = BindCall.inspect(return_value)
|
19
19
|
c = BindCall.class(return_value)
|
@@ -30,7 +30,7 @@ module RaaP
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
size_step.each do |size|
|
33
|
-
values = types.map { |t| t.pick(size:) }
|
33
|
+
values = types.map { |t| t.pick(size: size) }
|
34
34
|
assert yield(*values)
|
35
35
|
end
|
36
36
|
end
|
data/lib/raap/symbolic_caller.rb
CHANGED
data/lib/raap/type.rb
CHANGED
@@ -52,21 +52,21 @@ module RaaP
|
|
52
52
|
method_type = MethodType.new(maped_rbs_method_type)
|
53
53
|
|
54
54
|
begin
|
55
|
-
args, kwargs, block = method_type.arguments_to_symbolic_call(size:)
|
55
|
+
args, kwargs, block = method_type.arguments_to_symbolic_call(size: size)
|
56
56
|
[:call, base, :new, args, kwargs, block]
|
57
57
|
rescue
|
58
58
|
$stderr.puts "Fail with `#{rbs_method_type}`"
|
59
59
|
raise
|
60
60
|
end
|
61
61
|
else
|
62
|
-
[:call, Value::Module, :new, [type.to_s], { size: }, nil]
|
62
|
+
[:call, Value::Module, :new, [type.to_s], { size: size }, nil]
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
# Special class case
|
67
67
|
register("::Array") do
|
68
68
|
instance = __skip__ = type
|
69
|
-
t = instance.args[0] ? Type.new(instance.args[0], range:) : Type.random
|
69
|
+
t = instance.args[0] ? Type.new(instance.args[0], range: range) : Type.random
|
70
70
|
array(t)
|
71
71
|
end
|
72
72
|
register("::Binding") { sized { binding } }
|
@@ -87,7 +87,7 @@ module RaaP
|
|
87
87
|
register("::NilClass") { sized { nil } }
|
88
88
|
register("::Proc") { sized { Proc.new {} } }
|
89
89
|
register("::Rational") { rational }
|
90
|
-
register("::Regexp") { sized { |size| Regexp.new(string.pick(size:)) } }
|
90
|
+
register("::Regexp") { sized { |size| Regexp.new(string.pick(size: size)) } }
|
91
91
|
register("::String") { string }
|
92
92
|
register("::Struct") { sized { Struct.new(:foo, :bar).new } }
|
93
93
|
register("::Symbol") { symbol }
|
@@ -118,11 +118,11 @@ module RaaP
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def pick(size: 10)
|
121
|
-
to_symbolic_caller(size:).eval
|
121
|
+
to_symbolic_caller(size: size).eval
|
122
122
|
end
|
123
123
|
|
124
124
|
def to_symbolic_caller(size: 10)
|
125
|
-
SymbolicCaller.new(to_symbolic_call(size:))
|
125
|
+
SymbolicCaller.new(to_symbolic_call(size: size))
|
126
126
|
end
|
127
127
|
|
128
128
|
def to_symbolic_call(size: 10)
|
@@ -131,20 +131,20 @@ module RaaP
|
|
131
131
|
|
132
132
|
case type
|
133
133
|
when ::RBS::Types::Tuple
|
134
|
-
type.types.map { |t| Type.new(t).to_symbolic_call(size:) }
|
134
|
+
type.types.map { |t| Type.new(t).to_symbolic_call(size: size) }
|
135
135
|
when ::RBS::Types::Union
|
136
|
-
type.types.sample&.then { |t| Type.new(t).to_symbolic_call(size:) }
|
136
|
+
type.types.sample&.then { |t| Type.new(t).to_symbolic_call(size: size) }
|
137
137
|
when ::RBS::Types::Intersection
|
138
138
|
if type.free_variables.empty?
|
139
|
-
[:call, Value::Intersection, :new, [type.to_s], { size: }, nil]
|
139
|
+
[:call, Value::Intersection, :new, [type.to_s], { size: size }, nil]
|
140
140
|
else
|
141
|
-
[:call, Value::Intersection, :new, [type], { size: }, nil]
|
141
|
+
[:call, Value::Intersection, :new, [type], { size: size }, nil]
|
142
142
|
end
|
143
143
|
when ::RBS::Types::Interface
|
144
144
|
if type.free_variables.empty?
|
145
|
-
[:call, Value::Interface, :new, [type.to_s], { size: }, nil]
|
145
|
+
[:call, Value::Interface, :new, [type.to_s], { size: size }, nil]
|
146
146
|
else
|
147
|
-
[:call, Value::Interface, :new, [type], { size: }, nil]
|
147
|
+
[:call, Value::Interface, :new, [type], { size: size }, nil]
|
148
148
|
end
|
149
149
|
when ::RBS::Types::Variable
|
150
150
|
[:call, Value::Variable, :new, [type.to_s], {}, nil]
|
@@ -162,7 +162,7 @@ module RaaP
|
|
162
162
|
when ::RBS::Types::Alias
|
163
163
|
case gen = GENERATORS[type.name.absolute!.to_s]
|
164
164
|
in Proc then instance_exec(&gen)
|
165
|
-
in nil then Type.new(RBS.builder.expand_alias2(type.name, type.args)).to_symbolic_call(size:)
|
165
|
+
in nil then Type.new(RBS.builder.expand_alias2(type.name, type.args)).to_symbolic_call(size: size)
|
166
166
|
end
|
167
167
|
when ::RBS::Types::Bases::Class
|
168
168
|
RaaP.logger.warn("Unresolved `class` type, use Object instead.")
|
@@ -176,19 +176,19 @@ module RaaP
|
|
176
176
|
Object.const_get(type.name.to_s)
|
177
177
|
when ::RBS::Types::ClassInstance
|
178
178
|
case gen = GENERATORS[type.name.absolute!.to_s]
|
179
|
-
in Proc then instance_exec(&gen).pick(size:)
|
180
|
-
in nil then to_symbolic_call_from_initialize(type, size:)
|
179
|
+
in Proc then instance_exec(&gen).pick(size: size)
|
180
|
+
in nil then to_symbolic_call_from_initialize(type, size: size)
|
181
181
|
end
|
182
182
|
when ::RBS::Types::Record
|
183
183
|
type.fields.transform_values { |t| Type.new(t).to_symbolic_call(size: size / 2) }
|
184
184
|
when ::RBS::Types::Proc
|
185
|
-
Proc.new { Type.new(type.type.return_type).to_symbolic_call(size:) }
|
185
|
+
Proc.new { Type.new(type.type.return_type).to_symbolic_call(size: size) }
|
186
186
|
when ::RBS::Types::Literal
|
187
187
|
type.literal
|
188
188
|
when ::RBS::Types::Bases::Bool
|
189
|
-
bool.pick(size:)
|
189
|
+
bool.pick(size: size)
|
190
190
|
when ::RBS::Types::Bases::Any
|
191
|
-
Type.random.to_symbolic_call(size:)
|
191
|
+
Type.random.to_symbolic_call(size: size)
|
192
192
|
when ::RBS::Types::Bases::Nil
|
193
193
|
nil
|
194
194
|
else
|
@@ -201,7 +201,7 @@ module RaaP
|
|
201
201
|
def to_symbolic_call_from_initialize(type, size:)
|
202
202
|
type_name = type.name.absolute!
|
203
203
|
const = Object.const_get(type_name.to_s)
|
204
|
-
Type.call_new_from(const, type, size:)
|
204
|
+
Type.call_new_from(const, type, size: size)
|
205
205
|
end
|
206
206
|
|
207
207
|
def parse(type)
|
@@ -216,7 +216,7 @@ module RaaP
|
|
216
216
|
end
|
217
217
|
|
218
218
|
def integer
|
219
|
-
sized { |size| float.pick(size:).round }
|
219
|
+
sized { |size| float.pick(size: size).round }
|
220
220
|
end
|
221
221
|
|
222
222
|
def none_zero_integer
|
@@ -240,16 +240,16 @@ module RaaP
|
|
240
240
|
|
241
241
|
def rational
|
242
242
|
sized do |size|
|
243
|
-
a = integer.pick(size:)
|
244
|
-
b = none_zero_integer.pick(size:)
|
243
|
+
a = integer.pick(size: size)
|
244
|
+
b = none_zero_integer.pick(size: size)
|
245
245
|
[:call, Kernel, :Rational, [a, b], {}, nil]
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
249
|
def complex
|
250
250
|
sized do |size|
|
251
|
-
a = integer.pick(size:)
|
252
|
-
b = none_zero_integer.pick(size:)
|
251
|
+
a = integer.pick(size: size)
|
252
|
+
b = none_zero_integer.pick(size: size)
|
253
253
|
[:call, Kernel, :Complex, [a, b], {}, nil]
|
254
254
|
end
|
255
255
|
end
|
@@ -274,13 +274,13 @@ module RaaP
|
|
274
274
|
|
275
275
|
def symbol
|
276
276
|
sized do |size|
|
277
|
-
string.pick(size:).to_sym
|
277
|
+
string.pick(size: size).to_sym
|
278
278
|
end
|
279
279
|
end
|
280
280
|
|
281
281
|
def array(type)
|
282
282
|
sized do |size|
|
283
|
-
Array.new(integer.pick(size:).abs) do
|
283
|
+
Array.new(integer.pick(size: size).abs) do
|
284
284
|
type.to_symbolic_call(size: size / 2)
|
285
285
|
end
|
286
286
|
end
|
@@ -291,7 +291,7 @@ module RaaP
|
|
291
291
|
def dict(key_type, value_type)
|
292
292
|
sized do |size|
|
293
293
|
csize = size / 2
|
294
|
-
Array.new(integer.pick(size:).abs).to_h do
|
294
|
+
Array.new(integer.pick(size: size).abs).to_h do
|
295
295
|
[
|
296
296
|
key_type.to_symbolic_call(size: csize),
|
297
297
|
value_type.to_symbolic_call(size: csize)
|
@@ -27,8 +27,8 @@ module RaaP
|
|
27
27
|
sub = build
|
28
28
|
::RBS::MethodType.new(
|
29
29
|
type_params: [],
|
30
|
-
type: method_type.type.sub(sub).then { |ty| sub(ty, self_type
|
31
|
-
block: method_type.block&.sub(sub)&.then { |bl| sub(bl, self_type
|
30
|
+
type: method_type.type.sub(sub).then { |ty| sub(ty, self_type: self_type, instance_type: instance_type, class_type: class_type) },
|
31
|
+
block: method_type.block&.sub(sub)&.then { |bl| sub(bl, self_type: self_type, instance_type: instance_type, class_type: class_type) },
|
32
32
|
location: method_type.location
|
33
33
|
)
|
34
34
|
end
|
@@ -49,7 +49,7 @@ module RaaP
|
|
49
49
|
when ::RBS::Types::Bases::Class
|
50
50
|
class_type || ty
|
51
51
|
else
|
52
|
-
sub(ty, self_type
|
52
|
+
sub(ty, self_type: self_type, instance_type: instance_type, class_type: class_type)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
data/lib/raap/value/interface.rb
CHANGED
@@ -20,14 +20,14 @@ module RaaP
|
|
20
20
|
method_type = method.method_types.sample or ::Kernel.raise
|
21
21
|
type_params = definition.type_params_decl.concat(method_type.type_params.drop(definition.type_params_decl.length))
|
22
22
|
ts = TypeSubstitution.new(type_params, type.args)
|
23
|
-
subed_method_type = ts.method_type_sub(method_type, self_type
|
23
|
+
subed_method_type = ts.method_type_sub(method_type, self_type: self_type, instance_type: instance_type, class_type: class_type)
|
24
24
|
|
25
25
|
BindCall.define_method(base_class, name) do |*_, &b|
|
26
26
|
@fixed_return_value ||= {}
|
27
27
|
@fixed_return_value[name] ||= if self_type == subed_method_type.type.return_type
|
28
28
|
self
|
29
29
|
else
|
30
|
-
Type.new(subed_method_type.type.return_type).pick(size:)
|
30
|
+
Type.new(subed_method_type.type.return_type).pick(size: size)
|
31
31
|
end
|
32
32
|
# @type var b: Proc?
|
33
33
|
if b
|
@@ -35,7 +35,7 @@ module RaaP
|
|
35
35
|
@fixed_block_arguments[name] ||= if subed_method_type.block
|
36
36
|
size.times.map do
|
37
37
|
FunctionType.new(subed_method_type.block.type)
|
38
|
-
.pick_arguments(size:)
|
38
|
+
.pick_arguments(size: size)
|
39
39
|
end
|
40
40
|
else
|
41
41
|
[]
|
@@ -51,10 +51,10 @@ module RaaP
|
|
51
51
|
|
52
52
|
def new(type, size: 3)
|
53
53
|
temp_class = ::Class.new(Interface) do |c|
|
54
|
-
define_method_from_interface(c, type, size:)
|
54
|
+
define_method_from_interface(c, type, size: size)
|
55
55
|
end
|
56
56
|
instance = temp_class.allocate
|
57
|
-
instance.__send__(:initialize, type, size:)
|
57
|
+
instance.__send__(:initialize, type, size: size)
|
58
58
|
instance
|
59
59
|
end
|
60
60
|
end
|
@@ -29,11 +29,11 @@ module RaaP
|
|
29
29
|
end
|
30
30
|
|
31
31
|
interfaces.each do |interface|
|
32
|
-
Interface.define_method_from_interface(self, interface, size:)
|
32
|
+
Interface.define_method_from_interface(self, interface, size: size)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
type = ::RBS::Types::ClassInstance.new(name: TypeName(base.name), args: [], location: nil)
|
36
|
-
SymbolicCaller.new(Type.call_new_from(c, type, size:)).eval
|
36
|
+
SymbolicCaller.new(Type.call_new_from(c, type, size: size)).eval
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
data/lib/raap/value/module.rb
CHANGED
@@ -35,7 +35,7 @@ module RaaP
|
|
35
35
|
if !ts.include?('::BasicObject') || ts.any? { |t| t.split('::').last&.start_with?('_') }
|
36
36
|
ts.unshift('Object')
|
37
37
|
end
|
38
|
-
Type.new(ts.uniq.join(' & ')).pick(size:)
|
38
|
+
Type.new(ts.uniq.join(' & ')).pick(size: size)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
const = ::Object.const_get(@type.name.absolute!.to_s)
|
data/lib/raap/version.rb
CHANGED
data/lib/raap.rb
CHANGED
data/lib/shims.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Ruby 3.2
|
4
|
+
unless Exception.method_defined?(:detailed_message)
|
5
|
+
class Exception
|
6
|
+
alias detailed_message message
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
# Ruby 3.2
|
11
|
+
unless defined?(Data)
|
12
|
+
class Data
|
13
|
+
class << self
|
14
|
+
def define(*syms)
|
15
|
+
_ = Class.new do |c|
|
16
|
+
define_method(:initialize) do |*args, **kwargs|
|
17
|
+
if !args.empty?
|
18
|
+
syms.zip(args).each do |sym, arg|
|
19
|
+
instance_variable_set("@#{sym}", arg)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
if !kwargs.empty?
|
23
|
+
kwargs.each do |k, v|
|
24
|
+
instance_variable_set("@#{k}", v)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
syms.each do |sym|
|
30
|
+
c.define_method(sym) do
|
31
|
+
instance_variable_get("@#{sym}")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/rbs_collection.lock.yaml
CHANGED
@@ -10,7 +10,7 @@ gems:
|
|
10
10
|
source:
|
11
11
|
type: git
|
12
12
|
name: ruby/gem_rbs_collection
|
13
|
-
revision:
|
13
|
+
revision: d2e93d426c927fdab90ef12e30a9875aa05d60d6
|
14
14
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
15
15
|
repo_dir: gems
|
16
16
|
- name: base64
|
@@ -26,7 +26,7 @@ gems:
|
|
26
26
|
source:
|
27
27
|
type: git
|
28
28
|
name: ruby/gem_rbs_collection
|
29
|
-
revision:
|
29
|
+
revision: d2e93d426c927fdab90ef12e30a9875aa05d60d6
|
30
30
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
31
31
|
repo_dir: gems
|
32
32
|
- name: connection_pool
|
@@ -34,7 +34,7 @@ gems:
|
|
34
34
|
source:
|
35
35
|
type: git
|
36
36
|
name: ruby/gem_rbs_collection
|
37
|
-
revision:
|
37
|
+
revision: d2e93d426c927fdab90ef12e30a9875aa05d60d6
|
38
38
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
39
39
|
repo_dir: gems
|
40
40
|
- name: date
|
@@ -54,7 +54,7 @@ gems:
|
|
54
54
|
source:
|
55
55
|
type: git
|
56
56
|
name: ruby/gem_rbs_collection
|
57
|
-
revision:
|
57
|
+
revision: d2e93d426c927fdab90ef12e30a9875aa05d60d6
|
58
58
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
59
59
|
repo_dir: gems
|
60
60
|
- name: io-console
|
@@ -94,7 +94,7 @@ gems:
|
|
94
94
|
source:
|
95
95
|
type: git
|
96
96
|
name: ruby/gem_rbs_collection
|
97
|
-
revision:
|
97
|
+
revision: d2e93d426c927fdab90ef12e30a9875aa05d60d6
|
98
98
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
99
99
|
repo_dir: gems
|
100
100
|
- name: rbs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ksss
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/raap/value/variable.rb
|
77
77
|
- lib/raap/value/void.rb
|
78
78
|
- lib/raap/version.rb
|
79
|
+
- lib/shims.rb
|
79
80
|
- public/jacket.webp
|
80
81
|
- rbs_collection.lock.yaml
|
81
82
|
- rbs_collection.yaml
|
@@ -94,14 +95,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
95
|
requirements:
|
95
96
|
- - ">="
|
96
97
|
- !ruby/object:Gem::Version
|
97
|
-
version: 3.
|
98
|
+
version: 3.0.0
|
98
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
100
|
requirements:
|
100
101
|
- - ">="
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: '0'
|
103
104
|
requirements: []
|
104
|
-
rubygems_version: 3.
|
105
|
+
rubygems_version: 3.2.33
|
105
106
|
signing_key:
|
106
107
|
specification_version: 4
|
107
108
|
summary: RBS as a Property
|