rbs 3.3.2 → 3.4.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.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -5
  3. data/.github/workflows/ruby.yml +7 -8
  4. data/.github/workflows/typecheck.yml +37 -0
  5. data/CHANGELOG.md +65 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +11 -11
  8. data/README.md +1 -0
  9. data/Rakefile +2 -2
  10. data/Steepfile +2 -2
  11. data/core/array.rbs +19 -49
  12. data/core/basic_object.rbs +2 -2
  13. data/core/comparable.rbs +17 -8
  14. data/core/complex.rbs +82 -43
  15. data/core/data.rbs +2 -4
  16. data/core/dir.rbs +635 -295
  17. data/core/enumerable.rbs +11 -18
  18. data/core/enumerator.rbs +37 -31
  19. data/core/errors.rbs +4 -0
  20. data/core/false_class.rbs +34 -15
  21. data/core/fiber.rbs +23 -0
  22. data/core/file.rbs +329 -120
  23. data/core/float.rbs +17 -32
  24. data/core/gc.rbs +17 -11
  25. data/core/hash.rbs +22 -44
  26. data/core/integer.rbs +82 -113
  27. data/core/io/buffer.rbs +90 -47
  28. data/core/io.rbs +54 -121
  29. data/core/kernel.rbs +442 -489
  30. data/core/match_data.rbs +55 -56
  31. data/core/module.rbs +45 -1
  32. data/core/nil_class.rbs +98 -35
  33. data/core/numeric.rbs +22 -32
  34. data/core/object_space/weak_key_map.rbs +102 -0
  35. data/core/process.rbs +1242 -655
  36. data/core/ractor.rbs +139 -120
  37. data/core/range.rbs +100 -4
  38. data/core/rational.rbs +0 -4
  39. data/core/rbs/unnamed/argf.rbs +16 -8
  40. data/core/rbs/unnamed/env_class.rbs +0 -24
  41. data/core/refinement.rbs +8 -0
  42. data/core/regexp.rbs +1149 -598
  43. data/core/ruby_vm.rbs +126 -12
  44. data/core/rubygems/platform.rbs +9 -0
  45. data/core/rubygems/rubygems.rbs +1 -1
  46. data/core/rubygems/version.rbs +5 -1
  47. data/core/set.rbs +20 -22
  48. data/core/signal.rbs +4 -4
  49. data/core/string.rbs +283 -230
  50. data/core/string_io.rbs +2 -14
  51. data/core/struct.rbs +404 -24
  52. data/core/symbol.rbs +1 -19
  53. data/core/thread.rbs +29 -12
  54. data/core/time.rbs +227 -104
  55. data/core/trace_point.rbs +2 -5
  56. data/core/true_class.rbs +54 -21
  57. data/core/warning.rbs +14 -11
  58. data/docs/data_and_struct.md +29 -0
  59. data/docs/gem.md +58 -0
  60. data/docs/syntax.md +3 -5
  61. data/docs/tools.md +1 -0
  62. data/ext/rbs_extension/lexer.c +643 -559
  63. data/ext/rbs_extension/lexer.re +5 -1
  64. data/ext/rbs_extension/parser.c +12 -3
  65. data/ext/rbs_extension/unescape.c +7 -47
  66. data/lib/rbs/cli/diff.rb +4 -1
  67. data/lib/rbs/cli/validate.rb +280 -0
  68. data/lib/rbs/cli.rb +2 -194
  69. data/lib/rbs/collection/config.rb +5 -6
  70. data/lib/rbs/collection/sources/git.rb +1 -1
  71. data/lib/rbs/collection.rb +1 -0
  72. data/lib/rbs/diff.rb +7 -4
  73. data/lib/rbs/errors.rb +11 -0
  74. data/lib/rbs/test/errors.rb +10 -2
  75. data/lib/rbs/test/guaranteed.rb +2 -3
  76. data/lib/rbs/test/type_check.rb +15 -10
  77. data/lib/rbs/test.rb +3 -3
  78. data/lib/rbs/types.rb +29 -0
  79. data/lib/rbs/unit_test/convertibles.rb +176 -0
  80. data/lib/rbs/unit_test/spy.rb +136 -0
  81. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  82. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  83. data/lib/rbs/unit_test.rb +6 -0
  84. data/lib/rbs/version.rb +1 -1
  85. data/sig/cli/validate.rbs +43 -0
  86. data/sig/diff.rbs +3 -1
  87. data/sig/errors.rbs +8 -0
  88. data/sig/rbs.rbs +1 -1
  89. data/sig/test/errors.rbs +52 -0
  90. data/sig/test/guranteed.rbs +9 -0
  91. data/sig/test/type_check.rbs +19 -0
  92. data/sig/test.rbs +82 -0
  93. data/sig/types.rbs +6 -1
  94. data/sig/unit_test/convertibles.rbs +154 -0
  95. data/sig/unit_test/spy.rbs +28 -0
  96. data/sig/unit_test/type_assertions.rbs +194 -0
  97. data/sig/unit_test/with_aliases.rbs +136 -0
  98. data/stdlib/base64/0/base64.rbs +307 -45
  99. data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
  100. data/stdlib/coverage/0/coverage.rbs +2 -2
  101. data/stdlib/csv/0/csv.rbs +25 -55
  102. data/stdlib/date/0/date.rbs +1 -43
  103. data/stdlib/date/0/date_time.rbs +1 -13
  104. data/stdlib/delegate/0/delegator.rbs +186 -0
  105. data/stdlib/delegate/0/kernel.rbs +47 -0
  106. data/stdlib/delegate/0/simple_delegator.rbs +98 -0
  107. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
  108. data/stdlib/erb/0/erb.rbs +2 -2
  109. data/stdlib/fileutils/0/fileutils.rbs +0 -19
  110. data/stdlib/io-console/0/io-console.rbs +12 -1
  111. data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
  112. data/stdlib/json/0/json.rbs +320 -81
  113. data/stdlib/logger/0/logger.rbs +9 -5
  114. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +6 -6
  115. data/stdlib/monitor/0/monitor.rbs +78 -0
  116. data/stdlib/net-http/0/net-http.rbs +1880 -543
  117. data/stdlib/objspace/0/objspace.rbs +19 -13
  118. data/stdlib/openssl/0/openssl.rbs +508 -127
  119. data/stdlib/optparse/0/optparse.rbs +25 -11
  120. data/stdlib/pathname/0/pathname.rbs +1 -1
  121. data/stdlib/pp/0/pp.rbs +2 -5
  122. data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
  123. data/stdlib/pstore/0/pstore.rbs +2 -4
  124. data/stdlib/rdoc/0/comment.rbs +1 -2
  125. data/stdlib/resolv/0/resolv.rbs +4 -2
  126. data/stdlib/socket/0/socket.rbs +2 -2
  127. data/stdlib/socket/0/unix_socket.rbs +2 -2
  128. data/stdlib/strscan/0/string_scanner.rbs +3 -2
  129. data/stdlib/tempfile/0/tempfile.rbs +1 -1
  130. data/stdlib/uri/0/common.rbs +245 -123
  131. metadata +24 -4
  132. data/lib/rbs/test/spy.rb +0 -6
data/core/complex.rbs CHANGED
@@ -1,77 +1,107 @@
1
1
  # <!-- rdoc-file=complex.c -->
2
- # A complex number can be represented as a paired real number with imaginary
3
- # unit; a+bi. Where a is real part, b is imaginary part and i is imaginary
4
- # unit. Real a equals complex a+0i mathematically.
2
+ # A Complex object houses a pair of values, given when the object is created as
3
+ # either *rectangular coordinates* or *polar coordinates*.
5
4
  #
6
- # You can create a Complex object explicitly with:
5
+ # ## Rectangular Coordinates
7
6
  #
8
- # * A [complex literal](rdoc-ref:syntax/literals.rdoc@Complex+Literals).
7
+ # The rectangular coordinates of a complex number are called the *real* and
8
+ # *imaginary* parts; see [Complex number
9
+ # definition](https://en.wikipedia.org/wiki/Complex_number#Definition).
9
10
  #
11
+ # You can create a Complex object from rectangular coordinates with:
10
12
  #
11
- # You can convert certain objects to Complex objects with:
13
+ # * A [complex literal](rdoc-ref:doc/syntax/literals.rdoc@Complex+Literals).
14
+ # * Method Complex.rect.
15
+ # * Method Kernel#Complex, either with numeric arguments or with certain
16
+ # string arguments.
17
+ # * Method String#to_c, for certain strings.
12
18
  #
13
- # * Method #Complex.
14
19
  #
20
+ # Note that each of the stored parts may be a an instance one of the classes
21
+ # Complex, Float, Integer, or Rational; they may be retrieved:
15
22
  #
16
- # Complex object can be created as literal, and also by using Kernel#Complex,
17
- # Complex::rect, Complex::polar or to_c method.
23
+ # * Separately, with methods Complex#real and Complex#imaginary.
24
+ # * Together, with method Complex#rect.
18
25
  #
19
- # 2+1i #=> (2+1i)
20
- # Complex(1) #=> (1+0i)
21
- # Complex(2, 3) #=> (2+3i)
22
- # Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i)
23
- # 3.to_c #=> (3+0i)
24
26
  #
25
- # You can also create complex object from floating-point numbers or strings.
27
+ # The corresponding (computed) polar values may be retrieved:
26
28
  #
27
- # Complex(0.3) #=> (0.3+0i)
28
- # Complex('0.3-0.5i') #=> (0.3-0.5i)
29
- # Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i)
30
- # Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i)
29
+ # * Separately, with methods Complex#abs and Complex#arg.
30
+ # * Together, with method Complex#polar.
31
31
  #
32
- # 0.3.to_c #=> (0.3+0i)
33
- # '0.3-0.5i'.to_c #=> (0.3-0.5i)
34
- # '2/3+3/4i'.to_c #=> ((2/3)+(3/4)*i)
35
- # '1@2'.to_c #=> (-0.4161468365471424+0.9092974268256817i)
36
32
  #
37
- # A complex object is either an exact or an inexact number.
33
+ # ## Polar Coordinates
38
34
  #
39
- # Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i)
40
- # Complex(1, 1) / 2.0 #=> (0.5+0.5i)
35
+ # The polar coordinates of a complex number are called the *absolute* and
36
+ # *argument* parts; see [Complex polar
37
+ # plane](https://en.wikipedia.org/wiki/Complex_number#Polar_complex_plane).
38
+ #
39
+ # You can create a Complex object from polar coordinates with:
40
+ #
41
+ # * Method Complex.polar.
42
+ # * Method Kernel#Complex, with certain string arguments.
43
+ # * Method String#to_c, for certain strings.
44
+ #
45
+ #
46
+ # Note that each of the stored parts may be a an instance one of the classes
47
+ # Complex, Float, Integer, or Rational; they may be retrieved:
48
+ #
49
+ # * Separately, with methods Complex#abs and Complex#arg.
50
+ # * Together, with method Complex#polar.
51
+ #
52
+ #
53
+ # The corresponding (computed) rectangular values may be retrieved:
54
+ #
55
+ # * Separately, with methods Complex#real and Complex#imag.
56
+ # * Together, with method Complex#rect.
41
57
  #
42
58
  class Complex < Numeric
43
59
  # <!--
44
60
  # rdoc-file=complex.c
45
- # - Complex.polar(abs[, arg]) -> complex
61
+ # - Complex.polar(abs, arg = 0) -> complex
46
62
  # -->
47
- # Returns a complex object which denotes the given polar form.
63
+ # Returns a new Complex object formed from the arguments, each of which must be
64
+ # an instance of Numeric, or an instance of one of its subclasses: Complex,
65
+ # Float, Integer, Rational; see [Polar
66
+ # Coordinates](rdoc-ref:Complex@Polar+Coordinates):
48
67
  #
49
- # Complex.polar(3, 0) #=> (3.0+0.0i)
50
- # Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i)
51
- # Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i)
52
- # Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i)
68
+ # Complex.polar(3) # => (3+0i)
69
+ # Complex.polar(3, 2.0) # => (-1.2484405096414273+2.727892280477045i)
70
+ # Complex.polar(-3, -2.0) # => (1.2484405096414273+2.727892280477045i)
53
71
  #
54
72
  def self.polar: (Numeric, ?Numeric) -> Complex
55
73
 
56
74
  # <!--
57
75
  # rdoc-file=complex.c
58
- # - Complex.rect(real[, imag]) -> complex
59
- # - Complex.rectangular(real[, imag]) -> complex
76
+ # - Complex.rect(real, imag = 0) -> complex
60
77
  # -->
61
- # Returns a complex object which denotes the given rectangular form.
78
+ # Returns a new Complex object formed from the arguments, each of which must be
79
+ # an instance of Numeric, or an instance of one of its subclasses: Complex,
80
+ # Float, Integer, Rational; see [Rectangular
81
+ # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
82
+ #
83
+ # Complex.rect(3) # => (3+0i)
84
+ # Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
85
+ # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
62
86
  #
63
- # Complex.rectangular(1, 2) #=> (1+2i)
87
+ # Complex.rectangular is an alias for Complex.rect.
64
88
  #
65
89
  def self.rect: (Numeric, ?Numeric) -> Complex
66
90
 
67
91
  # <!--
68
92
  # rdoc-file=complex.c
69
- # - Complex.rect(real[, imag]) -> complex
70
- # - Complex.rectangular(real[, imag]) -> complex
93
+ # - Complex.rect(real, imag = 0) -> complex
71
94
  # -->
72
- # Returns a complex object which denotes the given rectangular form.
95
+ # Returns a new Complex object formed from the arguments, each of which must be
96
+ # an instance of Numeric, or an instance of one of its subclasses: Complex,
97
+ # Float, Integer, Rational; see [Rectangular
98
+ # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
73
99
  #
74
- # Complex.rectangular(1, 2) #=> (1+2i)
100
+ # Complex.rect(3) # => (3+0i)
101
+ # Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
102
+ # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
103
+ #
104
+ # Complex.rectangular is an alias for Complex.rect.
75
105
  #
76
106
  alias self.rectangular self.rect
77
107
 
@@ -462,9 +492,16 @@ class Complex < Numeric
462
492
  def real?: () -> false
463
493
 
464
494
  # <!-- rdoc-file=complex.c -->
465
- # Returns a complex object which denotes the given rectangular form.
495
+ # Returns a new Complex object formed from the arguments, each of which must be
496
+ # an instance of Numeric, or an instance of one of its subclasses: Complex,
497
+ # Float, Integer, Rational; see [Rectangular
498
+ # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
499
+ #
500
+ # Complex.rect(3) # => (3+0i)
501
+ # Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
502
+ # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
466
503
  #
467
- # Complex.rectangular(1, 2) #=> (1+2i)
504
+ # Complex.rectangular is an alias for Complex.rect.
468
505
  #
469
506
  def rect: () -> [ Numeric, Numeric ]
470
507
 
@@ -559,6 +596,8 @@ class Complex < Numeric
559
596
  end
560
597
 
561
598
  # <!-- rdoc-file=complex.c -->
562
- # The imaginary unit.
599
+ # Equivalent to `Complex(0, 1)`:
600
+ #
601
+ # Complex::I # => (0+1i)
563
602
  #
564
603
  Complex::I: Complex
data/core/data.rbs CHANGED
@@ -27,7 +27,7 @@
27
27
  # distance.unit #=> "km"
28
28
  #
29
29
  # Constructed object also has a reasonable definitions of #== operator, #to_h
30
- # hash conversion, and #deconstruct/#deconstruct_keys to be used in pattern
30
+ # hash conversion, and #deconstruct / #deconstruct_keys to be used in pattern
31
31
  # matching.
32
32
  #
33
33
  # ::define method accepts an optional block and evaluates it in the context of
@@ -66,11 +66,9 @@
66
66
  class Data
67
67
  # <!--
68
68
  # rdoc-file=struct.c
69
- # - define(name, *symbols) -> class
70
69
  # - define(*symbols) -> class
71
70
  # -->
72
- # Defines a new Data class. If the first argument is a string, the class is
73
- # stored in `Data::<name>` constant.
71
+ # Defines a new Data class.
74
72
  #
75
73
  # measure = Data.define(:amount, :unit)
76
74
  # #=> #<Class:0x00007f70c6868498>