rbs 3.3.2 → 3.4.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) 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 +50 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +11 -11
  8. data/Steepfile +2 -2
  9. data/core/array.rbs +19 -49
  10. data/core/basic_object.rbs +2 -2
  11. data/core/comparable.rbs +17 -8
  12. data/core/complex.rbs +82 -43
  13. data/core/data.rbs +2 -4
  14. data/core/dir.rbs +635 -295
  15. data/core/enumerable.rbs +11 -18
  16. data/core/enumerator.rbs +37 -31
  17. data/core/errors.rbs +4 -0
  18. data/core/false_class.rbs +34 -15
  19. data/core/fiber.rbs +23 -0
  20. data/core/file.rbs +329 -120
  21. data/core/float.rbs +17 -32
  22. data/core/gc.rbs +17 -11
  23. data/core/hash.rbs +22 -44
  24. data/core/integer.rbs +82 -113
  25. data/core/io/buffer.rbs +90 -47
  26. data/core/io.rbs +39 -116
  27. data/core/kernel.rbs +442 -489
  28. data/core/match_data.rbs +55 -56
  29. data/core/module.rbs +45 -1
  30. data/core/nil_class.rbs +98 -35
  31. data/core/numeric.rbs +22 -32
  32. data/core/object_space/weak_key_map.rbs +102 -0
  33. data/core/process.rbs +1242 -655
  34. data/core/ractor.rbs +139 -120
  35. data/core/range.rbs +100 -4
  36. data/core/rational.rbs +0 -4
  37. data/core/rbs/unnamed/argf.rbs +16 -8
  38. data/core/rbs/unnamed/env_class.rbs +0 -24
  39. data/core/refinement.rbs +8 -0
  40. data/core/regexp.rbs +1149 -598
  41. data/core/ruby_vm.rbs +126 -12
  42. data/core/rubygems/platform.rbs +9 -0
  43. data/core/rubygems/rubygems.rbs +1 -1
  44. data/core/rubygems/version.rbs +5 -1
  45. data/core/set.rbs +20 -22
  46. data/core/signal.rbs +4 -4
  47. data/core/string.rbs +283 -230
  48. data/core/string_io.rbs +2 -14
  49. data/core/struct.rbs +404 -24
  50. data/core/symbol.rbs +1 -19
  51. data/core/thread.rbs +29 -12
  52. data/core/time.rbs +227 -104
  53. data/core/trace_point.rbs +2 -5
  54. data/core/true_class.rbs +54 -21
  55. data/core/warning.rbs +14 -11
  56. data/docs/data_and_struct.md +29 -0
  57. data/docs/syntax.md +3 -5
  58. data/docs/tools.md +1 -0
  59. data/ext/rbs_extension/lexer.c +643 -559
  60. data/ext/rbs_extension/lexer.re +5 -1
  61. data/ext/rbs_extension/parser.c +12 -3
  62. data/ext/rbs_extension/unescape.c +7 -47
  63. data/lib/rbs/cli/diff.rb +4 -1
  64. data/lib/rbs/cli/validate.rb +280 -0
  65. data/lib/rbs/cli.rb +2 -194
  66. data/lib/rbs/collection/config.rb +5 -6
  67. data/lib/rbs/collection/sources/git.rb +1 -1
  68. data/lib/rbs/collection.rb +1 -0
  69. data/lib/rbs/diff.rb +7 -4
  70. data/lib/rbs/errors.rb +11 -0
  71. data/lib/rbs/test/errors.rb +4 -1
  72. data/lib/rbs/test/guaranteed.rb +2 -3
  73. data/lib/rbs/test/type_check.rb +15 -10
  74. data/lib/rbs/test.rb +3 -3
  75. data/lib/rbs/types.rb +29 -0
  76. data/lib/rbs/unit_test/convertibles.rb +176 -0
  77. data/lib/rbs/unit_test/spy.rb +136 -0
  78. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  79. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  80. data/lib/rbs/unit_test.rb +6 -0
  81. data/lib/rbs/version.rb +1 -1
  82. data/sig/cli/validate.rbs +43 -0
  83. data/sig/diff.rbs +3 -1
  84. data/sig/errors.rbs +8 -0
  85. data/sig/rbs.rbs +1 -1
  86. data/sig/test/errors.rbs +52 -0
  87. data/sig/test/guranteed.rbs +9 -0
  88. data/sig/test/type_check.rbs +19 -0
  89. data/sig/test.rbs +82 -0
  90. data/sig/types.rbs +6 -1
  91. data/sig/unit_test/convertibles.rbs +154 -0
  92. data/sig/unit_test/spy.rbs +28 -0
  93. data/sig/unit_test/type_assertions.rbs +194 -0
  94. data/sig/unit_test/with_aliases.rbs +136 -0
  95. data/stdlib/base64/0/base64.rbs +307 -45
  96. data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
  97. data/stdlib/coverage/0/coverage.rbs +2 -2
  98. data/stdlib/csv/0/csv.rbs +25 -55
  99. data/stdlib/date/0/date.rbs +1 -43
  100. data/stdlib/date/0/date_time.rbs +1 -13
  101. data/stdlib/delegate/0/delegator.rbs +186 -0
  102. data/stdlib/delegate/0/kernel.rbs +47 -0
  103. data/stdlib/delegate/0/simple_delegator.rbs +98 -0
  104. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
  105. data/stdlib/erb/0/erb.rbs +2 -2
  106. data/stdlib/fileutils/0/fileutils.rbs +0 -19
  107. data/stdlib/io-console/0/io-console.rbs +12 -1
  108. data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
  109. data/stdlib/json/0/json.rbs +320 -81
  110. data/stdlib/logger/0/logger.rbs +9 -5
  111. data/stdlib/monitor/0/monitor.rbs +78 -0
  112. data/stdlib/net-http/0/net-http.rbs +1880 -543
  113. data/stdlib/objspace/0/objspace.rbs +19 -13
  114. data/stdlib/openssl/0/openssl.rbs +508 -127
  115. data/stdlib/optparse/0/optparse.rbs +25 -11
  116. data/stdlib/pathname/0/pathname.rbs +1 -1
  117. data/stdlib/pp/0/pp.rbs +2 -5
  118. data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
  119. data/stdlib/pstore/0/pstore.rbs +2 -4
  120. data/stdlib/rdoc/0/comment.rbs +1 -2
  121. data/stdlib/resolv/0/resolv.rbs +4 -2
  122. data/stdlib/socket/0/socket.rbs +2 -2
  123. data/stdlib/socket/0/unix_socket.rbs +2 -2
  124. data/stdlib/strscan/0/string_scanner.rbs +3 -2
  125. data/stdlib/tempfile/0/tempfile.rbs +1 -1
  126. data/stdlib/uri/0/common.rbs +245 -123
  127. metadata +23 -4
  128. 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>