From: mtsmfm@... Date: 2017-03-23T02:00:36+00:00 Subject: [ruby-core:80287] [Ruby trunk Bug#13222] Array#sum inconsistency when init value is non-numeric Issue #13222 has been updated by mtsmfm (Fumiaki Matsushima). I confirmed this behavior appears not only 2.5.0dev but also 2.4.x. ~~~ $ docker run ruby:2.4.1 ruby -e "p [0].sum('a')" "a" ~~~ ~~~ $ docker run ruby:2.4.0 ruby -e "p [0].sum('a')" "a" ~~~ Should we backport the patch? ---------------------------------------- Bug #13222: Array#sum inconsistency when init value is non-numeric https://bugs.ruby-lang.org/issues/13222#change-63739 * Author: matsuda (Akira Matsuda) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-02-17 trunk 57644) [x86_64-darwin15] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Since Array#sum skips calling plus for `0` https://github.com/ruby/ruby/blob/c85a58d/array.c#L5831-L5832, it doesn't raise when the receiver array consists of 0 only, even when the "init" value is non-numeric. ``` % ruby -e "p [1].sum('a')" -e:1:in `sum': String can't be coerced into Integer (TypeError) ``` ``` % ruby -e "p [0].sum('a')" "a" ``` ``` % ruby -e "p [0, 0, 0].sum('a')" "a" ``` -- https://bugs.ruby-lang.org/ Unsubscribe: