From: ruby-core@... Date: 2017-11-01T14:30:26+00:00 Subject: [ruby-core:83636] [Ruby trunk Bug#14074] TracePoint#new without a block should not raise ThreadError Issue #14074 has been updated by marcandre (Marc-Andre Lafortune). Assignee set to marcandre (Marc-Andre Lafortune) Target version set to 2.5 Is there an objection to change this to an ArgumentError? I wouldn't be asking if the documentation wasn't mentioning it, but sadly it is. I believe the reason it a ThreadError is raised is that: 1) the code in question was simply copy-pasted from thread.c or thread_sync.c: ~~~ $ grep "must be called with a block" *.c thread.c: rb_raise(rb_eThreadError, "must be called with a block"); thread_sync.c: rb_raise(rb_eThreadError, "must be called with a block"); vm_trace.c: rb_raise(rb_eThreadError, "must be called with a block"); ~~~ 2) When Zack documented the TracePoint API, he simply wrote what the behavior was, without questioning it. [#6895] I don't believe there's actual cases in production of TracePoint.new being called without a black. Nevertheless, we might as well fix this. So unless there's an objection, I will change the code to raise an ArgumentError and modify the documentation so it does not mention the class of error raised, like in the rest of the documentation. FWIW, `Thread.new` and `Mutex#synchronize` raising `ThreadError` also seem wrong to be me. ---------------------------------------- Bug #14074: TracePoint#new without a block should not raise ThreadError https://bugs.ruby-lang.org/issues/14074#change-67664 * Author: atul (Atul Bhosale) * Status: Open * Priority: Normal * Assignee: marcandre (Marc-Andre Lafortune) * Target version: 2.5 * ruby -v: trunk * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- While working on RubySpecs with Marc-Andre Lafortune, we discovered that TracePoint.new raises a ThreadError instead of ArgumentError. For example : ~~~ ruby TracePoint.new => # => ThreadError: must be called with a block ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: