diff --git a/array.c b/array.c
index 2ebd28f8f2..cf554a55af 100644
--- a/array.c
+++ b/array.c
@@ -7726,38 +7726,41 @@ rb_ary_drop_while(VALUE ary)
/*
* call-seq:
- * array.any? -> true or false
- * array.any? {|element| ... } -> true or false
- * array.any?(obj) -> true or false
+ * any? -> true or false
+ * any?(object) -> true or false
+ * any? {|element| ... } -> true or false
*
- * Returns +true+ if any element of +self+ meets a given criterion.
+ * Returns whether for any element of +self+, a given criterion is satisfied.
*
- * If +self+ has no element, returns +false+ and argument or block
- * are not used.
+ * With no block and no argument, returns whether any element of +self+ is truthy:
*
- * With no block given and no argument, returns +true+ if +self+ has any truthy element,
- * +false+ otherwise:
+ * [nil, false, []].any? # => true # Array object is truthy.
+ * [nil, false, {}].any? # => true # Hash object is truthy.
+ * [nil, false, ''].any? # => true # String object is truthy.
+ * [nil, false].any? # => false # Nil and false are not truthy.
*
- * [nil, 0, false].any? # => true
- * [nil, false].any? # => false
- * [].any? # => false
+ * With argument +object+ given,
+ * returns whether object === ele for any element +ele+ in +self+:
*
- * With a block given and no argument, calls the block with each element in +self+;
- * returns +true+ if the block returns any truthy value, +false+ otherwise:
+ * [nil, false, 0].any?(0) # => true
+ * [nil, false, 1].any?(0) # => false
+ * [nil, false, 'food'].any?(/foo/) # => true
+ * [nil, false, 'food'].any?(/bar/) # => false
*
- * [0, 1, 2].any? {|element| element > 1 } # => true
- * [0, 1, 2].any? {|element| element > 2 } # => false
+ * With a block given,
+ * calls the block with each element in +self+;
+ * returns whether the block returns any truthy value:
*
- * If argument +obj+ is given, returns +true+ if +obj+.=== any element,
- * +false+ otherwise:
+ * [0, 1, 2].any? {|ele| ele < 1 } # => true
+ * [0, 1, 2].any? {|ele| ele < 0 } # => false
*
- * ['food', 'drink'].any?(/foo/) # => true
- * ['food', 'drink'].any?(/bar/) # => false
- * [].any?(/foo/) # => false
- * [0, 1, 2].any?(1) # => true
- * [0, 1, 2].any?(3) # => false
+ * With both a block and argument +object+ given,
+ * ignores the block and uses +object+ as above.
*
- * Related: Enumerable#any?
+ * Special case: returns +false+ if +self+ is empty
+ * (regardless of any given argument or block).
+ *
+ * Related: Array#all?, Array#none?, Array#one?.
*/
static VALUE