rbs 3.10.0.pre.2 → 3.10.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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/c-check.yml +1 -1
  3. data/.github/workflows/comments.yml +3 -3
  4. data/.github/workflows/ruby.yml +7 -8
  5. data/CHANGELOG.md +60 -0
  6. data/core/array.rbs +52 -3
  7. data/core/comparable.rbs +13 -6
  8. data/core/complex.rbs +40 -25
  9. data/core/dir.rbs +2 -2
  10. data/core/encoding.rbs +3 -7
  11. data/core/enumerable.rbs +1 -1
  12. data/core/enumerator.rbs +43 -1
  13. data/core/fiber.rbs +26 -17
  14. data/core/file.rbs +23 -8
  15. data/core/file_test.rbs +1 -1
  16. data/core/float.rbs +223 -32
  17. data/core/gc.rbs +4 -9
  18. data/core/hash.rbs +9 -10
  19. data/core/integer.rbs +104 -63
  20. data/core/io/buffer.rbs +21 -10
  21. data/core/io.rbs +8 -8
  22. data/core/kernel.rbs +12 -8
  23. data/core/method.rbs +49 -19
  24. data/core/module.rbs +30 -12
  25. data/core/numeric.rbs +17 -9
  26. data/core/object_space.rbs +13 -20
  27. data/core/pathname.rbs +2 -37
  28. data/core/proc.rbs +15 -16
  29. data/core/ractor.rbs +156 -145
  30. data/core/range.rbs +1 -1
  31. data/core/rational.rbs +56 -34
  32. data/core/rbs/unnamed/argf.rbs +1 -1
  33. data/core/regexp.rbs +3 -3
  34. data/core/ruby.rbs +53 -0
  35. data/core/rubygems/version.rbs +2 -3
  36. data/core/set.rbs +88 -66
  37. data/core/signal.rbs +24 -14
  38. data/core/string.rbs +304 -166
  39. data/core/symbol.rbs +13 -7
  40. data/core/thread.rbs +12 -13
  41. data/core/trace_point.rbs +7 -4
  42. data/lib/rbs/collection/config/lockfile_generator.rb +7 -0
  43. data/lib/rbs/environment_loader.rb +0 -6
  44. data/lib/rbs/subtractor.rb +3 -1
  45. data/lib/rbs/test/type_check.rb +1 -0
  46. data/lib/rbs/version.rb +1 -1
  47. data/lib/rdoc/discover.rb +1 -1
  48. data/stdlib/bigdecimal/0/big_decimal.rbs +100 -82
  49. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  50. data/stdlib/cgi/0/core.rbs +11 -1
  51. data/stdlib/cgi-escape/0/escape.rbs +33 -15
  52. data/stdlib/date/0/date.rbs +67 -59
  53. data/stdlib/date/0/date_time.rbs +1 -1
  54. data/stdlib/json/0/json.rbs +1 -0
  55. data/stdlib/objspace/0/objspace.rbs +1 -1
  56. data/stdlib/openssl/0/openssl.rbs +150 -80
  57. data/stdlib/pathname/0/pathname.rbs +36 -0
  58. data/stdlib/psych/0/psych.rbs +3 -3
  59. data/stdlib/stringio/0/stringio.rbs +796 -37
  60. data/stdlib/strscan/0/string_scanner.rbs +1 -1
  61. data/stdlib/tempfile/0/tempfile.rbs +2 -2
  62. data/stdlib/time/0/time.rbs +1 -1
  63. data/stdlib/timeout/0/timeout.rbs +63 -7
  64. data/stdlib/uri/0/generic.rbs +1 -1
  65. metadata +4 -2
data/core/symbol.rbs CHANGED
@@ -130,19 +130,25 @@ class Symbol
130
130
 
131
131
  # <!--
132
132
  # rdoc-file=string.c
133
- # - symbol <=> object -> -1, 0, +1, or nil
133
+ # - self <=> other -> -1, 0, 1, or nil
134
134
  # -->
135
- # If `object` is a symbol, returns the equivalent of `symbol.to_s <=>
136
- # object.to_s`:
135
+ # Compares `self` and `other`, using String#<=>.
137
136
  #
138
- # :bar <=> :foo # => -1
139
- # :foo <=> :foo # => 0
140
- # :foo <=> :bar # => 1
137
+ # Returns:
141
138
  #
142
- # Otherwise, returns `nil`:
139
+ # * `self.to_s <=> other.to_s`, if `other` is a symbol.
140
+ # * `nil`, otherwise.
143
141
  #
142
+ # Examples:
143
+ #
144
+ # :bar <=> :foo # => -1
145
+ # :foo <=> :foo # => 0
146
+ # :foo <=> :bar # => 1
144
147
  # :foo <=> 'bar' # => nil
145
148
  #
149
+ # Class Symbol includes module Comparable, each of whose methods uses Symbol#<=>
150
+ # for comparison.
151
+ #
146
152
  # Related: String#<=>.
147
153
  #
148
154
  def <=>: (Symbol object) -> (-1 | 0 | 1)
data/core/thread.rbs CHANGED
@@ -963,12 +963,11 @@ class Thread < Object
963
963
 
964
964
  # <!--
965
965
  # rdoc-file=thread.c
966
- # - thr.raise
967
- # - thr.raise(string)
968
- # - thr.raise(exception [, string [, array]])
966
+ # - raise(exception, message = exception.to_s, backtrace = nil, cause: $!)
967
+ # - raise(message = nil, cause: $!)
969
968
  # -->
970
969
  # Raises an exception from the given thread. The caller does not have to be
971
- # `thr`. See Kernel#raise for more information.
970
+ # `thr`. See Kernel#raise for more information on arguments.
972
971
  #
973
972
  # Thread.abort_on_exception = true
974
973
  # a = Thread.new { sleep(200) }
@@ -1523,7 +1522,7 @@ end
1523
1522
  #
1524
1523
  class Thread::Mutex < Object
1525
1524
  # <!--
1526
- # rdoc-file=thread_sync.c
1525
+ # rdoc-file=thread_sync.rb
1527
1526
  # - mutex.lock -> self
1528
1527
  # -->
1529
1528
  # Attempts to grab the lock and waits if it isn't available. Raises
@@ -1532,7 +1531,7 @@ class Thread::Mutex < Object
1532
1531
  def lock: () -> self
1533
1532
 
1534
1533
  # <!--
1535
- # rdoc-file=thread_sync.c
1534
+ # rdoc-file=thread_sync.rb
1536
1535
  # - mutex.locked? -> true or false
1537
1536
  # -->
1538
1537
  # Returns `true` if this lock is currently held by some thread.
@@ -1540,7 +1539,7 @@ class Thread::Mutex < Object
1540
1539
  def locked?: () -> bool
1541
1540
 
1542
1541
  # <!--
1543
- # rdoc-file=thread_sync.c
1542
+ # rdoc-file=thread_sync.rb
1544
1543
  # - mutex.owned? -> true or false
1545
1544
  # -->
1546
1545
  # Returns `true` if this lock is currently held by current thread.
@@ -1548,7 +1547,7 @@ class Thread::Mutex < Object
1548
1547
  def owned?: () -> bool
1549
1548
 
1550
1549
  # <!--
1551
- # rdoc-file=thread_sync.c
1550
+ # rdoc-file=thread_sync.rb
1552
1551
  # - mutex.synchronize { ... } -> result of the block
1553
1552
  # -->
1554
1553
  # Obtains a lock, runs the block, and releases the lock when the block
@@ -1557,7 +1556,7 @@ class Thread::Mutex < Object
1557
1556
  def synchronize: [X] () { () -> X } -> X
1558
1557
 
1559
1558
  # <!--
1560
- # rdoc-file=thread_sync.c
1559
+ # rdoc-file=thread_sync.rb
1561
1560
  # - mutex.try_lock -> true or false
1562
1561
  # -->
1563
1562
  # Attempts to obtain the lock and returns immediately. Returns `true` if the
@@ -1566,11 +1565,11 @@ class Thread::Mutex < Object
1566
1565
  def try_lock: () -> bool
1567
1566
 
1568
1567
  # <!--
1569
- # rdoc-file=thread_sync.c
1570
- # - mutex.unlock -> self
1568
+ # rdoc-file=thread_sync.rb
1569
+ # - mutex.lock -> self
1571
1570
  # -->
1572
- # Releases the lock. Raises `ThreadError` if `mutex` wasn't locked by the
1573
- # current thread.
1571
+ # Attempts to grab the lock and waits if it isn't available. Raises
1572
+ # `ThreadError` if `mutex` was locked by the current thread.
1574
1573
  #
1575
1574
  def unlock: () -> self
1576
1575
  end
data/core/trace_point.rbs CHANGED
@@ -25,7 +25,8 @@
25
25
  # change. Instead, it is recommended to specify the types of events you want to
26
26
  # use.
27
27
  #
28
- # To filter what is traced, you can pass any of the following as `events`:
28
+ # To filter what is traced, you can pass any number of the following as
29
+ # `events`:
29
30
  #
30
31
  # `:line`
31
32
  # : Execute an expression or statement on a new line.
@@ -107,8 +108,8 @@ class TracePoint
107
108
  #
108
109
  # A block must be given; otherwise, an ArgumentError is raised.
109
110
  #
110
- # If the trace method isn't included in the given events filter, a RuntimeError
111
- # is raised.
111
+ # If the trace method isn't supported for the given event(s) filter, a
112
+ # RuntimeError is raised.
112
113
  #
113
114
  # TracePoint.trace(:line) do |tp|
114
115
  # p tp.raised_exception
@@ -122,7 +123,9 @@ class TracePoint
122
123
  # end
123
124
  # $tp.lineno #=> access from outside (RuntimeError)
124
125
  #
125
- # Access from other threads is also forbidden.
126
+ # Access from other ractors, threads or fibers is forbidden. TracePoints are
127
+ # active per-ractor so if you enable a TracePoint in one ractor, other ractors
128
+ # will not be affected.
126
129
  #
127
130
  def self.new: (*_ToSym events) { (instance tp) -> void } -> instance
128
131
 
@@ -184,6 +184,13 @@ module RBS
184
184
  lockfile.gems[name] = { name: name, version: "0", source: source }
185
185
  end
186
186
  return
187
+ when 'set', 'pathname'
188
+ # set and pathname is migrated to core from stdlib.
189
+ RBS.logger.info {
190
+ from = from_gem || "rbs_collection.yaml"
191
+ "`#{name}` is a part of the Ruby core library. The dependency to the library can be safely deleted from #{from}."
192
+ }
193
+ return
187
194
  when *ALUMNI_STDLIBS.keys
188
195
  version = ALUMNI_STDLIBS.fetch(name)
189
196
  if from_gem
@@ -50,12 +50,6 @@ module RBS
50
50
  when path
51
51
  dirs << path
52
52
  when library
53
- case library
54
- when 'pathname'
55
- RBS.logger.warn "`#{library}` has been moved to core library, so it is always loaded. Remove explicit loading `#{library}`"
56
- return
57
- end
58
-
59
53
  if libs.add?(Library.new(name: library, version: version)) && resolve_dependencies
60
54
  resolve_dependencies(library: library, version: version)
61
55
  end
@@ -107,7 +107,9 @@ module RBS
107
107
  each_member(owner).any? do |m|
108
108
  case m
109
109
  when AST::Members::InstanceVariable
110
- m.name == name
110
+ m.name == name && kind == :instance
111
+ when AST::Members::ClassInstanceVariable
112
+ m.name == name && kind == :singleton
111
113
  when AST::Members::Attribute
112
114
  ivar_name = m.ivar_name == false ? nil : m.ivar_name || :"@#{m.name}"
113
115
  ivar_name == name && m.kind == kind
@@ -364,6 +364,7 @@ module RBS
364
364
  value(val, builder.expand_alias2(type.name.absolute!, type.args))
365
365
  when Types::Tuple
366
366
  Test.call(val, IS_AP, ::Array) &&
367
+ type.types.length == val.length &&
367
368
  type.types.map.with_index {|ty, index| value(val[index], ty) }.all?
368
369
  when Types::Record
369
370
  Test::call(val, IS_AP, ::Hash) &&
data/lib/rbs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RBS
4
- VERSION = "3.10.0.pre.2"
4
+ VERSION = "3.10.1"
5
5
  end
data/lib/rdoc/discover.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  begin
4
- gem 'rdoc', '~> 6.16'
4
+ gem 'rdoc', '>= 6.16'
5
5
  require 'rdoc_plugin/parser'
6
6
  module RDoc
7
7
  class Parser
@@ -609,7 +609,7 @@ class BigDecimal < Numeric
609
609
  # The quotient q is (a/b).floor, and the modulus is the amount that must be
610
610
  # added to q * b to get a.
611
611
  #
612
- def divmod: (Numeric) -> [ BigDecimal, BigDecimal ]
612
+ def divmod: (Numeric) -> [ Integer, BigDecimal ]
613
613
 
614
614
  # <!--
615
615
  # rdoc-file=ext/bigdecimal/bigdecimal.c
@@ -783,20 +783,6 @@ class BigDecimal < Numeric
783
783
  #
784
784
  def power: (Numeric n, int prec) -> BigDecimal
785
785
 
786
- # <!--
787
- # rdoc-file=ext/bigdecimal/bigdecimal.c
788
- # - precs -> array
789
- # -->
790
- # Returns an Array of two Integer values that represent platform-dependent
791
- # internal storage properties.
792
- #
793
- # This method is deprecated and will be removed in the future. Instead, use
794
- # BigDecimal#n_significant_digits for obtaining the number of significant digits
795
- # in scientific notation, and BigDecimal#precision for obtaining the number of
796
- # digits in decimal notation.
797
- #
798
- def precs: () -> [ Integer, Integer ]
799
-
800
786
  # <!--
801
787
  # rdoc-file=ext/bigdecimal/bigdecimal.c
802
788
  # - quo(value) -> bigdecimal
@@ -1274,33 +1260,35 @@ class Integer
1274
1260
 
1275
1261
  # <!--
1276
1262
  # rdoc-file=numeric.c
1277
- # - self / numeric -> numeric_result
1263
+ # - self / other -> numeric
1278
1264
  # -->
1279
- # Performs division; for integer `numeric`, truncates the result to an integer:
1265
+ # Returns the quotient of `self` and `other`.
1266
+ #
1267
+ # For integer `other`, truncates the result to an integer:
1280
1268
  #
1281
- # 4 / 3 # => 1
1282
- # 4 / -3 # => -2
1283
- # -4 / 3 # => -2
1284
- # -4 / -3 # => 1
1269
+ # 4 / 3 # => 1
1270
+ # 4 / -3 # => -2
1271
+ # -4 / 3 # => -2
1272
+ # -4 / -3 # => 1
1285
1273
  #
1286
- # For other +numeric+, returns non-integer result:
1274
+ # For non-integer `other`, returns a non-integer result:
1287
1275
  #
1288
- # 4 / 3.0 # => 1.3333333333333333
1289
- # 4 / Rational(3, 1) # => (4/3)
1290
- # 4 / Complex(3, 0) # => ((4/3)+0i)
1276
+ # 4 / 3.0 # => 1.3333333333333333
1277
+ # 4 / Rational(3, 1) # => (4/3)
1278
+ # 4 / Complex(3, 0) # => ((4/3)+0i)
1291
1279
  #
1292
1280
  def /: (BigDecimal) -> BigDecimal
1293
1281
  | ...
1294
1282
 
1295
1283
  # <!--
1296
1284
  # rdoc-file=numeric.c
1297
- # - self * numeric -> numeric_result
1285
+ # - self * other -> numeric
1298
1286
  # -->
1299
- # Performs multiplication:
1287
+ # Returns the numeric product of `self` and `other`:
1300
1288
  #
1301
1289
  # 4 * 2 # => 8
1302
- # 4 * -2 # => -8
1303
1290
  # -4 * 2 # => -8
1291
+ # 4 * -2 # => -8
1304
1292
  # 4 * 2.0 # => 8.0
1305
1293
  # 4 * Rational(1, 3) # => (4/3)
1306
1294
  # 4 * Complex(2, 0) # => (8+0i)
@@ -1310,25 +1298,29 @@ class Integer
1310
1298
 
1311
1299
  # <!--
1312
1300
  # rdoc-file=numeric.c
1313
- # - self + numeric -> numeric_result
1301
+ # - self + other -> numeric
1314
1302
  # -->
1315
- # Performs addition:
1303
+ # Returns the sum of `self` and `other`:
1304
+ #
1305
+ # 1 + 1 # => 2
1306
+ # 1 + -1 # => 0
1307
+ # 1 + 0 # => 1
1308
+ # 1 + -2 # => -1
1309
+ # 1 + Complex(1, 0) # => (2+0i)
1310
+ # 1 + Rational(1, 1) # => (2/1)
1316
1311
  #
1317
- # 2 + 2 # => 4
1318
- # -2 + 2 # => 0
1319
- # -2 + -2 # => -4
1320
- # 2 + 2.0 # => 4.0
1321
- # 2 + Rational(2, 1) # => (4/1)
1322
- # 2 + Complex(2, 0) # => (4+0i)
1312
+ # For a computation involving Floats, the result may be inexact (see Float#+):
1313
+ #
1314
+ # 1 + 3.14 # => 4.140000000000001
1323
1315
  #
1324
1316
  def +: (BigDecimal) -> BigDecimal
1325
1317
  | ...
1326
1318
 
1327
1319
  # <!--
1328
1320
  # rdoc-file=numeric.c
1329
- # - self - numeric -> numeric_result
1321
+ # - self - other -> numeric
1330
1322
  # -->
1331
- # Performs subtraction:
1323
+ # Returns the difference of `self` and `other`:
1332
1324
  #
1333
1325
  # 4 - 2 # => 2
1334
1326
  # -4 - 2 # => -6
@@ -1368,7 +1360,7 @@ class Float
1368
1360
  # rdoc-file=numeric.c
1369
1361
  # - self / other -> numeric
1370
1362
  # -->
1371
- # Returns a new Float which is the result of dividing `self` by `other`:
1363
+ # Returns the quotient of `self` and `other`:
1372
1364
  #
1373
1365
  # f = 3.14
1374
1366
  # f / 2 # => 1.57
@@ -1383,7 +1375,7 @@ class Float
1383
1375
  # rdoc-file=numeric.c
1384
1376
  # - self * other -> numeric
1385
1377
  # -->
1386
- # Returns a new Float which is the product of `self` and `other`:
1378
+ # Returns the numeric product of `self` and `other`:
1387
1379
  #
1388
1380
  # f = 3.14
1389
1381
  # f * 2 # => 6.28
@@ -1396,15 +1388,20 @@ class Float
1396
1388
 
1397
1389
  # <!--
1398
1390
  # rdoc-file=numeric.c
1399
- # - self + other -> numeric
1391
+ # - self + other -> float or complex
1400
1392
  # -->
1401
- # Returns a new Float which is the sum of `self` and `other`:
1393
+ # Returns the sum of `self` and `other`; the result may be inexact (see Float):
1402
1394
  #
1403
- # f = 3.14
1404
- # f + 1 # => 4.140000000000001
1405
- # f + 1.0 # => 4.140000000000001
1406
- # f + Rational(1, 1) # => 4.140000000000001
1407
- # f + Complex(1, 0) # => (4.140000000000001+0i)
1395
+ # 3.14 + 0 # => 3.14
1396
+ # 3.14 + 1 # => 4.140000000000001
1397
+ # -3.14 + 0 # => -3.14
1398
+ # -3.14 + 1 # => -2.14
1399
+ #
1400
+ # 3.14 + -3.14 # => 0.0
1401
+ # -3.14 + -3.14 # => -6.28
1402
+ #
1403
+ # 3.14 + Complex(1, 0) # => (4.140000000000001+0i)
1404
+ # 3.14 + Rational(1, 1) # => 4.140000000000001
1408
1405
  #
1409
1406
  def +: (BigDecimal) -> BigDecimal
1410
1407
  | ...
@@ -1413,7 +1410,7 @@ class Float
1413
1410
  # rdoc-file=numeric.c
1414
1411
  # - self - other -> numeric
1415
1412
  # -->
1416
- # Returns a new Float which is the difference of `self` and `other`:
1413
+ # Returns the difference of `self` and `other`:
1417
1414
  #
1418
1415
  # f = 3.14
1419
1416
  # f - 1 # => 2.14
@@ -1468,10 +1465,9 @@ class Rational
1468
1465
 
1469
1466
  # <!--
1470
1467
  # rdoc-file=rational.c
1471
- # - rat / numeric -> numeric
1472
- # - rat.quo(numeric) -> numeric
1468
+ # - self / other -> numeric
1473
1469
  # -->
1474
- # Performs division.
1470
+ # Returns the quotient of `self` and `other`:
1475
1471
  #
1476
1472
  # Rational(2, 3) / Rational(2, 3) #=> (1/1)
1477
1473
  # Rational(900) / Rational(1) #=> (900/1)
@@ -1484,39 +1480,50 @@ class Rational
1484
1480
 
1485
1481
  # <!--
1486
1482
  # rdoc-file=rational.c
1487
- # - rat * numeric -> numeric
1483
+ # - self * other -> numeric
1488
1484
  # -->
1489
- # Performs multiplication.
1485
+ # Returns the numeric product of `self` and `other`:
1490
1486
  #
1491
- # Rational(2, 3) * Rational(2, 3) #=> (4/9)
1492
- # Rational(900) * Rational(1) #=> (900/1)
1493
- # Rational(-2, 9) * Rational(-9, 2) #=> (1/1)
1494
- # Rational(9, 8) * 4 #=> (9/2)
1495
- # Rational(20, 9) * 9.8 #=> 21.77777777777778
1487
+ # Rational(9, 8) * 4 #=> (9/2)
1488
+ # Rational(20, 9) * 9.8 #=> 21.77777777777778
1489
+ # Rational(9, 8) * Complex(1, 2) # => ((9/8)+(9/4)*i)
1490
+ # Rational(2, 3) * Rational(2, 3) #=> (4/9)
1491
+ # Rational(900) * Rational(1) #=> (900/1)
1492
+ # Rational(-2, 9) * Rational(-9, 2) #=> (1/1)
1496
1493
  #
1497
1494
  def *: (BigDecimal) -> BigDecimal
1498
1495
  | ...
1499
1496
 
1500
1497
  # <!--
1501
1498
  # rdoc-file=rational.c
1502
- # - rat + numeric -> numeric
1499
+ # - self + other -> numeric
1503
1500
  # -->
1504
- # Performs addition.
1501
+ # Returns the sum of `self` and `other`:
1502
+ #
1503
+ # Rational(2, 3) + 0 # => (2/3)
1504
+ # Rational(2, 3) + 1 # => (5/3)
1505
+ # Rational(2, 3) + -1 # => (-1/3)
1506
+ #
1507
+ # Rational(2, 3) + Complex(1, 0) # => ((5/3)+0i)
1505
1508
  #
1506
- # Rational(2, 3) + Rational(2, 3) #=> (4/3)
1507
- # Rational(900) + Rational(1) #=> (901/1)
1508
- # Rational(-2, 9) + Rational(-9, 2) #=> (-85/18)
1509
- # Rational(9, 8) + 4 #=> (41/8)
1510
- # Rational(20, 9) + 9.8 #=> 12.022222222222222
1509
+ # Rational(2, 3) + Rational(1, 1) # => (5/3)
1510
+ # Rational(2, 3) + Rational(3, 2) # => (13/6)
1511
+ # Rational(2, 3) + Rational(3.0, 2.0) # => (13/6)
1512
+ # Rational(2, 3) + Rational(3.1, 2.1) # => (30399297484750849/14186338826217063)
1513
+ #
1514
+ # For a computation involving Floats, the result may be inexact (see Float#+):
1515
+ #
1516
+ # Rational(2, 3) + 1.0 # => 1.6666666666666665
1517
+ # Rational(2, 3) + Complex(1.0, 0.0) # => (1.6666666666666665+0.0i)
1511
1518
  #
1512
1519
  def +: (BigDecimal) -> BigDecimal
1513
1520
  | ...
1514
1521
 
1515
1522
  # <!--
1516
1523
  # rdoc-file=rational.c
1517
- # - rat - numeric -> numeric
1524
+ # - self - other -> numeric
1518
1525
  # -->
1519
- # Performs subtraction.
1526
+ # Returns the difference of `self` and `other`:
1520
1527
  #
1521
1528
  # Rational(2, 3) - Rational(2, 3) #=> (0/1)
1522
1529
  # Rational(900) - Rational(1) #=> (899/1)
@@ -1553,9 +1560,9 @@ class Complex
1553
1560
 
1554
1561
  # <!--
1555
1562
  # rdoc-file=complex.c
1556
- # - complex / numeric -> new_complex
1563
+ # - self / other -> complex
1557
1564
  # -->
1558
- # Returns the quotient of `self` and `numeric`:
1565
+ # Returns the quotient of `self` and `other`:
1559
1566
  #
1560
1567
  # Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
1561
1568
  # Complex.rect(900) / Complex.rect(1) # => (900+0i)
@@ -1568,39 +1575,50 @@ class Complex
1568
1575
 
1569
1576
  # <!--
1570
1577
  # rdoc-file=complex.c
1571
- # - complex * numeric -> new_complex
1578
+ # - self * other -> numeric
1572
1579
  # -->
1573
- # Returns the product of `self` and `numeric`:
1580
+ # Returns the numeric product of `self` and `other`:
1574
1581
  #
1582
+ # Complex.rect(9, 8) * 4 # => (36+32i)
1583
+ # Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
1575
1584
  # Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
1576
1585
  # Complex.rect(900) * Complex.rect(1) # => (900+0i)
1577
1586
  # Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
1578
- # Complex.rect(9, 8) * 4 # => (36+32i)
1579
- # Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
1587
+ # Complex.rect(9, 8) * Rational(2, 3) # => ((6/1)+(16/3)*i)
1580
1588
  #
1581
1589
  def *: (BigDecimal) -> Complex
1582
1590
  | ...
1583
1591
 
1584
1592
  # <!--
1585
1593
  # rdoc-file=complex.c
1586
- # - complex + numeric -> new_complex
1594
+ # - self + other -> numeric
1587
1595
  # -->
1588
- # Returns the sum of `self` and `numeric`:
1596
+ # Returns the sum of `self` and `other`:
1597
+ #
1598
+ # Complex(1, 2) + 0 # => (1+2i)
1599
+ # Complex(1, 2) + 1 # => (2+2i)
1600
+ # Complex(1, 2) + -1 # => (0+2i)
1601
+ #
1602
+ # Complex(1, 2) + 1.0 # => (2.0+2i)
1603
+ #
1604
+ # Complex(1, 2) + Complex(2, 1) # => (3+3i)
1605
+ # Complex(1, 2) + Complex(2.0, 1.0) # => (3.0+3.0i)
1606
+ #
1607
+ # Complex(1, 2) + Rational(1, 1) # => ((2/1)+2i)
1608
+ # Complex(1, 2) + Rational(1, 2) # => ((3/2)+2i)
1609
+ #
1610
+ # For a computation involving Floats, the result may be inexact (see Float#+):
1589
1611
  #
1590
- # Complex.rect(2, 3) + Complex.rect(2, 3) # => (4+6i)
1591
- # Complex.rect(900) + Complex.rect(1) # => (901+0i)
1592
- # Complex.rect(-2, 9) + Complex.rect(-9, 2) # => (-11+11i)
1593
- # Complex.rect(9, 8) + 4 # => (13+8i)
1594
- # Complex.rect(20, 9) + 9.8 # => (29.8+9i)
1612
+ # Complex(1, 2) + 3.14 # => (4.140000000000001+2i)
1595
1613
  #
1596
1614
  def +: (BigDecimal) -> Complex
1597
1615
  | ...
1598
1616
 
1599
1617
  # <!--
1600
1618
  # rdoc-file=complex.c
1601
- # - complex - numeric -> new_complex
1619
+ # - self - other -> complex
1602
1620
  # -->
1603
- # Returns the difference of `self` and `numeric`:
1621
+ # Returns the difference of `self` and `other`:
1604
1622
  #
1605
1623
  # Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
1606
1624
  # Complex.rect(900) - Complex.rect(1) # => (899+0i)