rbs 3.0.0.dev.2 → 3.0.0.dev.3

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -1
  3. data/.github/workflows/ruby.yml +4 -0
  4. data/Gemfile.lock +11 -11
  5. data/Rakefile +2 -2
  6. data/Steepfile +1 -1
  7. data/core/array.rbs +573 -423
  8. data/core/basic_object.rbs +11 -39
  9. data/core/binding.rbs +1 -1
  10. data/core/builtin.rbs +8 -0
  11. data/core/class.rbs +37 -0
  12. data/core/comparable.rbs +7 -18
  13. data/core/complex.rbs +2 -2
  14. data/core/data.rbs +419 -0
  15. data/core/dir.rbs +52 -104
  16. data/core/encoding.rbs +22 -181
  17. data/core/enumerable.rbs +212 -175
  18. data/core/enumerator/product.rbs +96 -0
  19. data/core/enumerator.rbs +57 -8
  20. data/core/errors.rbs +8 -2
  21. data/core/exception.rbs +41 -0
  22. data/core/fiber.rbs +95 -12
  23. data/core/file.rbs +840 -275
  24. data/core/file_test.rbs +34 -19
  25. data/core/float.rbs +40 -96
  26. data/core/gc.rbs +15 -3
  27. data/core/hash.rbs +113 -175
  28. data/core/integer.rbs +85 -145
  29. data/core/io/buffer.rbs +187 -60
  30. data/core/io/wait.rbs +28 -16
  31. data/core/io.rbs +1859 -1389
  32. data/core/kernel.rbs +525 -961
  33. data/core/match_data.rbs +306 -142
  34. data/core/math.rbs +506 -234
  35. data/core/method.rbs +0 -24
  36. data/core/module.rbs +110 -17
  37. data/core/nil_class.rbs +2 -0
  38. data/core/numeric.rbs +76 -144
  39. data/core/object.rbs +88 -212
  40. data/core/proc.rbs +17 -5
  41. data/core/process.rbs +22 -5
  42. data/core/ractor.rbs +1 -1
  43. data/core/random.rbs +20 -3
  44. data/core/range.rbs +91 -89
  45. data/core/rational.rbs +2 -3
  46. data/core/rbs/unnamed/argf.rbs +177 -120
  47. data/core/rbs/unnamed/env_class.rbs +89 -163
  48. data/core/rbs/unnamed/random.rbs +36 -12
  49. data/core/refinement.rbs +8 -0
  50. data/core/regexp.rbs +462 -272
  51. data/core/ruby_vm.rbs +210 -0
  52. data/{stdlib/set/0 → core}/set.rbs +43 -47
  53. data/core/string.rbs +1403 -1332
  54. data/core/string_io.rbs +191 -107
  55. data/core/struct.rbs +67 -63
  56. data/core/symbol.rbs +187 -201
  57. data/core/thread.rbs +40 -35
  58. data/core/time.rbs +902 -826
  59. data/core/trace_point.rbs +55 -6
  60. data/core/unbound_method.rbs +48 -24
  61. data/docs/collection.md +4 -0
  62. data/docs/syntax.md +55 -0
  63. data/ext/rbs_extension/parser.c +5 -6
  64. data/lib/rbs/cli.rb +6 -1
  65. data/lib/rbs/collection/cleaner.rb +8 -1
  66. data/lib/rbs/collection/config/lockfile.rb +3 -1
  67. data/lib/rbs/collection/config/lockfile_generator.rb +16 -14
  68. data/lib/rbs/collection/config.rb +1 -1
  69. data/lib/rbs/collection/sources/git.rb +9 -2
  70. data/lib/rbs/collection/sources/local.rb +79 -0
  71. data/lib/rbs/collection/sources.rb +8 -1
  72. data/lib/rbs/environment.rb +6 -5
  73. data/lib/rbs/environment_loader.rb +3 -2
  74. data/lib/rbs/errors.rb +18 -0
  75. data/lib/rbs/locator.rb +26 -7
  76. data/lib/rbs/sorter.rb +2 -2
  77. data/lib/rbs/version.rb +1 -1
  78. data/sig/collection/sources.rbs +32 -3
  79. data/sig/environment.rbs +2 -3
  80. data/sig/locator.rbs +14 -2
  81. data/sig/shims/{abstract_syntax_tree.rbs → _abstract_syntax_tree.rbs} +0 -0
  82. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -13
  83. data/stdlib/cgi/0/core.rbs +16 -0
  84. data/stdlib/coverage/0/coverage.rbs +50 -8
  85. data/stdlib/csv/0/csv.rbs +1 -1
  86. data/stdlib/date/0/date.rbs +856 -726
  87. data/stdlib/date/0/date_time.rbs +83 -210
  88. data/stdlib/erb/0/erb.rbs +13 -36
  89. data/stdlib/etc/0/etc.rbs +127 -20
  90. data/stdlib/fileutils/0/fileutils.rbs +1290 -381
  91. data/stdlib/logger/0/logger.rbs +466 -316
  92. data/stdlib/net-http/0/net-http.rbs +2211 -534
  93. data/stdlib/nkf/0/nkf.rbs +5 -5
  94. data/stdlib/objspace/0/objspace.rbs +31 -14
  95. data/stdlib/openssl/0/openssl.rbs +11 -7
  96. data/stdlib/optparse/0/optparse.rbs +20 -17
  97. data/stdlib/pathname/0/pathname.rbs +21 -4
  98. data/stdlib/pstore/0/pstore.rbs +378 -154
  99. data/stdlib/pty/0/pty.rbs +24 -8
  100. data/stdlib/ripper/0/ripper.rbs +1650 -0
  101. data/stdlib/socket/0/addrinfo.rbs +9 -15
  102. data/stdlib/socket/0/socket.rbs +36 -3
  103. data/stdlib/strscan/0/string_scanner.rbs +7 -5
  104. data/stdlib/tempfile/0/tempfile.rbs +104 -44
  105. data/stdlib/time/0/time.rbs +2 -2
  106. data/stdlib/uri/0/file.rbs +5 -0
  107. data/stdlib/uri/0/generic.rbs +2 -2
  108. data/stdlib/yaml/0/yaml.rbs +2 -2
  109. data/stdlib/zlib/0/zlib.rbs +1 -1
  110. metadata +8 -6
  111. data/core/deprecated.rbs +0 -9
  112. data/sig/shims/ripper.rbs +0 -8
data/core/struct.rbs CHANGED
@@ -42,89 +42,75 @@
42
42
  #
43
43
  # First, what's elsewhere. Class Struct:
44
44
  #
45
- # * Inherits from [class
46
- # Object](Object.html#class-Object-label-What-27s+Here).
47
- # * Includes [module
48
- # Enumerable](Enumerable.html#module-Enumerable-label-What-27s+Here), which
45
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
46
+ # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
49
47
  # provides dozens of additional methods.
50
48
  #
51
49
  #
50
+ # See also Data, which is a somewhat similar, but stricter concept for defining
51
+ # immutable value objects.
52
+ #
52
53
  # Here, class Struct provides methods that are useful for:
53
54
  #
54
55
  # * [Creating a Struct
55
- # Subclass](#class-Struct-label-Methods+for+Creating+a+Struct+Subclass)
56
- # * [Querying](#class-Struct-label-Methods+for+Querying)
57
- # * [Comparing](#class-Struct-label-Methods+for+Comparing)
58
- # * [Fetching](#class-Struct-label-Methods+for+Fetching)
59
- # * [Assigning](#class-Struct-label-Methods+for+Assigning)
60
- # * [Iterating](#class-Struct-label-Methods+for+Iterating)
61
- # * [Converting](#class-Struct-label-Methods+for+Converting)
56
+ # Subclass](rdoc-ref:Struct@Methods+for+Creating+a+Struct+Subclass)
57
+ # * [Querying](rdoc-ref:Struct@Methods+for+Querying)
58
+ # * [Comparing](rdoc-ref:Struct@Methods+for+Comparing)
59
+ # * [Fetching](rdoc-ref:Struct@Methods+for+Fetching)
60
+ # * [Assigning](rdoc-ref:Struct@Methods+for+Assigning)
61
+ # * [Iterating](rdoc-ref:Struct@Methods+for+Iterating)
62
+ # * [Converting](rdoc-ref:Struct@Methods+for+Converting)
62
63
  #
63
64
  #
64
65
  # ### Methods for Creating a Struct Subclass
65
66
  #
66
- # ::new
67
- # : Returns a new subclass of Struct.
67
+ # * ::new: Returns a new subclass of Struct.
68
68
  #
69
69
  #
70
70
  # ### Methods for Querying
71
71
  #
72
- # #hash
73
- # : Returns the integer hash code.
74
- # #length, #size
75
- # : Returns the number of members.
72
+ # * #hash: Returns the integer hash code.
73
+ # * #length, #size: Returns the number of members.
76
74
  #
77
75
  #
78
76
  # ### Methods for Comparing
79
77
  #
80
- # [#==](#method-i-3D-3D)
81
- # : Returns whether a given object is equal to `self`, using `==` to compare
82
- # member values.
83
- # #eql?
84
- # : Returns whether a given object is equal to `self`, using `eql?` to compare
85
- # member values.
78
+ # * #==: Returns whether a given object is equal to `self`, using `==` to
79
+ # compare member values.
80
+ # * #eql?: Returns whether a given object is equal to `self`, using `eql?` to
81
+ # compare member values.
86
82
  #
87
83
  #
88
84
  # ### Methods for Fetching
89
85
  #
90
- # #[]
91
- # : Returns the value associated with a given member name.
92
- # #to_a, #values, #deconstruct
93
- # : Returns the member values in `self` as an array.
94
- # #deconstruct_keys
95
- # : Returns a hash of the name/value pairs for given member names.
96
- # #dig
97
- # : Returns the object in nested objects that is specified by a given member
98
- # name and additional arguments.
99
- # #members
100
- # : Returns an array of the member names.
101
- # #select, #filter
102
- # : Returns an array of member values from `self`, as selected by the given
103
- # block.
104
- # #values_at
105
- # : Returns an array containing values for given member names.
86
+ # * #[]: Returns the value associated with a given member name.
87
+ # * #to_a, #values, #deconstruct: Returns the member values in `self` as an
88
+ # array.
89
+ # * #deconstruct_keys: Returns a hash of the name/value pairs for given member
90
+ # names.
91
+ # * #dig: Returns the object in nested objects that is specified by a given
92
+ # member name and additional arguments.
93
+ # * #members: Returns an array of the member names.
94
+ # * #select, #filter: Returns an array of member values from `self`, as
95
+ # selected by the given block.
96
+ # * #values_at: Returns an array containing values for given member names.
106
97
  #
107
98
  #
108
99
  # ### Methods for Assigning
109
100
  #
110
- # #[]=
111
- # : Assigns a given value to a given member name.
101
+ # * #[]=: Assigns a given value to a given member name.
112
102
  #
113
103
  #
114
104
  # ### Methods for Iterating
115
105
  #
116
- # #each
117
- # : Calls a given block with each member name.
118
- # #each_pair
119
- # : Calls a given block with each member name/value pair.
106
+ # * #each: Calls a given block with each member name.
107
+ # * #each_pair: Calls a given block with each member name/value pair.
120
108
  #
121
109
  #
122
110
  # ### Methods for Converting
123
111
  #
124
- # #inspect, #to_s
125
- # : Returns a string representation of `self`.
126
- # #to_h
127
- # : Returns a hash of the member name/value pairs in `self`.
112
+ # * #inspect, #to_s: Returns a string representation of `self`.
113
+ # * #to_h: Returns a hash of the member name/value pairs in `self`.
128
114
  #
129
115
  class Struct[Elem] < Object
130
116
  include Enumerable[Elem?]
@@ -142,8 +128,7 @@ class Struct[Elem] < Object
142
128
  #
143
129
  # * May be anonymous, or may have the name given by `class_name`.
144
130
  # * May have members as given by `member_names`.
145
- # * May have initialization via ordinary arguments (the default) or via
146
- # keyword arguments (if `keyword_init: true` is given).
131
+ # * May have initialization via ordinary arguments, or via keyword arguments
147
132
  #
148
133
  #
149
134
  # The new subclass has its own method `::new`; thus:
@@ -212,6 +197,12 @@ class Struct[Elem] < Object
212
197
  # Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
213
198
  # Foo.new(0, 1, 2) # Raises ArgumentError: struct size differs
214
199
  #
200
+ # # Initialization with keyword arguments:
201
+ # Foo.new(foo: 0) # => #<struct Struct::Foo foo=0, bar=nil>
202
+ # Foo.new(foo: 0, bar: 1) # => #<struct Struct::Foo foo=0, bar=1>
203
+ # Foo.new(foo: 0, bar: 1, baz: 2)
204
+ # # Raises ArgumentError: unknown keywords: baz
205
+ #
215
206
  # Method `::[]` is an alias for method `::new`.
216
207
  #
217
208
  # * Method `:inspect` returns a string representation of the subclass:
@@ -226,18 +217,31 @@ class Struct[Elem] < Object
226
217
  #
227
218
  # **Keyword Argument**
228
219
  #
229
- # By default, the arguments for initializing an instance of the new subclass are
230
- # ordinary arguments (not keyword arguments). With optional keyword argument
231
- # `keyword_init: true`, the new subclass is initialized with keyword arguments:
232
- #
233
- # # Without keyword_init: true.
234
- # Foo = Struct.new('Foo', :foo, :bar)
235
- # Foo # => Struct::Foo
236
- # Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
237
- # # With keyword_init: true.
238
- # Bar = Struct.new(:foo, :bar, keyword_init: true)
239
- # Bar # => # => Bar(keyword_init: true)
240
- # Bar.new(bar: 1, foo: 0) # => #<struct Bar foo=0, bar=1>
220
+ # By default, the arguments for initializing an instance of the new subclass can
221
+ # be both positional and keyword arguments.
222
+ #
223
+ # Optional keyword argument `keyword_init:` allows to force only one type of
224
+ # arguments to be accepted:
225
+ #
226
+ # KeywordsOnly = Struct.new(:foo, :bar, keyword_init: true)
227
+ # KeywordsOnly.new(bar: 1, foo: 0)
228
+ # # => #<struct KeywordsOnly foo=0, bar=1>
229
+ # KeywordsOnly.new(0, 1)
230
+ # # Raises ArgumentError: wrong number of arguments
231
+ #
232
+ # PositionalOnly = Struct.new(:foo, :bar, keyword_init: false)
233
+ # PositionalOnly.new(0, 1)
234
+ # # => #<struct PositionalOnly foo=0, bar=1>
235
+ # PositionalOnly.new(bar: 1, foo: 0)
236
+ # # => #<struct PositionalOnly foo={:foo=>1, :bar=>2}, bar=nil>
237
+ # # Note that no error is raised, but arguments treated as one hash value
238
+ #
239
+ # # Same as not providing keyword_init:
240
+ # Any = Struct.new(:foo, :bar, keyword_init: nil)
241
+ # Any.new(foo: 1, bar: 2)
242
+ # # => #<struct Any foo=1, bar=2>
243
+ # Any.new(1, 2)
244
+ # # => #<struct Any foo=1, bar=2>
241
245
  #
242
246
  def initialize: (attribute_name, *attribute_name, ?keyword_init: boolish) ?{ () -> void } -> void
243
247