callerの引数は0と1以外使ってるの見たことないので、どうでもいいんじゃないでしょうか。
修正してしまうのに一票。

On 05/24/2012 12:54 AM, SASADA Koichi wrote:
>  ささだです.
> 
>  caller(level) のように,caller メソッドでは何段上からバックトレースを
> 持ってくるか,というのを level という引数で指定できます.
> 
>  なんとなく,level 分だけバックトレースの情報が減るように思えるのです
> が,つまり
> 
>     caller(0).size - level == caller(level).size
> 
> となりそうなもんですが,実際はそうなりません.
> 
> 
> 例:
> 
> a = [1]
> a.map{
>   a.map{
>     a.map{
>       10.times{|i|
>         p [i, caller(i).size]
>       }
>     }
>   }
> }
> #=>
> ruby 2.0.0dev (2012-05-04 trunk 35535) [i386-mswin32_100]
> [0, 9]
> [1, 8]
> [2, 8] # 上と変わらない
> [3, 7]
> [4, 6]
> [5, 6] # 上と変わらない
> [6, 5]
> [7, 4]
> [8, 4] # 上と変わらない
> [9, 3]
> 
>  理由は,level を,VM のスタックフレームを level 個スキップする,と扱っ
> ているのですが,スタックフレームの種類によってはバックトレースに出てこな
> い場合もあるので,そのスキップされた分を level でスキップする数にいれて
> いるから,という理由です.
> 
>  1.8 だと期待通り(?)動きます.
> 
> #=> ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-cygwin]
> [0, 9]
> [1, 8]
> [2, 7]
> [3, 6]
> [4, 5]
> [5, 4]
> [6, 3]
> [7, 2]
> [8, 1]
> [9, 0]
> 
> 
>  というわけで,バグな気もするんですが,どうしたもんでしょう.これまで苦
> 情も来てないから,どうでもいいような気もするんですが.2.0 から直します?
>