Issue #9989 has been updated by Rob Yoder.


This occurs under Array.sort and Array.sort! (http://www.ruby-doc.org/core-2.1.2/Array.html#method-i-sort)

Enumerable.sort vaguely states:

> The block should return -1, 0, or +1 depending on the comparison between a and b.

(http://ruby-doc.org/core-2.1.2/Enumerable.html#method-i-sort)

----------------------------------------
Bug #9989: Docs give wrong information for sort block return values
https://bugs.ruby-lang.org/issues/9989#change-47427

* Author: Rob Yoder
* Status: Open
* Priority: Normal
* Assignee: Zachary Scott
* Category: doc
* Target version: current: 2.2.0
* ruby -v: 2.1.2
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
Under the Array.sort documentation, this statement is made:

> Comparisons for the sort will be done using the <=> operator or using an optional code block.
> 
> The block must implement a comparison between a and b, and return -1, when a follows b, 0 when a and b are equivalent, or +1 if b follows a.

This is incorrect.  The default sort block is `{ |a,b| a <=> b }`. That is ascending sort, where `2` would follow `1`. However, `1 <=> 2` returns `-1`, not `+1` as the statement claims. The statement should read:

> The block must implement a comparison between a and b, and return -1 when b follows a, 0 when a and b are equivalent, or +1 if a follows b.



-- 
https://bugs.ruby-lang.org/