rbs 0.10.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +9 -9
  3. data/CHANGELOG.md +29 -0
  4. data/Gemfile +1 -0
  5. data/README.md +1 -1
  6. data/Rakefile +16 -6
  7. data/Steepfile +28 -0
  8. data/bin/steep +4 -0
  9. data/bin/test_runner.rb +7 -5
  10. data/docs/syntax.md +14 -1
  11. data/lib/rbs/ast/comment.rb +7 -1
  12. data/lib/rbs/ast/declarations.rb +15 -9
  13. data/lib/rbs/ast/members.rb +3 -8
  14. data/lib/rbs/buffer.rb +1 -1
  15. data/lib/rbs/cli.rb +72 -3
  16. data/lib/rbs/constant.rb +1 -1
  17. data/lib/rbs/constant_table.rb +9 -8
  18. data/lib/rbs/definition.rb +31 -14
  19. data/lib/rbs/definition_builder.rb +97 -67
  20. data/lib/rbs/environment.rb +28 -11
  21. data/lib/rbs/environment_loader.rb +67 -47
  22. data/lib/rbs/location.rb +1 -5
  23. data/lib/rbs/method_type.rb +5 -5
  24. data/lib/rbs/namespace.rb +14 -3
  25. data/lib/rbs/parser.y +2 -12
  26. data/lib/rbs/prototype/rb.rb +3 -5
  27. data/lib/rbs/prototype/rbi.rb +1 -4
  28. data/lib/rbs/prototype/runtime.rb +0 -4
  29. data/lib/rbs/substitution.rb +4 -3
  30. data/lib/rbs/test/setup.rb +5 -1
  31. data/lib/rbs/test/setup_helper.rb +15 -0
  32. data/lib/rbs/test/tester.rb +7 -5
  33. data/lib/rbs/test/type_check.rb +14 -2
  34. data/lib/rbs/type_name.rb +18 -1
  35. data/lib/rbs/type_name_resolver.rb +10 -3
  36. data/lib/rbs/types.rb +27 -21
  37. data/lib/rbs/variance_calculator.rb +9 -6
  38. data/lib/rbs/version.rb +1 -1
  39. data/lib/rbs/writer.rb +26 -17
  40. data/sig/annotation.rbs +26 -0
  41. data/sig/buffer.rbs +28 -0
  42. data/sig/builtin_names.rbs +41 -0
  43. data/sig/comment.rbs +26 -0
  44. data/sig/constant.rbs +21 -0
  45. data/sig/constant_table.rbs +30 -0
  46. data/sig/declarations.rbs +202 -0
  47. data/sig/definition.rbs +129 -0
  48. data/sig/definition_builder.rbs +94 -0
  49. data/sig/environment.rbs +94 -0
  50. data/sig/environment_loader.rbs +58 -0
  51. data/sig/location.rbs +52 -0
  52. data/sig/members.rbs +160 -0
  53. data/sig/method_types.rbs +40 -0
  54. data/sig/namespace.rbs +124 -0
  55. data/sig/polyfill.rbs +3 -0
  56. data/sig/rbs.rbs +3 -0
  57. data/sig/substitution.rbs +39 -0
  58. data/sig/type_name_resolver.rbs +24 -0
  59. data/sig/typename.rbs +70 -0
  60. data/sig/types.rbs +361 -0
  61. data/sig/util.rbs +13 -0
  62. data/sig/variance_calculator.rbs +35 -0
  63. data/sig/version.rbs +3 -0
  64. data/sig/writer.rbs +40 -0
  65. data/stdlib/bigdecimal/big_decimal.rbs +887 -0
  66. data/stdlib/bigdecimal/math/big_math.rbs +142 -0
  67. data/stdlib/builtin/array.rbs +2 -1
  68. data/stdlib/builtin/builtin.rbs +0 -3
  69. data/stdlib/builtin/hash.rbs +1 -1
  70. data/stdlib/builtin/kernel.rbs +2 -0
  71. data/stdlib/builtin/math.rbs +26 -26
  72. data/stdlib/builtin/struct.rbs +9 -10
  73. data/stdlib/date/date.rbs +1056 -0
  74. data/stdlib/date/date_time.rbs +582 -0
  75. data/stdlib/forwardable/forwardable.rbs +204 -0
  76. data/stdlib/pathname/pathname.rbs +2 -0
  77. data/stdlib/pty/pty.rbs +5 -29
  78. data/stdlib/set/set.rbs +1 -1
  79. data/stdlib/uri/file.rbs +167 -0
  80. data/stdlib/uri/generic.rbs +875 -0
  81. data/stdlib/uri/http.rbs +158 -0
  82. data/stdlib/uri/https.rbs +108 -0
  83. data/stdlib/uri/ldap.rbs +224 -0
  84. data/stdlib/uri/ldaps.rbs +108 -0
  85. data/stdlib/zlib/zlib.rbs +1 -1
  86. data/steep/Gemfile +3 -0
  87. data/steep/Gemfile.lock +51 -0
  88. metadata +45 -5
@@ -0,0 +1,142 @@
1
+ # Provides mathematical functions.
2
+ #
3
+ # Example:
4
+ #
5
+ # require "bigdecimal/math"
6
+ #
7
+ # include BigMath
8
+ #
9
+ # a = BigDecimal((PI(100)/2).to_s)
10
+ # puts sin(a,100) # => 0.99999999999999999999......e0
11
+ #
12
+ module BigMath
13
+ # Computes e (the base of natural logarithms) to the specified number of digits
14
+ # of precision, `numeric`.
15
+ #
16
+ # BigMath.E(10).to_s
17
+ # #=> "0.271828182845904523536028752390026306410273e1"
18
+ #
19
+ def self.E: (Numeric prec) -> BigDecimal
20
+
21
+ # Computes the value of pi to the specified number of digits of precision,
22
+ # `numeric`.
23
+ #
24
+ # BigMath.PI(10).to_s
25
+ # #=> "0.3141592653589793238462643388813853786957412e1"
26
+ #
27
+ def self.PI: (Numeric prec) -> BigDecimal
28
+
29
+ # Computes the arctangent of `decimal` to the specified number of digits of
30
+ # precision, `numeric`.
31
+ #
32
+ # If `decimal` is NaN, returns NaN.
33
+ #
34
+ # BigMath.atan(BigDecimal('-1'), 16).to_s
35
+ # #=> "-0.785398163397448309615660845819878471907514682065e0"
36
+ #
37
+ def self.atan: (BigDecimal x, Numeric prec) -> BigDecimal
38
+
39
+ # Computes the cosine of `decimal` to the specified number of digits of
40
+ # precision, `numeric`.
41
+ #
42
+ # If `decimal` is Infinity or NaN, returns NaN.
43
+ #
44
+ # BigMath.cos(BigMath.PI(4), 16).to_s
45
+ # #=> "-0.999999999999999999999999999999856613163740061349e0"
46
+ #
47
+ def self.cos: (BigDecimal x, Numeric prec) -> BigDecimal
48
+
49
+ # Computes the value of e (the base of natural logarithms) raised to the power
50
+ # of `decimal`, to the specified number of digits of precision.
51
+ #
52
+ # If `decimal` is infinity, returns Infinity.
53
+ #
54
+ # If `decimal` is NaN, returns NaN.
55
+ #
56
+ def self.exp: (BigDecimal, Numeric prec) -> BigDecimal
57
+
58
+ # Computes the natural logarithm of `decimal` to the specified number of digits
59
+ # of precision, `numeric`.
60
+ #
61
+ # If `decimal` is zero or negative, raises Math::DomainError.
62
+ #
63
+ # If `decimal` is positive infinity, returns Infinity.
64
+ #
65
+ # If `decimal` is NaN, returns NaN.
66
+ #
67
+ def self.log: (BigDecimal, Numeric prec) -> BigDecimal
68
+
69
+ # Computes the sine of `decimal` to the specified number of digits of precision,
70
+ # `numeric`.
71
+ #
72
+ # If `decimal` is Infinity or NaN, returns NaN.
73
+ #
74
+ # BigMath.sin(BigMath.PI(5)/4, 5).to_s
75
+ # #=> "0.70710678118654752440082036563292800375e0"
76
+ #
77
+ def self.sin: (BigDecimal x, Numeric prec) -> BigDecimal
78
+
79
+ # Computes the square root of `decimal` to the specified number of digits of
80
+ # precision, `numeric`.
81
+ #
82
+ # BigMath.sqrt(BigDecimal('2'), 16).to_s
83
+ # #=> "0.1414213562373095048801688724e1"
84
+ #
85
+ def self.sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
86
+
87
+ private
88
+
89
+ # Computes e (the base of natural logarithms) to the specified number of digits
90
+ # of precision, `numeric`.
91
+ #
92
+ # BigMath.E(10).to_s
93
+ # #=> "0.271828182845904523536028752390026306410273e1"
94
+ #
95
+ def E: (Numeric prec) -> BigDecimal
96
+
97
+ # Computes the value of pi to the specified number of digits of precision,
98
+ # `numeric`.
99
+ #
100
+ # BigMath.PI(10).to_s
101
+ # #=> "0.3141592653589793238462643388813853786957412e1"
102
+ #
103
+ def PI: (Numeric prec) -> BigDecimal
104
+
105
+ # Computes the arctangent of `decimal` to the specified number of digits of
106
+ # precision, `numeric`.
107
+ #
108
+ # If `decimal` is NaN, returns NaN.
109
+ #
110
+ # BigMath.atan(BigDecimal('-1'), 16).to_s
111
+ # #=> "-0.785398163397448309615660845819878471907514682065e0"
112
+ #
113
+ def atan: (BigDecimal x, Numeric prec) -> BigDecimal
114
+
115
+ # Computes the cosine of `decimal` to the specified number of digits of
116
+ # precision, `numeric`.
117
+ #
118
+ # If `decimal` is Infinity or NaN, returns NaN.
119
+ #
120
+ # BigMath.cos(BigMath.PI(4), 16).to_s
121
+ # #=> "-0.999999999999999999999999999999856613163740061349e0"
122
+ #
123
+ def cos: (BigDecimal x, Numeric prec) -> BigDecimal
124
+
125
+ # Computes the sine of `decimal` to the specified number of digits of precision,
126
+ # `numeric`.
127
+ #
128
+ # If `decimal` is Infinity or NaN, returns NaN.
129
+ #
130
+ # BigMath.sin(BigMath.PI(5)/4, 5).to_s
131
+ # #=> "0.70710678118654752440082036563292800375e0"
132
+ #
133
+ def sin: (BigDecimal x, Numeric prec) -> BigDecimal
134
+
135
+ # Computes the square root of `decimal` to the specified number of digits of
136
+ # precision, `numeric`.
137
+ #
138
+ # BigMath.sqrt(BigDecimal('2'), 16).to_s
139
+ # #=> "0.1414213562373095048801688724e1"
140
+ #
141
+ def sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
142
+ end
@@ -626,7 +626,8 @@ class Array[unchecked out Elem] < Object
626
626
  # a.collect!.with_index {|x, i| x[0...i] }
627
627
  # a #=> ["", "b", "c!", "d!"]
628
628
  #
629
- def collect!: () { (Elem item) -> Elem } -> self # collect! is monomorphic because of RBS limitation.
629
+ # collect! is monomorphic because of RBS limitation.
630
+ def collect!: () { (Elem item) -> Elem } -> self
630
631
  | () -> ::Enumerator[Elem, self]
631
632
 
632
633
  # When invoked with a block, yields all combinations of length `n` of elements
@@ -35,9 +35,6 @@ interface _Exception
35
35
  | (String arg0) -> Exception
36
36
  end
37
37
 
38
- class BigDecimal
39
- end
40
-
41
38
  type int = Integer | _ToInt
42
39
  type real = Integer | Float | Rational
43
40
 
@@ -1016,7 +1016,7 @@ class Hash[unchecked out K, unchecked out V] < Object
1016
1016
  # h["d"] #=> "Go Fish: d"
1017
1017
  # h.keys #=> ["c", "d"]
1018
1018
  #
1019
- incompatible def initialize: () -> void
1019
+ def initialize: () -> void
1020
1020
  | (untyped default) -> void
1021
1021
  | [A, B] () { (Hash[A, B] hash, A key) -> B } -> void
1022
1022
 
@@ -11,6 +11,8 @@
11
11
  # sprintf "%.1f", 1.234 #=> "1.2"
12
12
  # ```
13
13
  module Kernel
14
+ private
15
+
14
16
  def caller: (?Integer start_or_range, ?Integer length) -> ::Array[String]?
15
17
  | (?::Range[Integer] start_or_range) -> ::Array[String]?
16
18
  | () -> ::Array[String]
@@ -13,7 +13,7 @@ module Math
13
13
  #
14
14
  # Math.acos(0) == Math::PI/2 #=> true
15
15
  #
16
- def self.acos: (Integer | Float | Rational | BigDecimal x) -> Float
16
+ def self.acos: (Numeric x) -> Float
17
17
 
18
18
  # Computes the inverse hyperbolic cosine of `x`.
19
19
  #
@@ -23,7 +23,7 @@ module Math
23
23
  #
24
24
  # Math.acosh(1) #=> 0.0
25
25
  #
26
- def self.acosh: (Integer | Float | Rational | BigDecimal x) -> Float
26
+ def self.acosh: (Numeric x) -> Float
27
27
 
28
28
  # Computes the arc sine of `x`. Returns -PI/2..PI/2.
29
29
  #
@@ -33,7 +33,7 @@ module Math
33
33
  #
34
34
  # Math.asin(1) == Math::PI/2 #=> true
35
35
  #
36
- def self.asin: (Integer | Float | Rational | BigDecimal x) -> Float
36
+ def self.asin: (Numeric x) -> Float
37
37
 
38
38
  # Computes the inverse hyperbolic sine of `x`.
39
39
  #
@@ -43,7 +43,7 @@ module Math
43
43
  #
44
44
  # Math.asinh(1) #=> 0.881373587019543
45
45
  #
46
- def self.asinh: (Integer | Float | Rational | BigDecimal x) -> Float
46
+ def self.asinh: (Numeric x) -> Float
47
47
 
48
48
  # Computes the arc tangent of `x`. Returns -PI/2..PI/2.
49
49
  #
@@ -53,7 +53,7 @@ module Math
53
53
  #
54
54
  # Math.atan(0) #=> 0.0
55
55
  #
56
- def self.atan: (Integer | Float | Rational | BigDecimal x) -> Float
56
+ def self.atan: (Numeric x) -> Float
57
57
 
58
58
  # Computes the arc tangent given `y` and `x`. Returns a Float in the range
59
59
  # -PI..PI. Return value is a angle in radians between the positive x-axis of
@@ -78,7 +78,7 @@ module Math
78
78
  # Math.atan2(-INFINITY, INFINITY) #=> -0.7853981633974483
79
79
  # Math.atan2(-INFINITY, -INFINITY) #=> -2.356194490192345
80
80
  #
81
- def self.atan2: (Integer | Float | Rational | BigDecimal y, Integer | Float | Rational | BigDecimal x) -> Float
81
+ def self.atan2: (Numeric y, Numeric x) -> Float
82
82
 
83
83
  # Computes the inverse hyperbolic tangent of `x`.
84
84
  #
@@ -88,7 +88,7 @@ module Math
88
88
  #
89
89
  # Math.atanh(1) #=> Infinity
90
90
  #
91
- def self.atanh: (Integer | Float | Rational | BigDecimal x) -> Float
91
+ def self.atanh: (Numeric x) -> Float
92
92
 
93
93
  # Returns the cube root of `x`.
94
94
  #
@@ -119,7 +119,7 @@ module Math
119
119
  # # [8, 2.0, 8.0]
120
120
  # # [9, 2.0800838230519, 9.0]
121
121
  #
122
- def self.cbrt: (Integer | Float | Rational | BigDecimal x) -> Float
122
+ def self.cbrt: (Numeric x) -> Float
123
123
 
124
124
  # Computes the cosine of `x` (expressed in radians). Returns a Float in the
125
125
  # range -1.0..1.0.
@@ -130,7 +130,7 @@ module Math
130
130
  #
131
131
  # Math.cos(Math::PI) #=> -1.0
132
132
  #
133
- def self.cos: (Integer | Float | Rational | BigDecimal x) -> Float
133
+ def self.cos: (Numeric x) -> Float
134
134
 
135
135
  # Computes the hyperbolic cosine of `x` (expressed in radians).
136
136
  #
@@ -140,7 +140,7 @@ module Math
140
140
  #
141
141
  # Math.cosh(0) #=> 1.0
142
142
  #
143
- def self.cosh: (Integer | Float | Rational | BigDecimal x) -> Float
143
+ def self.cosh: (Numeric x) -> Float
144
144
 
145
145
  # Calculates the error function of `x`.
146
146
  #
@@ -150,7 +150,7 @@ module Math
150
150
  #
151
151
  # Math.erf(0) #=> 0.0
152
152
  #
153
- def self.erf: (Integer | Float | Rational | BigDecimal x) -> Float
153
+ def self.erf: (Numeric x) -> Float
154
154
 
155
155
  # Calculates the complementary error function of x.
156
156
  #
@@ -160,7 +160,7 @@ module Math
160
160
  #
161
161
  # Math.erfc(0) #=> 1.0
162
162
  #
163
- def self.erfc: (Integer | Float | Rational | BigDecimal x) -> Float
163
+ def self.erfc: (Numeric x) -> Float
164
164
 
165
165
  # Returns e**x.
166
166
  #
@@ -172,7 +172,7 @@ module Math
172
172
  # Math.exp(1) #=> 2.718281828459045
173
173
  # Math.exp(1.5) #=> 4.4816890703380645
174
174
  #
175
- def self.exp: (Integer | Float | Rational | BigDecimal x) -> Float
175
+ def self.exp: (Numeric x) -> Float
176
176
 
177
177
  # Returns a two-element array containing the normalized fraction (a Float) and
178
178
  # exponent (an Integer) of `x`.
@@ -180,7 +180,7 @@ module Math
180
180
  # fraction, exponent = Math.frexp(1234) #=> [0.6025390625, 11]
181
181
  # fraction * 2**exponent #=> 1234.0
182
182
  #
183
- def self.frexp: (Integer | Float | Rational | BigDecimal x) -> [ Float, Integer ]
183
+ def self.frexp: (Numeric x) -> [ Float, Integer ]
184
184
 
185
185
  # Calculates the gamma function of x.
186
186
  #
@@ -216,21 +216,21 @@ module Math
216
216
  # # [25, 6.204484017332391e+23, 620448401733239439360000]
217
217
  # # [26, 1.5511210043330954e+25, 15511210043330985984000000]
218
218
  #
219
- def self.gamma: (Integer | Float | Rational | BigDecimal x) -> Float
219
+ def self.gamma: (Numeric x) -> Float
220
220
 
221
221
  # Returns sqrt(x**2 + y**2), the hypotenuse of a right-angled triangle with
222
222
  # sides `x` and `y`.
223
223
  #
224
224
  # Math.hypot(3, 4) #=> 5.0
225
225
  #
226
- def self.hypot: (Integer | Float | Rational | BigDecimal x, Integer | Float | Rational | BigDecimal y) -> Float
226
+ def self.hypot: (Numeric x, Numeric y) -> Float
227
227
 
228
228
  # Returns the value of `fraction`*(2**`exponent`).
229
229
  #
230
230
  # fraction, exponent = Math.frexp(1234)
231
231
  # Math.ldexp(fraction, exponent) #=> 1234.0
232
232
  #
233
- def self.ldexp: (Integer | Float | Rational | BigDecimal fraction, Integer | Float | Rational | BigDecimal exponent) -> Float
233
+ def self.ldexp: (Numeric fraction, Numeric exponent) -> Float
234
234
 
235
235
  # Calculates the logarithmic gamma of `x` and the sign of gamma of `x`.
236
236
  #
@@ -241,9 +241,9 @@ module Math
241
241
  #
242
242
  # Math.lgamma(0) #=> [Infinity, 1]
243
243
  #
244
- def self.lgamma: (Integer | Float | Rational | BigDecimal x) -> [ Float, Integer ]
244
+ def self.lgamma: (Numeric x) -> [ Float, Integer ]
245
245
 
246
- def self.log: (Integer | Float | Rational | BigDecimal x, ?Integer | Float | Rational | BigDecimal base) -> Float
246
+ def self.log: (Numeric x, ?Numeric base) -> Float
247
247
 
248
248
  # Returns the base 10 logarithm of `x`.
249
249
  #
@@ -255,7 +255,7 @@ module Math
255
255
  # Math.log10(10) #=> 1.0
256
256
  # Math.log10(10**100) #=> 100.0
257
257
  #
258
- def self.log10: (Integer | Float | Rational | BigDecimal x) -> Float
258
+ def self.log10: (Numeric x) -> Float
259
259
 
260
260
  # Returns the base 2 logarithm of `x`.
261
261
  #
@@ -268,7 +268,7 @@ module Math
268
268
  # Math.log2(32768) #=> 15.0
269
269
  # Math.log2(65536) #=> 16.0
270
270
  #
271
- def self.log2: (Integer | Float | Rational | BigDecimal x) -> Float
271
+ def self.log2: (Numeric x) -> Float
272
272
 
273
273
  # Computes the sine of `x` (expressed in radians). Returns a Float in the range
274
274
  # -1.0..1.0.
@@ -279,7 +279,7 @@ module Math
279
279
  #
280
280
  # Math.sin(Math::PI/2) #=> 1.0
281
281
  #
282
- def self.sin: (Integer | Float | Rational | BigDecimal x) -> Float
282
+ def self.sin: (Numeric x) -> Float
283
283
 
284
284
  # Computes the hyperbolic sine of `x` (expressed in radians).
285
285
  #
@@ -289,7 +289,7 @@ module Math
289
289
  #
290
290
  # Math.sinh(0) #=> 0.0
291
291
  #
292
- def self.sinh: (Integer | Float | Rational | BigDecimal x) -> Float
292
+ def self.sinh: (Numeric x) -> Float
293
293
 
294
294
  # Returns the non-negative square root of `x`.
295
295
  #
@@ -319,7 +319,7 @@ module Math
319
319
  #
320
320
  # See also BigDecimal#sqrt and Integer.sqrt.
321
321
  #
322
- def self.sqrt: (Integer | Float | Rational | BigDecimal x) -> Float
322
+ def self.sqrt: (Numeric x) -> Float
323
323
 
324
324
  # Computes the tangent of `x` (expressed in radians).
325
325
  #
@@ -329,7 +329,7 @@ module Math
329
329
  #
330
330
  # Math.tan(0) #=> 0.0
331
331
  #
332
- def self.tan: (Integer | Float | Rational | BigDecimal x) -> Float
332
+ def self.tan: (Numeric x) -> Float
333
333
 
334
334
  # Computes the hyperbolic tangent of `x` (expressed in radians).
335
335
  #
@@ -339,7 +339,7 @@ module Math
339
339
  #
340
340
  # Math.tanh(0) #=> 0.0
341
341
  #
342
- def self.tanh: (Integer | Float | Rational | BigDecimal x) -> Float
342
+ def self.tanh: (Numeric x) -> Float
343
343
  end
344
344
 
345
345
  # Definition of the mathematical constant E for Euler's number (e) as a Float
@@ -1,40 +1,39 @@
1
1
  # A [Struct](Struct) is a convenient way to bundle a
2
2
  # number of attributes together, using accessor methods, without having to
3
3
  # write an explicit class.
4
- #
4
+ #
5
5
  # The [Struct](Struct) class generates new subclasses
6
6
  # that hold a set of members and their values. For each member a reader
7
7
  # and writer method is created similar to
8
8
  # [Module\#attr\_accessor](https://ruby-doc.org/core-2.6.3/Module.html#method-i-attr_accessor)
9
9
  # .
10
- #
10
+ #
11
11
  # ```ruby
12
12
  # Customer = Struct.new(:name, :address) do
13
13
  # def greeting
14
14
  # "Hello #{name}!"
15
15
  # end
16
16
  # end
17
- #
17
+ #
18
18
  # dave = Customer.new("Dave", "123 Main")
19
19
  # dave.name #=> "Dave"
20
20
  # dave.greeting #=> "Hello Dave!"
21
21
  # ```
22
- #
22
+ #
23
23
  # See [::new](Struct#method-c-new) for further
24
24
  # examples of creating struct subclasses and instances.
25
- #
25
+ #
26
26
  # In the method descriptions that follow, a "member" parameter refers to a
27
27
  # struct member which is either a quoted string ( `"name"` ) or a
28
28
  # [Symbol](https://ruby-doc.org/core-2.6.3/Symbol.html) ( `:name` ).
29
29
  class Struct[Elem] < Object
30
30
  include Enumerable[Elem, Struct[Elem]]
31
31
 
32
- def initialize: (Symbol | String arg0, *Symbol | String arg1, ?keyword_init: bool keyword_init) -> void
32
+ type attribute_name = Symbol | String
33
33
 
34
- def each: () { (Elem arg0) -> untyped } -> untyped
35
- | () -> self
34
+ def initialize: (attribute_name, *attribute_name, ?keyword_init: bool) ?{ () -> void } -> void
36
35
 
37
- def self.members: () -> ::Array[Symbol]
36
+ def each: () { (Elem) -> untyped } -> untyped
38
37
 
39
- def new: (*untyped args) -> Struct[untyped]
38
+ def self.members: () -> ::Array[Symbol]
40
39
  end