rbs 4.0.0.dev.4 → 4.1.0.pre.2
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/.clang-format +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +288 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +216 -150
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +78 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +141 -73
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -11
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- data/sig/definition.rbs +6 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +111 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +223 -142
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +482 -364
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +22 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +3 -3
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +8 -8
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
data/core/rational.rbs
CHANGED
|
@@ -53,15 +53,16 @@ class Rational < Numeric
|
|
|
53
53
|
|
|
54
54
|
# <!--
|
|
55
55
|
# rdoc-file=rational.c
|
|
56
|
-
# -
|
|
56
|
+
# - self * other -> numeric
|
|
57
57
|
# -->
|
|
58
|
-
#
|
|
58
|
+
# Returns the numeric product of `self` and `other`:
|
|
59
59
|
#
|
|
60
|
-
# Rational(
|
|
61
|
-
# Rational(
|
|
62
|
-
# Rational(
|
|
63
|
-
# Rational(
|
|
64
|
-
# Rational(
|
|
60
|
+
# Rational(9, 8) * 4 #=> (9/2)
|
|
61
|
+
# Rational(20, 9) * 9.8 #=> 21.77777777777778
|
|
62
|
+
# Rational(9, 8) * Complex(1, 2) # => ((9/8)+(9/4)*i)
|
|
63
|
+
# Rational(2, 3) * Rational(2, 3) #=> (4/9)
|
|
64
|
+
# Rational(900) * Rational(1) #=> (900/1)
|
|
65
|
+
# Rational(-2, 9) * Rational(-9, 2) #=> (1/1)
|
|
65
66
|
#
|
|
66
67
|
def *: (Integer) -> Rational
|
|
67
68
|
| (Rational) -> Rational
|
|
@@ -69,9 +70,9 @@ class Rational < Numeric
|
|
|
69
70
|
|
|
70
71
|
# <!--
|
|
71
72
|
# rdoc-file=rational.c
|
|
72
|
-
# -
|
|
73
|
+
# - self ** exponent -> numeric
|
|
73
74
|
# -->
|
|
74
|
-
#
|
|
75
|
+
# Returns `self` raised to the power `exponent`:
|
|
75
76
|
#
|
|
76
77
|
# Rational(2) ** Rational(3) #=> (8/1)
|
|
77
78
|
# Rational(10) ** -2 #=> (1/100)
|
|
@@ -85,27 +86,35 @@ class Rational < Numeric
|
|
|
85
86
|
|
|
86
87
|
# <!--
|
|
87
88
|
# rdoc-file=rational.c
|
|
88
|
-
# -
|
|
89
|
+
# - self + other -> numeric
|
|
89
90
|
# -->
|
|
90
|
-
#
|
|
91
|
+
# Returns the sum of `self` and `other`:
|
|
91
92
|
#
|
|
92
|
-
# Rational(2, 3)
|
|
93
|
-
# Rational(
|
|
94
|
-
# Rational(
|
|
95
|
-
#
|
|
96
|
-
# Rational(
|
|
93
|
+
# Rational(2, 3) + 0 # => (2/3)
|
|
94
|
+
# Rational(2, 3) + 1 # => (5/3)
|
|
95
|
+
# Rational(2, 3) + -1 # => (-1/3)
|
|
96
|
+
#
|
|
97
|
+
# Rational(2, 3) + Complex(1, 0) # => ((5/3)+0i)
|
|
98
|
+
#
|
|
99
|
+
# Rational(2, 3) + Rational(1, 1) # => (5/3)
|
|
100
|
+
# Rational(2, 3) + Rational(3, 2) # => (13/6)
|
|
101
|
+
# Rational(2, 3) + Rational(3.0, 2.0) # => (13/6)
|
|
102
|
+
# Rational(2, 3) + Rational(3.1, 2.1) # => (30399297484750849/14186338826217063)
|
|
103
|
+
#
|
|
104
|
+
# For a computation involving Floats, the result may be inexact (see Float#+):
|
|
105
|
+
#
|
|
106
|
+
# Rational(2, 3) + 1.0 # => 1.6666666666666665
|
|
107
|
+
# Rational(2, 3) + Complex(1.0, 0.0) # => (1.6666666666666665+0.0i)
|
|
97
108
|
#
|
|
98
109
|
def +: (Float) -> Float
|
|
99
110
|
| (Complex) -> Complex
|
|
100
111
|
| (Numeric) -> Rational
|
|
101
112
|
|
|
102
|
-
def +@: () -> Rational
|
|
103
|
-
|
|
104
113
|
# <!--
|
|
105
114
|
# rdoc-file=rational.c
|
|
106
|
-
# -
|
|
115
|
+
# - self - other -> numeric
|
|
107
116
|
# -->
|
|
108
|
-
#
|
|
117
|
+
# Returns the difference of `self` and `other`:
|
|
109
118
|
#
|
|
110
119
|
# Rational(2, 3) - Rational(2, 3) #=> (0/1)
|
|
111
120
|
# Rational(900) - Rational(1) #=> (899/1)
|
|
@@ -119,18 +128,20 @@ class Rational < Numeric
|
|
|
119
128
|
|
|
120
129
|
# <!--
|
|
121
130
|
# rdoc-file=rational.c
|
|
122
|
-
# - -
|
|
131
|
+
# - -self -> rational
|
|
123
132
|
# -->
|
|
124
|
-
#
|
|
133
|
+
# Returns `self`, negated:
|
|
134
|
+
#
|
|
135
|
+
# -(1/3r) # => (-1/3)
|
|
136
|
+
# -(-1/3r) # => (1/3)
|
|
125
137
|
#
|
|
126
138
|
def -@: () -> Rational
|
|
127
139
|
|
|
128
140
|
# <!--
|
|
129
141
|
# rdoc-file=rational.c
|
|
130
|
-
# -
|
|
131
|
-
# - rat.quo(numeric) -> numeric
|
|
142
|
+
# - self / other -> numeric
|
|
132
143
|
# -->
|
|
133
|
-
#
|
|
144
|
+
# Returns the quotient of `self` and `other`:
|
|
134
145
|
#
|
|
135
146
|
# Rational(2, 3) / Rational(2, 3) #=> (1/1)
|
|
136
147
|
# Rational(900) / Rational(1) #=> (900/1)
|
|
@@ -144,20 +155,29 @@ class Rational < Numeric
|
|
|
144
155
|
|
|
145
156
|
# <!--
|
|
146
157
|
# rdoc-file=rational.c
|
|
147
|
-
# -
|
|
158
|
+
# - self <=> other -> -1, 0, 1, or nil
|
|
148
159
|
# -->
|
|
149
|
-
#
|
|
150
|
-
#
|
|
160
|
+
# Compares `self` and `other`.
|
|
161
|
+
#
|
|
162
|
+
# Returns:
|
|
163
|
+
#
|
|
164
|
+
# * <code>-1</code>, if `self` is less than `other`.
|
|
165
|
+
# * `0`, if the two values are the same.
|
|
166
|
+
# * `1`, if `self` is greater than `other`.
|
|
167
|
+
# * `nil`, if the two values are incomparable.
|
|
151
168
|
#
|
|
152
|
-
#
|
|
169
|
+
# Examples:
|
|
153
170
|
#
|
|
154
|
-
# Rational(2, 3) <=> Rational(
|
|
155
|
-
# Rational(
|
|
156
|
-
# Rational(2,
|
|
157
|
-
# Rational(
|
|
158
|
-
# Rational(
|
|
171
|
+
# Rational(2, 3) <=> Rational(4, 3) # => -1
|
|
172
|
+
# Rational(2, 1) <=> Rational(2, 1) # => 0
|
|
173
|
+
# Rational(2, 1) <=> 2 # => 0
|
|
174
|
+
# Rational(2, 1) <=> 2.0 # => 0
|
|
175
|
+
# Rational(2, 1) <=> Complex(2, 0) # => 0
|
|
176
|
+
# Rational(4, 3) <=> Rational(2, 3) # => 1
|
|
177
|
+
# Rational(4, 3) <=> :foo # => nil
|
|
159
178
|
#
|
|
160
|
-
#
|
|
179
|
+
# Class Rational includes module Comparable, each of whose methods uses
|
|
180
|
+
# Rational#<=> for comparison.
|
|
161
181
|
#
|
|
162
182
|
def <=>: (Integer | Rational) -> Integer
|
|
163
183
|
| (untyped) -> Integer?
|
|
@@ -188,12 +208,6 @@ class Rational < Numeric
|
|
|
188
208
|
#
|
|
189
209
|
def abs: () -> Rational
|
|
190
210
|
|
|
191
|
-
def abs2: () -> Rational
|
|
192
|
-
|
|
193
|
-
def angle: () -> (Integer | Float)
|
|
194
|
-
|
|
195
|
-
alias arg angle
|
|
196
|
-
|
|
197
211
|
# <!--
|
|
198
212
|
# rdoc-file=rational.c
|
|
199
213
|
# - rat.ceil([ndigits]) -> integer or rational
|
|
@@ -202,7 +216,7 @@ class Rational < Numeric
|
|
|
202
216
|
# `ndigits` decimal digits (default: 0).
|
|
203
217
|
#
|
|
204
218
|
# When the precision is negative, the returned value is an integer with at least
|
|
205
|
-
#
|
|
219
|
+
# <code>ndigits.abs</code> trailing zeros.
|
|
206
220
|
#
|
|
207
221
|
# Returns a rational when `ndigits` is positive, otherwise returns an integer.
|
|
208
222
|
#
|
|
@@ -222,10 +236,6 @@ class Rational < Numeric
|
|
|
222
236
|
|
|
223
237
|
def coerce: (Numeric) -> [ Numeric, Numeric ]
|
|
224
238
|
|
|
225
|
-
def conj: () -> Rational
|
|
226
|
-
|
|
227
|
-
def conjugate: () -> Rational
|
|
228
|
-
|
|
229
239
|
# <!--
|
|
230
240
|
# rdoc-file=rational.c
|
|
231
241
|
# - rat.denominator -> integer
|
|
@@ -239,15 +249,9 @@ class Rational < Numeric
|
|
|
239
249
|
#
|
|
240
250
|
def denominator: () -> Integer
|
|
241
251
|
|
|
242
|
-
def div: (Numeric) -> Integer
|
|
243
|
-
|
|
244
252
|
def divmod: (Integer | Float | Rational) -> [ Integer, Rational ]
|
|
245
253
|
| (Numeric) -> [ Numeric, Numeric ]
|
|
246
254
|
|
|
247
|
-
def dup: () -> self
|
|
248
|
-
|
|
249
|
-
def eql?: (untyped) -> bool
|
|
250
|
-
|
|
251
255
|
# <!--
|
|
252
256
|
# rdoc-file=rational.c
|
|
253
257
|
# - rat.fdiv(numeric) -> float
|
|
@@ -260,8 +264,6 @@ class Rational < Numeric
|
|
|
260
264
|
#
|
|
261
265
|
def fdiv: (Numeric) -> Float
|
|
262
266
|
|
|
263
|
-
def finite?: () -> bool
|
|
264
|
-
|
|
265
267
|
# <!--
|
|
266
268
|
# rdoc-file=rational.c
|
|
267
269
|
# - rat.floor([ndigits]) -> integer or rational
|
|
@@ -270,7 +272,7 @@ class Rational < Numeric
|
|
|
270
272
|
# `ndigits` decimal digits (default: 0).
|
|
271
273
|
#
|
|
272
274
|
# When the precision is negative, the returned value is an integer with at least
|
|
273
|
-
#
|
|
275
|
+
# <code>ndigits.abs</code> trailing zeros.
|
|
274
276
|
#
|
|
275
277
|
# Returns a rational when `ndigits` is positive, otherwise returns an integer.
|
|
276
278
|
#
|
|
@@ -295,14 +297,6 @@ class Rational < Numeric
|
|
|
295
297
|
#
|
|
296
298
|
def hash: () -> Integer
|
|
297
299
|
|
|
298
|
-
def i: () -> Complex
|
|
299
|
-
|
|
300
|
-
def imag: () -> Integer
|
|
301
|
-
|
|
302
|
-
def imaginary: () -> Integer
|
|
303
|
-
|
|
304
|
-
def infinite?: () -> Integer?
|
|
305
|
-
|
|
306
300
|
# <!--
|
|
307
301
|
# rdoc-file=rational.c
|
|
308
302
|
# - rat.inspect -> string
|
|
@@ -315,8 +309,6 @@ class Rational < Numeric
|
|
|
315
309
|
#
|
|
316
310
|
def inspect: () -> String
|
|
317
311
|
|
|
318
|
-
def integer?: () -> bool
|
|
319
|
-
|
|
320
312
|
# <!-- rdoc-file=rational.c -->
|
|
321
313
|
# Returns the absolute value of `rat`.
|
|
322
314
|
#
|
|
@@ -336,8 +328,6 @@ class Rational < Numeric
|
|
|
336
328
|
#
|
|
337
329
|
def negative?: () -> bool
|
|
338
330
|
|
|
339
|
-
def nonzero?: () -> self?
|
|
340
|
-
|
|
341
331
|
# <!--
|
|
342
332
|
# rdoc-file=rational.c
|
|
343
333
|
# - rat.numerator -> integer
|
|
@@ -351,8 +341,6 @@ class Rational < Numeric
|
|
|
351
341
|
#
|
|
352
342
|
def numerator: () -> Integer
|
|
353
343
|
|
|
354
|
-
alias phase angle
|
|
355
|
-
|
|
356
344
|
def polar: () -> [ Rational, Integer | Float ]
|
|
357
345
|
|
|
358
346
|
# <!--
|
|
@@ -364,7 +352,7 @@ class Rational < Numeric
|
|
|
364
352
|
def positive?: () -> bool
|
|
365
353
|
|
|
366
354
|
# <!-- rdoc-file=rational.c -->
|
|
367
|
-
#
|
|
355
|
+
# Returns the quotient of `self` and `other`:
|
|
368
356
|
#
|
|
369
357
|
# Rational(2, 3) / Rational(2, 3) #=> (1/1)
|
|
370
358
|
# Rational(900) / Rational(1) #=> (900/1)
|
|
@@ -391,14 +379,8 @@ class Rational < Numeric
|
|
|
391
379
|
#
|
|
392
380
|
def rationalize: (?Numeric eps) -> Rational
|
|
393
381
|
|
|
394
|
-
def real: () -> Rational
|
|
395
|
-
|
|
396
|
-
def real?: () -> true
|
|
397
|
-
|
|
398
382
|
def rect: () -> [ Rational, Numeric ]
|
|
399
383
|
|
|
400
|
-
alias rectangular rect
|
|
401
|
-
|
|
402
384
|
def remainder: (Float) -> Float
|
|
403
385
|
| (Numeric) -> Rational
|
|
404
386
|
|
|
@@ -410,7 +392,7 @@ class Rational < Numeric
|
|
|
410
392
|
# decimal digits (default: 0).
|
|
411
393
|
#
|
|
412
394
|
# When the precision is negative, the returned value is an integer with at least
|
|
413
|
-
#
|
|
395
|
+
# <code>ndigits.abs</code> trailing zeros.
|
|
414
396
|
#
|
|
415
397
|
# Returns a rational when `ndigits` is positive, otherwise returns an integer.
|
|
416
398
|
#
|
|
@@ -440,13 +422,6 @@ class Rational < Numeric
|
|
|
440
422
|
def round: (?half: :up | :down | :even) -> Integer
|
|
441
423
|
| (Integer digits, ?half: :up | :down | :even) -> (Integer | Rational)
|
|
442
424
|
|
|
443
|
-
def step: (?Numeric limit, ?Numeric step) { (Rational) -> void } -> self
|
|
444
|
-
| (?Numeric limit, ?Numeric step) -> Enumerator[Rational, self]
|
|
445
|
-
| (?by: Numeric, ?to: Numeric) { (Rational) -> void } -> self
|
|
446
|
-
| (?by: Numeric, ?to: Numeric) -> Enumerator[Rational, self]
|
|
447
|
-
|
|
448
|
-
def to_c: () -> Complex
|
|
449
|
-
|
|
450
425
|
# <!--
|
|
451
426
|
# rdoc-file=rational.c
|
|
452
427
|
# - rat.to_f -> float
|
|
@@ -476,8 +451,6 @@ class Rational < Numeric
|
|
|
476
451
|
#
|
|
477
452
|
def to_i: () -> Integer
|
|
478
453
|
|
|
479
|
-
alias to_int to_i
|
|
480
|
-
|
|
481
454
|
# <!--
|
|
482
455
|
# rdoc-file=rational.c
|
|
483
456
|
# - rat.to_r -> self
|
|
@@ -509,7 +482,7 @@ class Rational < Numeric
|
|
|
509
482
|
# digits (default: 0).
|
|
510
483
|
#
|
|
511
484
|
# When the precision is negative, the returned value is an integer with at least
|
|
512
|
-
#
|
|
485
|
+
# <code>ndigits.abs</code> trailing zeros.
|
|
513
486
|
#
|
|
514
487
|
# Returns a rational when `ndigits` is positive, otherwise returns an integer.
|
|
515
488
|
#
|
|
@@ -526,6 +499,4 @@ class Rational < Numeric
|
|
|
526
499
|
#
|
|
527
500
|
def truncate: () -> Integer
|
|
528
501
|
| (Integer ndigits) -> (Integer | Rational)
|
|
529
|
-
|
|
530
|
-
def zero?: () -> bool
|
|
531
502
|
end
|
data/core/rbs/ops.rbs
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module Ops
|
|
3
|
+
# An interface for types implementing the `+` operator
|
|
4
|
+
interface _Add[O, R]
|
|
5
|
+
# Perform the `+` operation
|
|
6
|
+
def +: (O other) -> R
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# An interface for types implementing the `-` operator
|
|
10
|
+
interface _Subtract[O, R]
|
|
11
|
+
# Perform the `-` operation
|
|
12
|
+
def -: (O other) -> R
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# An interface for types implementing the `*` operator
|
|
16
|
+
interface _Times[O, R]
|
|
17
|
+
# Perform the `*` operation
|
|
18
|
+
def *: (O other) -> R
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# An interface for types implementing the `/` operator
|
|
22
|
+
interface _Divide[O, R]
|
|
23
|
+
# Perform the `/` operation
|
|
24
|
+
def /: (O other) -> R
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# An interface for types implementing the `%` operator
|
|
28
|
+
interface _Modulo[O, R]
|
|
29
|
+
# Perform the `%` operation
|
|
30
|
+
def %: (O other) -> R
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# An interface for types implementing the `**` operator
|
|
34
|
+
interface _Power[O, R]
|
|
35
|
+
# Perform the `**` operation
|
|
36
|
+
def **: (O other) -> R
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# An interface for types implementing the `<` operator
|
|
40
|
+
interface _LessThan[O, R = bool]
|
|
41
|
+
# Perform the `<` operation
|
|
42
|
+
def <: (O other) -> R
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# An interface for types implementing the `>` operator
|
|
46
|
+
interface _GreaterThan[O, R = bool]
|
|
47
|
+
# Perform the `>` operation
|
|
48
|
+
def >: (O other) -> R
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# An interface for types implementing the `<=` operator
|
|
52
|
+
interface _LessThanOrEqual[O, R = bool]
|
|
53
|
+
# Perform the `<=` operation
|
|
54
|
+
def <=: (O other) -> R
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# An interface for types implementing the `>=` operator
|
|
58
|
+
interface _GreaterThanOrEqual[O, R = bool]
|
|
59
|
+
# Perform the `>=` operation
|
|
60
|
+
def >=: (O other) -> R
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# An interface for types implementing the `<=>` operator
|
|
64
|
+
interface _Compare[O = untyped, R = (-1 | 0 | 1)?]
|
|
65
|
+
# Perform the `<=>` operation
|
|
66
|
+
def <=>: (O other) -> R
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# An interface for types implementing the `&` operator
|
|
70
|
+
interface _And[O, R]
|
|
71
|
+
# Perform the `&` operation
|
|
72
|
+
def &: (O other) -> R
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# An interface for types implementing the `|` operator
|
|
76
|
+
interface _Or[O, R]
|
|
77
|
+
# Perform the `|` operation
|
|
78
|
+
def |: (O other) -> R
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# An interface for types implementing the `^` operator
|
|
82
|
+
interface _Xor[O, R]
|
|
83
|
+
# Perform the `^` operation
|
|
84
|
+
def ^: (O other) -> R
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# An interface for types implementing the `<<` operator
|
|
88
|
+
interface _LeftShift[O, R]
|
|
89
|
+
# Perform the `<<` operation
|
|
90
|
+
def <<: (O other) -> R
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# An interface for types implementing the `>>` operator
|
|
94
|
+
interface _RightShift[O, R]
|
|
95
|
+
# Perform the `>>` operation
|
|
96
|
+
def >>: (O other) -> R
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# An interface for types implementing the `~` operator
|
|
100
|
+
interface _Not[R]
|
|
101
|
+
# Perform the `~` operation
|
|
102
|
+
def ~: () -> R
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# An interface for types implementing the `+@` operator
|
|
106
|
+
interface _UnaryPos[R]
|
|
107
|
+
# Perform the `+@` operation
|
|
108
|
+
def +@: () -> R
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# An interface for types implementing the `-@` operator
|
|
112
|
+
interface _UnaryNeg[R]
|
|
113
|
+
# Perform the `-@` operation
|
|
114
|
+
def -@: () -> R
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# An interface for types implementing the `!` operator
|
|
118
|
+
interface _LogicalNot[R = bool]
|
|
119
|
+
# Perform the `!` operation
|
|
120
|
+
def !: () -> R
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# An interface for types implementing the `==` operator
|
|
124
|
+
interface _Equal[O = untyped, R = bool]
|
|
125
|
+
# Perform the `==` operation
|
|
126
|
+
def ==: (O other) -> R
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# An interface for types implementing the `===` operator
|
|
130
|
+
interface _CaseEqual[O, R = bool]
|
|
131
|
+
# Perform the `===` operation
|
|
132
|
+
def ===: (O other) -> R
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# An interface for types implementing the `=~` operator
|
|
136
|
+
interface _Matches[O, R]
|
|
137
|
+
# Perform the `=~` operation
|
|
138
|
+
def =~: (O other) -> R
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# An interface for types implementing the `!=` operator
|
|
142
|
+
interface _NotEqual[O = untyped, R = bool]
|
|
143
|
+
# Perform the `!=` operation
|
|
144
|
+
def !=: (O other) -> R
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# An interface for types implementing the `!~` operator
|
|
148
|
+
interface _NotMatches[O, R = bool]
|
|
149
|
+
# Perform the `!~` operation
|
|
150
|
+
def !~: (O other) -> R
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|