[ruby-core:91913] [Ruby trunk Bug#15719] to_enum を使用した場合にバックトレースが意図しないものになる

From: mame@...
Date: 2019-03-21 06:04:31 UTC
List: ruby-core #91913
Issue #15719 has been updated by mame (Yusuke Endoh).


ありがとうございます。とりあえず明らかな型バグがあったので修正しました。

```
$ ./miniruby /tmp/test.rb 
Traceback (most recent call last):
	1: from /tmp/test.rb:in `each'
/tmp/test.rb:3:in `foo': error! (RuntimeError)
```

↑のように、嘘の行番号は出なくなりました。

----------------------------------------
Bug #15719: to_enum を使用した場合にバックトレースが意図しないものになる
https://bugs.ruby-lang.org/issues/15719#change-77242

* Author: krororo (Ryota Kitazawa)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
to_enum を使用するとバックトレースの呼び出し元が実行ファイルの1行目 each と出力されます。
再現コードの 8 行目や、to_enum に指定した foo メソッドがバックトレースに出てくるべきかと思います。

### 再現コード

```ruby
def foo
  return to_enum(__method__) unless block_given?
  raise 'error!'
  yield 1
end

enum = foo
p enum.next
```

### 実行結果

```
$ ruby /tmp/test.rb
Traceback (most recent call last):
	1: from /tmp/test.rb:1:in `each'
/tmp/test.rb:3:in `foo': error! (RuntimeError)
```


see: https://github.com/ruby/csv/issues/82



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

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next