rbs 3.9.5 → 3.10.0.pre.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +74 -0
  3. data/.clangd +2 -0
  4. data/.github/workflows/c-check.yml +54 -0
  5. data/.github/workflows/comments.yml +3 -3
  6. data/.github/workflows/ruby.yml +34 -19
  7. data/.github/workflows/typecheck.yml +1 -1
  8. data/.github/workflows/windows.yml +1 -1
  9. data/.gitignore +4 -0
  10. data/README.md +38 -1
  11. data/Rakefile +152 -23
  12. data/config.yml +190 -62
  13. data/core/array.rbs +44 -43
  14. data/core/dir.rbs +2 -2
  15. data/core/encoding.rbs +3 -2
  16. data/core/enumerable.rbs +89 -2
  17. data/core/errno.rbs +8 -0
  18. data/core/errors.rbs +28 -1
  19. data/core/exception.rbs +2 -2
  20. data/core/fiber.rbs +3 -3
  21. data/core/file.rbs +26 -11
  22. data/core/float.rbs +1 -1
  23. data/core/gc.rbs +422 -281
  24. data/core/hash.rbs +1024 -727
  25. data/core/io/wait.rbs +11 -33
  26. data/core/io.rbs +6 -4
  27. data/core/kernel.rbs +49 -43
  28. data/core/marshal.rbs +1 -1
  29. data/core/match_data.rbs +1 -1
  30. data/core/math.rbs +42 -3
  31. data/core/method.rbs +14 -6
  32. data/core/module.rbs +71 -11
  33. data/core/nil_class.rbs +3 -3
  34. data/core/numeric.rbs +8 -8
  35. data/core/object.rbs +3 -3
  36. data/core/object_space.rbs +13 -0
  37. data/{stdlib/pathname/0 → core}/pathname.rbs +253 -352
  38. data/core/proc.rbs +15 -8
  39. data/core/process.rbs +2 -2
  40. data/core/ractor.rbs +278 -437
  41. data/core/range.rbs +6 -7
  42. data/core/rbs/unnamed/argf.rbs +1 -1
  43. data/core/rbs/unnamed/env_class.rbs +1 -1
  44. data/core/rbs/unnamed/random.rbs +4 -2
  45. data/core/regexp.rbs +22 -17
  46. data/core/ruby_vm.rbs +6 -4
  47. data/core/rubygems/errors.rbs +3 -70
  48. data/core/rubygems/rubygems.rbs +11 -79
  49. data/core/set.rbs +439 -332
  50. data/core/string.rbs +2897 -1117
  51. data/core/struct.rbs +1 -1
  52. data/core/symbol.rbs +4 -4
  53. data/core/thread.rbs +83 -20
  54. data/core/time.rbs +35 -9
  55. data/core/unbound_method.rbs +14 -6
  56. data/docs/aliases.md +79 -0
  57. data/docs/collection.md +2 -2
  58. data/docs/gem.md +0 -1
  59. data/docs/sigs.md +3 -3
  60. data/ext/rbs_extension/ast_translation.c +1016 -0
  61. data/ext/rbs_extension/ast_translation.h +37 -0
  62. data/ext/rbs_extension/class_constants.c +157 -0
  63. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +7 -1
  64. data/ext/rbs_extension/compat.h +10 -0
  65. data/ext/rbs_extension/extconf.rb +25 -1
  66. data/ext/rbs_extension/legacy_location.c +317 -0
  67. data/ext/rbs_extension/legacy_location.h +45 -0
  68. data/ext/rbs_extension/main.c +365 -14
  69. data/ext/rbs_extension/rbs_extension.h +6 -21
  70. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  71. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  72. data/include/rbs/ast.h +687 -0
  73. data/include/rbs/defines.h +86 -0
  74. data/include/rbs/lexer.h +199 -0
  75. data/include/rbs/location.h +59 -0
  76. data/include/rbs/parser.h +135 -0
  77. data/include/rbs/string.h +49 -0
  78. data/include/rbs/util/rbs_allocator.h +59 -0
  79. data/include/rbs/util/rbs_assert.h +20 -0
  80. data/include/rbs/util/rbs_buffer.h +83 -0
  81. data/include/rbs/util/rbs_constant_pool.h +6 -67
  82. data/include/rbs/util/rbs_encoding.h +282 -0
  83. data/include/rbs/util/rbs_unescape.h +23 -0
  84. data/include/rbs.h +1 -2
  85. data/lib/rbs/annotate/formatter.rb +3 -13
  86. data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
  87. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  88. data/lib/rbs/cli/validate.rb +2 -2
  89. data/lib/rbs/cli.rb +1 -1
  90. data/lib/rbs/collection/config/lockfile_generator.rb +1 -0
  91. data/lib/rbs/definition_builder/ancestor_builder.rb +5 -5
  92. data/lib/rbs/environment.rb +64 -59
  93. data/lib/rbs/environment_loader.rb +1 -1
  94. data/lib/rbs/errors.rb +1 -1
  95. data/lib/rbs/parser_aux.rb +5 -0
  96. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  97. data/lib/rbs/resolver/type_name_resolver.rb +124 -38
  98. data/lib/rbs/test/type_check.rb +13 -0
  99. data/lib/rbs/types.rb +3 -1
  100. data/lib/rbs/version.rb +1 -1
  101. data/lib/rbs.rb +1 -1
  102. data/lib/rdoc/discover.rb +1 -1
  103. data/lib/rdoc_plugin/parser.rb +3 -3
  104. data/sig/annotate/formatter.rbs +2 -2
  105. data/sig/annotate/rdoc_annotater.rbs +1 -1
  106. data/sig/environment.rbs +57 -6
  107. data/sig/manifest.yaml +0 -1
  108. data/sig/parser.rbs +20 -0
  109. data/sig/resolver/type_name_resolver.rbs +38 -7
  110. data/sig/types.rbs +4 -1
  111. data/src/ast.c +1256 -0
  112. data/src/lexer.c +2956 -0
  113. data/src/lexer.re +147 -0
  114. data/src/lexstate.c +205 -0
  115. data/src/location.c +71 -0
  116. data/src/parser.c +3495 -0
  117. data/src/string.c +90 -0
  118. data/src/util/rbs_allocator.c +152 -0
  119. data/src/util/rbs_assert.c +21 -0
  120. data/src/util/rbs_buffer.c +54 -0
  121. data/src/util/rbs_constant_pool.c +16 -86
  122. data/src/util/rbs_encoding.c +21308 -0
  123. data/src/util/rbs_unescape.c +131 -0
  124. data/stdlib/cgi/0/core.rbs +2 -396
  125. data/stdlib/cgi/0/manifest.yaml +1 -0
  126. data/stdlib/cgi-escape/0/escape.rbs +153 -0
  127. data/stdlib/coverage/0/coverage.rbs +3 -1
  128. data/stdlib/delegate/0/delegator.rbs +10 -7
  129. data/stdlib/erb/0/erb.rbs +737 -347
  130. data/stdlib/fileutils/0/fileutils.rbs +18 -13
  131. data/stdlib/forwardable/0/forwardable.rbs +3 -0
  132. data/stdlib/json/0/json.rbs +67 -48
  133. data/stdlib/net-http/0/net-http.rbs +3 -0
  134. data/stdlib/objspace/0/objspace.rbs +8 -3
  135. data/stdlib/open-uri/0/open-uri.rbs +40 -0
  136. data/stdlib/openssl/0/openssl.rbs +182 -149
  137. data/stdlib/optparse/0/optparse.rbs +3 -3
  138. data/stdlib/rdoc/0/code_object.rbs +2 -2
  139. data/stdlib/rdoc/0/comment.rbs +2 -0
  140. data/stdlib/rdoc/0/options.rbs +76 -0
  141. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  142. data/stdlib/rdoc/0/store.rbs +1 -1
  143. data/stdlib/resolv/0/resolv.rbs +25 -68
  144. data/stdlib/ripper/0/ripper.rbs +5 -2
  145. data/stdlib/singleton/0/singleton.rbs +3 -0
  146. data/stdlib/socket/0/socket.rbs +13 -1
  147. data/stdlib/socket/0/tcp_socket.rbs +10 -2
  148. data/stdlib/stringio/0/stringio.rbs +412 -80
  149. data/stdlib/strscan/0/string_scanner.rbs +31 -31
  150. data/stdlib/tempfile/0/tempfile.rbs +1 -1
  151. data/stdlib/tsort/0/cyclic.rbs +3 -0
  152. data/stdlib/uri/0/common.rbs +11 -2
  153. data/stdlib/uri/0/file.rbs +1 -1
  154. data/stdlib/uri/0/generic.rbs +16 -15
  155. data/stdlib/uri/0/rfc2396_parser.rbs +6 -7
  156. data/stdlib/zlib/0/zstream.rbs +1 -0
  157. metadata +41 -18
  158. data/ext/rbs_extension/lexer.c +0 -2728
  159. data/ext/rbs_extension/lexer.h +0 -179
  160. data/ext/rbs_extension/lexer.re +0 -147
  161. data/ext/rbs_extension/lexstate.c +0 -175
  162. data/ext/rbs_extension/location.c +0 -325
  163. data/ext/rbs_extension/location.h +0 -85
  164. data/ext/rbs_extension/parser.c +0 -2982
  165. data/ext/rbs_extension/parser.h +0 -18
  166. data/ext/rbs_extension/parserstate.c +0 -411
  167. data/ext/rbs_extension/parserstate.h +0 -163
  168. data/ext/rbs_extension/unescape.c +0 -32
  169. data/include/rbs/ruby_objs.h +0 -72
  170. data/src/constants.c +0 -153
  171. data/src/ruby_objs.c +0 -799
data/core/set.rbs CHANGED
@@ -1,184 +1,188 @@
1
- # <!-- rdoc-file=lib/set.rb -->
2
- # This library provides the Set class, which implements a collection
3
- # of unordered values with no duplicates. It is a hybrid of Array's
4
- # intuitive inter-operation facilities and Hash's fast lookup.
5
- # The method `to_set` is added to Enumerable for convenience.
6
- # Set is easy to use with Enumerable objects (implementing `each`).
7
- # Most of the initializer methods and binary operators accept generic
8
- # Enumerable objects besides sets and arrays. An Enumerable object
9
- # can be converted to Set using the `to_set` method.
10
- # Set uses Hash as storage, so you must note the following points:
1
+ # <!-- rdoc-file=set.c -->
2
+ # Copyright (c) 2002-2024 Akinori MUSHA <knu@iDaemons.org>
3
+ #
4
+ # Documentation by Akinori MUSHA and Gavin Sinclair.
5
+ #
6
+ # All rights reserved. You can redistribute and/or modify it under the same
7
+ # terms as Ruby.
8
+ #
9
+ # The Set class implements a collection of unordered values with no duplicates.
10
+ # It is a hybrid of Array's intuitive inter-operation facilities and Hash's fast
11
+ # lookup.
12
+ #
13
+ # Set is easy to use with Enumerable objects (implementing `each`). Most of the
14
+ # initializer methods and binary operators accept generic Enumerable objects
15
+ # besides sets and arrays. An Enumerable object can be converted to Set using
16
+ # the `to_set` method.
17
+ #
18
+ # Set uses a data structure similar to Hash for storage, except that it only has
19
+ # keys and no values.
20
+ #
11
21
  # * Equality of elements is determined according to Object#eql? and
12
- # Object#hash. Use Set#compare_by_identity to make a set compare
13
- # its elements by their identity.
14
- # * Set assumes that the identity of each element does not change
15
- # while it is stored. Modifying an element of a set will render the
16
- # set to an unreliable state.
17
- # * When a string is to be stored, a frozen copy of the string is
18
- # stored instead unless the original string is already frozen.
22
+ # Object#hash. Use Set#compare_by_identity to make a set compare its
23
+ # elements by their identity.
24
+ # * Set assumes that the identity of each element does not change while it is
25
+ # stored. Modifying an element of a set will render the set to an
26
+ # unreliable state.
27
+ # * When a string is to be stored, a frozen copy of the string is stored
28
+ # instead unless the original string is already frozen.
29
+ #
19
30
  # ## Comparison
20
- # The comparison operators `<`, `>`, `<=`, and `>=` are implemented as
21
- # shorthand for the {proper_,}{subset?,superset?} methods. The `<=>`
22
- # operator reflects this order, or return `nil` for sets that both
23
- # have distinct elements (`{x, y}` vs. `{x, z}` for example).
31
+ #
32
+ # The comparison operators `<`, `>`, `<=`, and `>=` are implemented as shorthand
33
+ # for the {proper_,}{subset?,superset?} methods. The `<=>` operator reflects
34
+ # this order, or returns `nil` for sets that both have distinct elements (`{x,
35
+ # y}` vs. `{x, z}` for example).
36
+ #
24
37
  # ## Example
25
- # require 'set'
26
- # s1 = Set[1, 2] #=> #<Set: {1, 2}>
27
- # s2 = [1, 2].to_set #=> #<Set: {1, 2}>
28
- # s1 == s2 #=> true
29
- # s1.add("foo") #=> #<Set: {1, 2, "foo"}>
30
- # s1.merge([2, 6]) #=> #<Set: {1, 2, "foo", 6}>
31
- # s1.subset?(s2) #=> false
32
- # s2.subset?(s1) #=> true
38
+ #
39
+ # s1 = Set[1, 2] #=> #<Set: {1, 2}>
40
+ # s2 = [1, 2].to_set #=> #<Set: {1, 2}>
41
+ # s1 == s2 #=> true
42
+ # s1.add("foo") #=> #<Set: {1, 2, "foo"}>
43
+ # s1.merge([2, 6]) #=> #<Set: {1, 2, "foo", 6}>
44
+ # s1.subset?(s2) #=> false
45
+ # s2.subset?(s1) #=> true
33
46
  #
34
47
  # ## Contact
35
- # * Akinori MUSHA <mailto:knu@iDaemons.org> (current maintainer)
48
+ #
49
+ # * Akinori MUSHA <knu@iDaemons.org> (current maintainer)
50
+ #
36
51
  # ## What's Here
37
- # First, what's elsewhere. Class Set:
52
+ #
53
+ # First, what's elsewhere. \Class \Set:
54
+ #
38
55
  # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
39
- # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here),
40
- # which provides dozens of additional methods.
41
- # In particular, class Set does not have many methods of its own
42
- # for fetching or for iterating.
43
- # Instead, it relies on those in Enumerable.
56
+ # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
57
+ # provides dozens of additional methods.
58
+ #
59
+ # In particular, class Set does not have many methods of its own for fetching or
60
+ # for iterating. Instead, it relies on those in Enumerable.
61
+ #
44
62
  # Here, class Set provides methods that are useful for:
45
- # * [Creating a Set](#class-Set-label-Methods+for+Creating+a+Set)
46
- # * [Set Operations](#class-Set-label-Methods+for+Set+Operations)
47
- # * [Comparing](#class-Set-label-Methods+for+Comparing)
48
- # * [Querying](#class-Set-label-Methods+for+Querying)
49
- # * [Assigning](#class-Set-label-Methods+for+Assigning)
50
- # * [Deleting](#class-Set-label-Methods+for+Deleting)
51
- # * [Converting](#class-Set-label-Methods+for+Converting)
52
- # * [Iterating](#class-Set-label-Methods+for+Iterating)
53
- # * [And more....](#class-Set-label-Other+Methods)
63
+ #
64
+ # * [Creating an Array](rdoc-ref:Array@Methods+for+Creating+an+Array)
65
+ # * [Creating a Set](rdoc-ref:Set@Methods+for+Creating+a+Set)
66
+ # * [Set Operations](rdoc-ref:Set@Methods+for+Set+Operations)
67
+ # * [Comparing](rdoc-ref:Array@Methods+for+Comparing)
68
+ # * [Querying](rdoc-ref:Array@Methods+for+Querying)
69
+ # * [Assigning](rdoc-ref:Array@Methods+for+Assigning)
70
+ # * [Deleting](rdoc-ref:Array@Methods+for+Deleting)
71
+ # * [Converting](rdoc-ref:Array@Methods+for+Converting)
72
+ # * [Iterating](rdoc-ref:Array@Methods+for+Iterating)
73
+ # * [And more....](rdoc-ref:Array@Other+Methods)
74
+ #
54
75
  # ### Methods for Creating a Set
55
- # * ::[]:
56
- # Returns a new set containing the given objects.
57
- # * ::new:
58
- # Returns a new set containing either the given objects
59
- # (if no block given) or the return values from the called block
60
- # (if a block given).
76
+ #
77
+ # * ::[]: Returns a new set containing the given objects.
78
+ # * ::new: Returns a new set containing either the given objects (if no block
79
+ # given) or the return values from the called block (if a block given).
80
+ #
61
81
  # ### Methods for Set Operations
62
- # * [|](#method-i-7C) (aliased as #union and #+):
63
- # Returns a new set containing all elements from `self`
64
- # and all elements from a given enumerable (no duplicates).
65
- # * [&](#method-i-26) (aliased as #intersection):
66
- # Returns a new set containing all elements common to `self`
67
- # and a given enumerable.
68
- # * [-](#method-i-2D) (aliased as #difference):
69
- # Returns a copy of `self` with all elements
70
- # in a given enumerable removed.
71
- # * [\^](#method-i-5E):
72
- # Returns a new set containing all elements from `self`
73
- # and a given enumerable except those common to both.
82
+ #
83
+ # * #| (aliased as #union and #+): Returns a new set containing all elements
84
+ # from `self` and all elements from a given enumerable (no duplicates).
85
+ # * #& (aliased as #intersection): Returns a new set containing all elements
86
+ # common to `self` and a given enumerable.
87
+ # * #- (aliased as #difference): Returns a copy of `self` with all elements in
88
+ # a given enumerable removed.
89
+ # * #^: Returns a new set containing all elements from `self` and a given
90
+ # enumerable except those common to both.
91
+ #
74
92
  # ### Methods for Comparing
75
- # * [<=>](#method-i-3C-3D-3E):
76
- # Returns -1, 0, or 1 as `self` is less than, equal to,
77
- # or greater than a given object.
78
- # * [==](#method-i-3D-3D):
79
- # Returns whether `self` and a given enumerable are equal,
80
- # as determined by Object#eql?.
81
- # * #compare_by_identity?:
82
- # Returns whether the set considers only identity
83
- # when comparing elements.
93
+ #
94
+ # * #<=>: Returns -1, 0, or 1 as `self` is less than, equal to, or greater
95
+ # than a given object.
96
+ # * #==: Returns whether `self` and a given enumerable are equal, as
97
+ # determined by Object#eql?.
98
+ # * #compare_by_identity?: Returns whether the set considers only identity
99
+ # when comparing elements.
100
+ #
84
101
  # ### Methods for Querying
85
- # * #length (aliased as #size):
86
- # Returns the count of elements.
87
- # * #empty?:
88
- # Returns whether the set has no elements.
89
- # * #include? (aliased as #member? and #===):
90
- # Returns whether a given object is an element in the set.
91
- # * #subset? (aliased as [<=](#method-i-3C-3D)):
92
- # Returns whether a given object is a subset of the set.
93
- # * #proper_subset? (aliased as [<](#method-i-3C)):
94
- # Returns whether a given enumerable is a proper subset of the set.
95
- # * #superset? (aliased as [>=](#method-i-3E-3D)]):
96
- # Returns whether a given enumerable is a superset of the set.
97
- # * #proper_superset? (aliased as [>](#method-i-3E)):
98
- # Returns whether a given enumerable is a proper superset of the set.
99
- # * #disjoint?:
100
- # Returns `true` if the set and a given enumerable
101
- # have no common elements, `false` otherwise.
102
- # * #intersect?:
103
- # Returns `true` if the set and a given enumerable:
104
- # have any common elements, `false` otherwise.
105
- # * #compare_by_identity?:
106
- # Returns whether the set considers only identity
107
- # when comparing elements.
102
+ #
103
+ # * #length (aliased as #size): Returns the count of elements.
104
+ # * #empty?: Returns whether the set has no elements.
105
+ # * #include? (aliased as #member? and #===): Returns whether a given object
106
+ # is an element in the set.
107
+ # * #subset? (aliased as #<=): Returns whether a given object is a subset of
108
+ # the set.
109
+ # * #proper_subset? (aliased as #<): Returns whether a given enumerable is a
110
+ # proper subset of the set.
111
+ # * #superset? (aliased as #>=): Returns whether a given enumerable is a
112
+ # superset of the set.
113
+ # * #proper_superset? (aliased as #>): Returns whether a given enumerable is a
114
+ # proper superset of the set.
115
+ # * #disjoint?: Returns `true` if the set and a given enumerable have no
116
+ # common elements, `false` otherwise.
117
+ # * #intersect?: Returns `true` if the set and a given enumerable: have any
118
+ # common elements, `false` otherwise.
119
+ # * #compare_by_identity?: Returns whether the set considers only identity
120
+ # when comparing elements.
121
+ #
108
122
  # ### Methods for Assigning
109
- # * #add (aliased as #<<):
110
- # Adds a given object to the set; returns `self`.
111
- # * #add?:
112
- # If the given object is not an element in the set,
113
- # adds it and returns `self`; otherwise, returns `nil`.
114
- # * #merge:
115
- # Merges the elements of each given enumerable object to the set; returns
116
- # `self`.
117
- # * #replace:
118
- # Replaces the contents of the set with the contents
119
- # of a given enumerable.
123
+ #
124
+ # * #add (aliased as #<<): Adds a given object to the set; returns `self`.
125
+ # * #add?: If the given object is not an element in the set, adds it and
126
+ # returns `self`; otherwise, returns `nil`.
127
+ # * #merge: Merges the elements of each given enumerable object to the set;
128
+ # returns `self`.
129
+ # * #replace: Replaces the contents of the set with the contents of a given
130
+ # enumerable.
131
+ #
120
132
  # ### Methods for Deleting
121
- # * #clear:
122
- # Removes all elements in the set; returns `self`.
123
- # * #delete:
124
- # Removes a given object from the set; returns `self`.
125
- # * #delete?:
126
- # If the given object is an element in the set,
127
- # removes it and returns `self`; otherwise, returns `nil`.
128
- # * #subtract:
129
- # Removes each given object from the set; returns `self`.
133
+ #
134
+ # * #clear: Removes all elements in the set; returns `self`.
135
+ # * #delete: Removes a given object from the set; returns `self`.
136
+ # * #delete?: If the given object is an element in the set, removes it and
137
+ # returns `self`; otherwise, returns `nil`.
138
+ # * #subtract: Removes each given object from the set; returns `self`.
130
139
  # * #delete_if - Removes elements specified by a given block.
131
- # * #select! (aliased as #filter!):
132
- # Removes elements not specified by a given block.
133
- # * #keep_if:
134
- # Removes elements not specified by a given block.
135
- # * #reject!
136
- # Removes elements specified by a given block.
140
+ # * #select! (aliased as #filter!): Removes elements not specified by a given
141
+ # block.
142
+ # * #keep_if: Removes elements not specified by a given block.
143
+ # * #reject! Removes elements specified by a given block.
144
+ #
137
145
  # ### Methods for Converting
138
- # * #classify:
139
- # Returns a hash that classifies the elements,
140
- # as determined by the given block.
141
- # * #collect! (aliased as #map!):
142
- # Replaces each element with a block return-value.
143
- # * #divide:
144
- # Returns a hash that classifies the elements,
145
- # as determined by the given block;
146
- # differs from #classify in that the block may accept
147
- # either one or two arguments.
148
- # * #flatten:
149
- # Returns a new set that is a recursive flattening of `self`.
150
- # #flatten!:
151
- # Replaces each nested set in `self` with the elements from that set.
152
- # * #inspect (aliased as #to_s):
153
- # Returns a string displaying the elements.
154
- # * #join:
155
- # Returns a string containing all elements, converted to strings
156
- # as needed, and joined by the given record separator.
157
- # * #to_a:
158
- # Returns an array containing all set elements.
159
- # * #to_set:
160
- # Returns `self` if given no arguments and no block;
161
- # with a block given, returns a new set consisting of block
162
- # return values.
146
+ #
147
+ # * #classify: Returns a hash that classifies the elements, as determined by
148
+ # the given block.
149
+ # * #collect! (aliased as #map!): Replaces each element with a block
150
+ # return-value.
151
+ # * #divide: Returns a hash that classifies the elements, as determined by the
152
+ # given block; differs from #classify in that the block may accept either
153
+ # one or two arguments.
154
+ # * #flatten: Returns a new set that is a recursive flattening of `self`.
155
+ # * #flatten!: Replaces each nested set in `self` with the elements from that
156
+ # set.
157
+ # * #inspect (aliased as #to_s): Returns a string displaying the elements.
158
+ # * #join: Returns a string containing all elements, converted to strings as
159
+ # needed, and joined by the given record separator.
160
+ # * #to_a: Returns an array containing all set elements.
161
+ # * #to_set: Returns `self` if given no arguments and no block; with a block
162
+ # given, returns a new set consisting of block return values.
163
+ #
163
164
  # ### Methods for Iterating
164
- # * #each:
165
- # Calls the block with each successive element; returns `self`.
165
+ #
166
+ # * #each: Calls the block with each successive element; returns `self`.
167
+ #
166
168
  # ### Other Methods
167
- # * #reset:
168
- # Resets the internal state; useful if an object
169
- # has been modified while an element in the set.
169
+ #
170
+ # * #reset: Resets the internal state; useful if an object has been modified
171
+ # while an element in the set.
170
172
  #
171
173
  class Set[unchecked out A]
172
174
  include Enumerable[A]
173
175
 
174
176
  # <!--
175
- # rdoc-file=lib/set.rb
176
- # - new(enum = nil) { |o| ... }
177
+ # rdoc-file=set.c
178
+ # - Set.new -> new_set
179
+ # - Set.new(enum) -> new_set
180
+ # - Set.new(enum) { |elem| ... } -> new_set
177
181
  # -->
178
- # Creates a new set containing the elements of the given enumerable
179
- # object.
180
- # If a block is given, the elements of enum are preprocessed by the
181
- # given block.
182
+ # Creates a new set containing the elements of the given enumerable object.
183
+ #
184
+ # If a block is given, the elements of enum are preprocessed by the given block.
185
+ #
182
186
  # Set.new([1, 2]) #=> #<Set: {1, 2}>
183
187
  # Set.new([1, 2, 1]) #=> #<Set: {1, 2}>
184
188
  # Set.new([1, 'c', :s]) #=> #<Set: {1, "c", :s}>
@@ -190,102 +194,115 @@ class Set[unchecked out A]
190
194
  | (?nil) -> untyped
191
195
 
192
196
  # <!--
193
- # rdoc-file=lib/set.rb
194
- # - [](*ary)
197
+ # rdoc-file=set.c
198
+ # - Set[*objects] -> new_set
195
199
  # -->
196
- # Creates a new set containing the given objects.
197
- # Set[1, 2] # => #<Set: {1, 2}>
198
- # Set[1, 2, 1] # => #<Set: {1, 2}>
199
- # Set[1, 'c', :s] # => #<Set: {1, "c", :s}>
200
+ # Returns a new Set object populated with the given objects, See Set::new.
200
201
  #
201
202
  def self.[]: [X] (*X) -> Set[X]
202
203
 
203
204
  # <!--
204
- # rdoc-file=lib/set.rb
205
- # - &(enum)
205
+ # rdoc-file=set.c
206
+ # - set & enum -> new_set
206
207
  # -->
207
- # Returns a new set containing elements common to the set and the
208
- # given enumerable object.
208
+ # Returns a new set containing elements common to the set and the given
209
+ # enumerable object.
210
+ #
209
211
  # Set[1, 3, 5] & Set[3, 2, 1] #=> #<Set: {3, 1}>
210
212
  # Set['a', 'b', 'z'] & ['a', 'b', 'c'] #=> #<Set: {"a", "b"}>
211
213
  #
212
214
  def &: (_Each[A]) -> self
213
215
 
214
- # <!--
215
- # rdoc-file=lib/set.rb
216
- # - intersection(enum)
217
- # -->
216
+ # <!-- rdoc-file=set.c -->
217
+ # Returns a new set containing elements common to the set and the given
218
+ # enumerable object.
219
+ #
220
+ # Set[1, 3, 5] & Set[3, 2, 1] #=> #<Set: {3, 1}>
221
+ # Set['a', 'b', 'z'] & ['a', 'b', 'c'] #=> #<Set: {"a", "b"}>
218
222
  #
219
223
  alias intersection &
220
224
 
221
225
  # <!--
222
- # rdoc-file=lib/set.rb
223
- # - |(enum)
226
+ # rdoc-file=set.c
227
+ # - set | enum -> new_set
224
228
  # -->
225
- # Returns a new set built by merging the set and the elements of the
226
- # given enumerable object.
229
+ # Returns a new set built by merging the set and the elements of the given
230
+ # enumerable object.
231
+ #
227
232
  # Set[1, 2, 3] | Set[2, 4, 5] #=> #<Set: {1, 2, 3, 4, 5}>
228
233
  # Set[1, 5, 'z'] | (1..6) #=> #<Set: {1, 5, "z", 2, 3, 4, 6}>
229
234
  #
230
235
  def |: (_Each[A]) -> self
231
236
 
232
- # <!--
233
- # rdoc-file=lib/set.rb
234
- # - union(enum)
235
- # -->
237
+ # <!-- rdoc-file=set.c -->
238
+ # Returns a new set built by merging the set and the elements of the given
239
+ # enumerable object.
240
+ #
241
+ # Set[1, 2, 3] | Set[2, 4, 5] #=> #<Set: {1, 2, 3, 4, 5}>
242
+ # Set[1, 5, 'z'] | (1..6) #=> #<Set: {1, 5, "z", 2, 3, 4, 6}>
236
243
  #
237
244
  alias union |
238
245
 
239
- # <!--
240
- # rdoc-file=lib/set.rb
241
- # - +(enum)
242
- # -->
246
+ # <!-- rdoc-file=set.c -->
247
+ # Returns a new set built by merging the set and the elements of the given
248
+ # enumerable object.
249
+ #
250
+ # Set[1, 2, 3] | Set[2, 4, 5] #=> #<Set: {1, 2, 3, 4, 5}>
251
+ # Set[1, 5, 'z'] | (1..6) #=> #<Set: {1, 5, "z", 2, 3, 4, 6}>
243
252
  #
244
253
  alias + |
245
254
 
246
255
  # <!--
247
- # rdoc-file=lib/set.rb
248
- # - -(enum)
256
+ # rdoc-file=set.c
257
+ # - set - enum -> new_set
249
258
  # -->
250
- # Returns a new set built by duplicating the set, removing every
251
- # element that appears in the given enumerable object.
259
+ # Returns a new set built by duplicating the set, removing every element that
260
+ # appears in the given enumerable object.
261
+ #
252
262
  # Set[1, 3, 5] - Set[1, 5] #=> #<Set: {3}>
253
263
  # Set['a', 'b', 'z'] - ['a', 'c'] #=> #<Set: {"b", "z"}>
254
264
  #
255
265
  def -: (_Each[A]) -> self
256
266
 
257
- # <!--
258
- # rdoc-file=lib/set.rb
259
- # - difference(enum)
260
- # -->
267
+ # <!-- rdoc-file=set.c -->
268
+ # Returns a new set built by duplicating the set, removing every element that
269
+ # appears in the given enumerable object.
270
+ #
271
+ # Set[1, 3, 5] - Set[1, 5] #=> #<Set: {3}>
272
+ # Set['a', 'b', 'z'] - ['a', 'c'] #=> #<Set: {"b", "z"}>
261
273
  #
262
274
  alias difference -
263
275
 
264
276
  # <!--
265
- # rdoc-file=lib/set.rb
266
- # - add(o)
277
+ # rdoc-file=set.c
278
+ # - add(obj) -> self
267
279
  # -->
268
- # Adds the given object to the set and returns self. Use `merge` to
269
- # add many elements at once.
280
+ # Adds the given object to the set and returns self. Use `merge` to add many
281
+ # elements at once.
282
+ #
270
283
  # Set[1, 2].add(3) #=> #<Set: {1, 2, 3}>
271
284
  # Set[1, 2].add([3, 4]) #=> #<Set: {1, 2, [3, 4]}>
272
285
  # Set[1, 2].add(2) #=> #<Set: {1, 2}>
273
286
  #
274
287
  def add: (A) -> self
275
288
 
276
- # <!--
277
- # rdoc-file=lib/set.rb
278
- # - <<(o)
279
- # -->
289
+ # <!-- rdoc-file=set.c -->
290
+ # Adds the given object to the set and returns self. Use `merge` to add many
291
+ # elements at once.
292
+ #
293
+ # Set[1, 2].add(3) #=> #<Set: {1, 2, 3}>
294
+ # Set[1, 2].add([3, 4]) #=> #<Set: {1, 2, [3, 4]}>
295
+ # Set[1, 2].add(2) #=> #<Set: {1, 2}>
280
296
  #
281
297
  alias << add
282
298
 
283
299
  # <!--
284
- # rdoc-file=lib/set.rb
285
- # - add?(o)
300
+ # rdoc-file=set.c
301
+ # - add?(obj) -> self or nil
286
302
  # -->
287
- # Adds the given object to the set and returns self. If the
288
- # object is already in the set, returns nil.
303
+ # Adds the given object to the set and returns self. If the object is already in
304
+ # the set, returns nil.
305
+ #
289
306
  # Set[1, 2].add?(3) #=> #<Set: {1, 2, 3}>
290
307
  # Set[1, 2].add?([3, 4]) #=> #<Set: {1, 2, [3, 4]}>
291
308
  # Set[1, 2].add?(2) #=> nil
@@ -293,59 +310,92 @@ class Set[unchecked out A]
293
310
  def add?: (A) -> self?
294
311
 
295
312
  # <!--
296
- # rdoc-file=lib/set.rb
297
- # - include?(o)
313
+ # rdoc-file=set.c
314
+ # - include?(item) -> true or false
298
315
  # -->
299
- # Returns true if the set contains the given object.
300
- # Note that `include?` and `member?` do not test member
301
- # equality using `==` as do other Enumerables.
316
+ # Returns true if the set contains the given object:
317
+ #
318
+ # Set[1, 2, 3].include? 2 #=> true
319
+ # Set[1, 2, 3].include? 4 #=> false
320
+ #
321
+ # Note that `include?` and `member?` do not test member equality using `==` as
322
+ # do other Enumerables.
323
+ #
324
+ # This is aliased to #===, so it is usable in `case` expressions:
325
+ #
326
+ # case :apple
327
+ # when Set[:potato, :carrot]
328
+ # "vegetable"
329
+ # when Set[:apple, :banana]
330
+ # "fruit"
331
+ # end
332
+ # # => "fruit"
333
+ #
302
334
  # See also Enumerable#include?
303
335
  #
304
336
  def include?: (A) -> bool
305
337
 
306
- # <!--
307
- # rdoc-file=lib/set.rb
308
- # - member?(o)
309
- # -->
338
+ # <!-- rdoc-file=set.c -->
339
+ # Returns true if the set contains the given object:
340
+ #
341
+ # Set[1, 2, 3].include? 2 #=> true
342
+ # Set[1, 2, 3].include? 4 #=> false
343
+ #
344
+ # Note that `include?` and `member?` do not test member equality using `==` as
345
+ # do other Enumerables.
346
+ #
347
+ # This is aliased to #===, so it is usable in `case` expressions:
348
+ #
349
+ # case :apple
350
+ # when Set[:potato, :carrot]
351
+ # "vegetable"
352
+ # when Set[:apple, :banana]
353
+ # "fruit"
354
+ # end
355
+ # # => "fruit"
356
+ #
357
+ # See also Enumerable#include?
310
358
  #
311
359
  alias member? include?
312
360
 
313
361
  # <!--
314
- # rdoc-file=lib/set.rb
315
- # - ^(enum)
362
+ # rdoc-file=set.c
363
+ # - set ^ enum -> new_set
316
364
  # -->
317
- # Returns a new set containing elements exclusive between the set
318
- # and the given enumerable object. `(set ^ enum)` is equivalent to
319
- # `((set | enum) - (set & enum))`.
365
+ # Returns a new set containing elements exclusive between the set and the given
366
+ # enumerable object. `(set ^ enum)` is equivalent to `((set | enum) - (set &
367
+ # enum))`.
368
+ #
320
369
  # Set[1, 2] ^ Set[2, 3] #=> #<Set: {3, 1}>
321
370
  # Set[1, 'b', 'c'] ^ ['b', 'd'] #=> #<Set: {"d", 1, "c"}>
322
371
  #
323
372
  def ^: (_Each[A]) -> self
324
373
 
325
374
  # <!--
326
- # rdoc-file=lib/set.rb
327
- # - classify() { |o| ... }
375
+ # rdoc-file=set.c
376
+ # - classify { |o| ... } -> hash
377
+ # - classify -> enumerator
328
378
  # -->
329
- # Classifies the set by the return value of the given block and
330
- # returns a hash of {value => set of elements} pairs. The block is
331
- # called once for each element of the set, passing the element as
332
- # parameter.
333
- # require 'set'
379
+ # Classifies the set by the return value of the given block and returns a hash
380
+ # of {value => set of elements} pairs. The block is called once for each
381
+ # element of the set, passing the element as parameter.
382
+ #
334
383
  # files = Set.new(Dir.glob("*.rb"))
335
384
  # hash = files.classify { |f| File.mtime(f).year }
336
- # hash #=> {2000=>#<Set: {"a.rb", "b.rb"}>,
337
- # # 2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>,
338
- # # 2002=>#<Set: {"f.rb"}>}
385
+ # hash #=> {2000 => #<Set: {"a.rb", "b.rb"}>,
386
+ # # 2001 => #<Set: {"c.rb", "d.rb", "e.rb"}>,
387
+ # # 2002 => #<Set: {"f.rb"}>}
339
388
  #
340
389
  # Returns an enumerator if no block is given.
341
390
  #
342
391
  def classify: [X] () { (A) -> X } -> Hash[X, self]
343
392
 
344
393
  # <!--
345
- # rdoc-file=lib/set.rb
346
- # - clear()
394
+ # rdoc-file=set.c
395
+ # - clear -> self
347
396
  # -->
348
397
  # Removes all elements and returns self.
398
+ #
349
399
  # set = Set[1, 'c', :s] #=> #<Set: {1, "c", :s}>
350
400
  # set.clear #=> #<Set: {}>
351
401
  # set #=> #<Set: {}>
@@ -353,73 +403,83 @@ class Set[unchecked out A]
353
403
  def clear: () -> self
354
404
 
355
405
  # <!--
356
- # rdoc-file=lib/set.rb
357
- # - collect!() { |o| ... }
406
+ # rdoc-file=set.c
407
+ # - collect! { |o| ... } -> self
408
+ # - collect! -> enumerator
358
409
  # -->
359
- # Replaces the elements with ones returned by `collect()`.
360
- # Returns an enumerator if no block is given.
410
+ # Replaces the elements with ones returned by `collect`. Returns an enumerator
411
+ # if no block is given.
361
412
  #
362
413
  def collect!: () { (A) -> A } -> self
363
414
 
364
- # <!--
365
- # rdoc-file=lib/set.rb
366
- # - map!()
367
- # -->
415
+ # <!-- rdoc-file=set.c -->
416
+ # Replaces the elements with ones returned by `collect`. Returns an enumerator
417
+ # if no block is given.
368
418
  #
369
419
  alias map! collect!
370
420
 
371
421
  # <!--
372
- # rdoc-file=lib/set.rb
373
- # - delete(o)
422
+ # rdoc-file=set.c
423
+ # - delete(obj) -> self
374
424
  # -->
375
- # Deletes the given object from the set and returns self. Use
376
- # `subtract` to delete many items at once.
425
+ # Deletes the given object from the set and returns self. Use subtract to delete
426
+ # many items at once.
377
427
  #
378
428
  def delete: (A) -> self
379
429
 
380
430
  # <!--
381
- # rdoc-file=lib/set.rb
382
- # - delete?(o)
431
+ # rdoc-file=set.c
432
+ # - delete?(obj) -> self or nil
383
433
  # -->
384
- # Deletes the given object from the set and returns self. If the
385
- # object is not in the set, returns nil.
434
+ # Deletes the given object from the set and returns self. If the object is not
435
+ # in the set, returns nil.
386
436
  #
387
437
  def delete?: (A) -> self?
388
438
 
389
439
  # <!--
390
- # rdoc-file=lib/set.rb
391
- # - delete_if(&block)
440
+ # rdoc-file=set.c
441
+ # - delete_if { |o| ... } -> self
442
+ # - delete_if -> enumerator
392
443
  # -->
393
- # Deletes every element of the set for which block evaluates to
394
- # true, and returns self. Returns an enumerator if no block is
395
- # given.
444
+ # Deletes every element of the set for which block evaluates to true, and
445
+ # returns self. Returns an enumerator if no block is given.
396
446
  #
397
447
  def delete_if: () { (A) -> untyped } -> self
398
448
 
399
449
  # <!--
400
- # rdoc-file=lib/set.rb
401
- # - reject!(&block)
450
+ # rdoc-file=set.c
451
+ # - reject! { |o| ... } -> self
452
+ # - reject! -> enumerator
402
453
  # -->
403
- # Equivalent to Set#delete_if, but returns nil if no changes were
404
- # made. Returns an enumerator if no block is given.
454
+ # Equivalent to Set#delete_if, but returns nil if no changes were made. Returns
455
+ # an enumerator if no block is given.
405
456
  #
406
457
  def reject!: () { (A) -> untyped } -> self?
407
458
 
408
459
  # <!--
409
- # rdoc-file=lib/set.rb
410
- # - compare_by_identity()
460
+ # rdoc-file=set.c
461
+ # - compare_by_identity -> self
411
462
  # -->
412
- # Makes the set compare its elements by their identity and returns
413
- # self. This method may not be supported by all subclasses of Set.
463
+ # Makes the set compare its elements by their identity and returns self.
414
464
  #
415
465
  def compare_by_identity: () -> self
416
466
 
417
467
  # <!--
418
- # rdoc-file=lib/set.rb
419
- # - disjoint?(set)
468
+ # rdoc-file=set.c
469
+ # - compare_by_identity? -> true or false
420
470
  # -->
421
- # Returns true if the set and the given enumerable have
422
- # no element in common. This method is the opposite of `intersect?`.
471
+ # Returns true if the set will compare its elements by their identity. Also see
472
+ # Set#compare_by_identity.
473
+ #
474
+ def compare_by_identity?: () -> bool
475
+
476
+ # <!--
477
+ # rdoc-file=set.c
478
+ # - disjoint?(set) -> true or false
479
+ # -->
480
+ # Returns true if the set and the given enumerable have no element in common.
481
+ # This method is the opposite of `intersect?`.
482
+ #
423
483
  # Set[1, 2, 3].disjoint? Set[3, 4] #=> false
424
484
  # Set[1, 2, 3].disjoint? Set[4, 5] #=> true
425
485
  # Set[1, 2, 3].disjoint? [3, 4] #=> false
@@ -428,21 +488,24 @@ class Set[unchecked out A]
428
488
  def disjoint?: (Set[A] | Enumerable[A]) -> bool
429
489
 
430
490
  # <!--
431
- # rdoc-file=lib/set.rb
432
- # - divide(&func)
491
+ # rdoc-file=set.c
492
+ # - divide { |o1, o2| ... } -> set
493
+ # - divide { |o| ... } -> set
494
+ # - divide -> enumerator
433
495
  # -->
434
- # Divides the set into a set of subsets according to the commonality
435
- # defined by the given block.
436
- # If the arity of the block is 2, elements o1 and o2 are in common
437
- # if block.call(o1, o2) is true. Otherwise, elements o1 and o2 are
438
- # in common if block.call(o1) == block.call(o2).
439
- # require 'set'
496
+ # Divides the set into a set of subsets according to the commonality defined by
497
+ # the given block.
498
+ #
499
+ # If the arity of the block is 2, elements o1 and o2 are in common if both
500
+ # block.call(o1, o2) and block.call(o2, o1) are true. Otherwise, elements o1 and
501
+ # o2 are in common if block.call(o1) == block.call(o2).
502
+ #
440
503
  # numbers = Set[1, 3, 4, 6, 9, 10, 11]
441
504
  # set = numbers.divide { |i,j| (i - j).abs == 1 }
442
505
  # set #=> #<Set: {#<Set: {1}>,
443
- # # #<Set: {11, 9, 10}>,
444
506
  # # #<Set: {3, 4}>,
445
507
  # # #<Set: {6}>}>
508
+ # # #<Set: {9, 10, 11}>,
446
509
  #
447
510
  # Returns an enumerator if no block is given.
448
511
  #
@@ -450,39 +513,49 @@ class Set[unchecked out A]
450
513
  | () { (A) -> Hash::_Key } -> Set[self]
451
514
 
452
515
  # <!--
453
- # rdoc-file=lib/set.rb
454
- # - each(&block)
516
+ # rdoc-file=set.c
517
+ # - each { |o| ... } -> self
518
+ # - each -> enumerator
455
519
  # -->
456
- # Calls the given block once for each element in the set, passing
457
- # the element as parameter. Returns an enumerator if no block is
458
- # given.
520
+ # Calls the given block once for each element in the set, passing the element as
521
+ # parameter. Returns an enumerator if no block is given.
459
522
  #
460
523
  def each: () { (A) -> void } -> self
461
524
  | () -> Enumerator[A, self]
462
525
 
463
526
  # <!--
464
- # rdoc-file=lib/set.rb
465
- # - empty?()
527
+ # rdoc-file=set.c
528
+ # - empty? -> true or false
466
529
  # -->
467
530
  # Returns true if the set contains no elements.
468
531
  #
469
532
  def empty?: () -> bool
470
533
 
471
534
  # <!--
472
- # rdoc-file=lib/set.rb
473
- # - flatten()
535
+ # rdoc-file=set.c
536
+ # - flatten -> set
474
537
  # -->
475
- # Returns a new set that is a copy of the set, flattening each
476
- # containing set recursively.
538
+ # Returns a new set that is a copy of the set, flattening each containing set
539
+ # recursively.
477
540
  #
478
541
  def flatten: () -> Set[untyped]
479
542
 
480
543
  # <!--
481
- # rdoc-file=lib/set.rb
482
- # - intersect?(set)
544
+ # rdoc-file=set.c
545
+ # - flatten! -> self
546
+ # -->
547
+ # Equivalent to Set#flatten, but replaces the receiver with the result in place.
548
+ # Returns nil if no modifications were made.
549
+ #
550
+ def flatten!: () -> self?
551
+
552
+ # <!--
553
+ # rdoc-file=set.c
554
+ # - intersect?(set) -> true or false
483
555
  # -->
484
- # Returns true if the set and the given enumerable have at least one
485
- # element in common.
556
+ # Returns true if the set and the given enumerable have at least one element in
557
+ # common.
558
+ #
486
559
  # Set[1, 2, 3].intersect? Set[4, 5] #=> false
487
560
  # Set[1, 2, 3].intersect? Set[3, 4] #=> true
488
561
  # Set[1, 2, 3].intersect? 4..5 #=> false
@@ -491,77 +564,96 @@ class Set[unchecked out A]
491
564
  def intersect?: (Set[A] | Enumerable[A]) -> bool
492
565
 
493
566
  # <!--
494
- # rdoc-file=lib/set.rb
495
- # - keep_if(&block)
567
+ # rdoc-file=set.c
568
+ # - keep_if { |o| ... } -> self
569
+ # - keep_if -> enumerator
496
570
  # -->
497
- # Deletes every element of the set for which block evaluates to
498
- # false, and returns self. Returns an enumerator if no block is
499
- # given.
571
+ # Deletes every element of the set for which block evaluates to false, and
572
+ # returns self. Returns an enumerator if no block is given.
500
573
  #
501
574
  def keep_if: () { (A) -> untyped } -> self
502
575
 
503
576
  # <!--
504
- # rdoc-file=lib/set.rb
505
- # - size()
577
+ # rdoc-file=set.c
578
+ # - size -> integer
506
579
  # -->
507
580
  # Returns the number of elements.
508
581
  #
509
582
  def size: () -> Integer
510
583
 
511
- # <!--
512
- # rdoc-file=lib/set.rb
513
- # - length()
514
- # -->
584
+ # <!-- rdoc-file=set.c -->
585
+ # Returns the number of elements.
515
586
  #
516
587
  alias length size
517
588
 
518
589
  # <!--
519
- # rdoc-file=lib/set.rb
520
- # - merge(*enums, **nil)
590
+ # rdoc-file=set.c
591
+ # - merge(*enums, **nil) -> self
521
592
  # -->
522
- # Merges the elements of the given enumerable objects to the set and
523
- # returns self.
593
+ # Merges the elements of the given enumerable objects to the set and returns
594
+ # self.
524
595
  #
525
596
  def merge: (*_Each[A]) -> self
526
597
 
527
598
  # <!--
528
- # rdoc-file=lib/set.rb
529
- # - subset?(set)
599
+ # rdoc-file=set.c
600
+ # - subset?(set) -> true or false
530
601
  # -->
531
602
  # Returns true if the set is a subset of the given set.
532
603
  #
533
604
  def subset?: (self) -> bool
534
605
 
606
+ # <!-- rdoc-file=set.c -->
607
+ # Returns true if the set is a subset of the given set.
608
+ #
609
+ alias <= subset?
610
+
535
611
  # <!--
536
- # rdoc-file=lib/set.rb
537
- # - proper_subset?(set)
612
+ # rdoc-file=set.c
613
+ # - proper_subset?(set) -> true or false
538
614
  # -->
539
615
  # Returns true if the set is a proper subset of the given set.
540
616
  #
541
617
  def proper_subset?: (self) -> bool
542
618
 
619
+ # <!-- rdoc-file=set.c -->
620
+ # Returns true if the set is a proper subset of the given set.
621
+ #
622
+ alias < proper_subset?
623
+
543
624
  # <!--
544
- # rdoc-file=lib/set.rb
545
- # - superset?(set)
625
+ # rdoc-file=set.c
626
+ # - superset?(set) -> true or false
546
627
  # -->
547
628
  # Returns true if the set is a superset of the given set.
548
629
  #
549
630
  def superset?: (self) -> bool
550
631
 
632
+ # <!-- rdoc-file=set.c -->
633
+ # Returns true if the set is a superset of the given set.
634
+ #
635
+ alias >= superset?
636
+
551
637
  # <!--
552
- # rdoc-file=lib/set.rb
553
- # - proper_superset?(set)
638
+ # rdoc-file=set.c
639
+ # - proper_superset?(set) -> true or false
554
640
  # -->
555
641
  # Returns true if the set is a proper superset of the given set.
556
642
  #
557
643
  def proper_superset?: (self) -> bool
558
644
 
645
+ # <!-- rdoc-file=set.c -->
646
+ # Returns true if the set is a proper superset of the given set.
647
+ #
648
+ alias > proper_superset?
649
+
559
650
  # <!--
560
- # rdoc-file=lib/set.rb
561
- # - replace(enum)
651
+ # rdoc-file=set.c
652
+ # - replace(enum) -> self
562
653
  # -->
563
- # Replaces the contents of the set with the contents of the given
564
- # enumerable object and returns self.
654
+ # Replaces the contents of the set with the contents of the given enumerable
655
+ # object and returns self.
656
+ #
565
657
  # set = Set[1, 'c', :s] #=> #<Set: {1, "c", :s}>
566
658
  # set.replace([1, 2]) #=> #<Set: {1, 2}>
567
659
  # set #=> #<Set: {1, 2}>
@@ -569,52 +661,67 @@ class Set[unchecked out A]
569
661
  def replace: (_Each[A]) -> self
570
662
 
571
663
  # <!--
572
- # rdoc-file=lib/set.rb
573
- # - reset()
664
+ # rdoc-file=set.c
665
+ # - reset -> self
574
666
  # -->
575
- # Resets the internal state after modification to existing elements
576
- # and returns self.
577
- # Elements will be reindexed and deduplicated.
667
+ # Resets the internal state after modification to existing elements and returns
668
+ # self. Elements will be reindexed and deduplicated.
578
669
  #
579
670
  def reset: () -> self
580
671
 
581
672
  # <!--
582
- # rdoc-file=lib/set.rb
583
- # - select!(&block)
673
+ # rdoc-file=set.c
674
+ # - select! { |o| ... } -> self
675
+ # - select! -> enumerator
584
676
  # -->
585
- # Equivalent to Set#keep_if, but returns nil if no changes were
586
- # made. Returns an enumerator if no block is given.
677
+ # Equivalent to Set#keep_if, but returns nil if no changes were made. Returns an
678
+ # enumerator if no block is given.
587
679
  #
588
680
  def select!: () { (A) -> untyped } -> self?
589
681
 
682
+ # <!-- rdoc-file=set.c -->
683
+ # Equivalent to Set#keep_if, but returns nil if no changes were made. Returns an
684
+ # enumerator if no block is given.
685
+ #
686
+ alias filter! select!
687
+
590
688
  # <!--
591
- # rdoc-file=lib/set.rb
592
- # - subtract(enum)
689
+ # rdoc-file=set.c
690
+ # - subtract(enum) -> self
593
691
  # -->
594
- # Deletes every element that appears in the given enumerable object
595
- # and returns self.
692
+ # Deletes every element that appears in the given enumerable object and returns
693
+ # self.
596
694
  #
597
695
  def subtract: (_Each[A]) -> self
598
696
 
599
697
  # <!--
600
- # rdoc-file=lib/set.rb
601
- # - to_a()
698
+ # rdoc-file=set.c
699
+ # - to_a -> array
602
700
  # -->
603
701
  # Returns an array containing all elements in the set.
702
+ #
604
703
  # Set[1, 2].to_a #=> [1, 2]
605
704
  # Set[1, 'c', :s].to_a #=> [1, "c", :s]
606
705
  #
607
706
  def to_a: () -> Array[A]
707
+
708
+ # <!--
709
+ # rdoc-file=set.c
710
+ # - join(separator=nil)-> new_string
711
+ # -->
712
+ # Returns a string created by converting each element of the set to a string.
713
+ #
714
+ def join: (?string separator) -> String
608
715
  end
609
716
 
610
717
  %a{annotate:rdoc:skip}
611
718
  module Enumerable[unchecked out Elem]
612
719
  # <!--
613
- # rdoc-file=lib/set.rb
614
- # - to_set(klass = Set, *args, &block)
720
+ # rdoc-file=prelude.rb
721
+ # - to_set(*args, &block)
615
722
  # -->
616
- # Makes a set from the enumerable object with given arguments.
617
- # Needs to `require "set"` to use this method.
723
+ # Makes a set from the enumerable object with given arguments. Passing arguments
724
+ # to this method is deprecated.
618
725
  #
619
726
  def to_set: () -> Set[Elem]
620
727
  | [T] () { (Elem) -> T } -> Set[T]