Bug #10763
closeddo not receive TracePoint event for elsif
Description
Here is a simple test which shows that we do not receive TracePoint event for line with elsif,
and so it is impossible to implement debugger which will be able to set breakpoint on that line
(originally reported agains RubyMine's debugger - https://youtrack.jetbrains.com/issue/RUBY-14452)
trace = TracePoint.new do |tp|
printf "%8s %s:%-2d %13s\n", tp.event, tp.path, tp.lineno, tp.method_id
end
def method1; false end
def method2; true end
trace.enable
if method1
1
elsif method2
2
end
Here is an output I'v got with 2.2.0 (the same problem we have with 1.9, 2.0, and 2.1)
c_return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:7 enable
line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:9
call /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5 method1
line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5 method1
return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:5 method1
call /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6 method2
line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6 method2
return /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:6 method2
line /Users/user/work/tests/slim-tests/ruby/debugger/ruby-14452.rb:12
c_return -e:1 load
IMHO any user does expect that it should be possible to set breakpoint on "elsif" to be able to evaluate condition.
Updated by angarciaba (Angel Garcia) about 8 years ago
Even more strange: the problem disappears if you enclose the condition between parentheses. In the Oleg Sukhodolsky example:
elsif (method2)
Updated by nobu (Nobuyoshi Nakada) about 8 years ago
- Status changed from Open to Closed
Applied in changeset r54893.
parse.y: trace elsif
- parse.y (new_if_gen): set newline flag to NODE_IF to trace all
if/elsif statements. [ruby-core:67720] [Bug #10763]
Updated by usa (Usaku NAKAMURA) almost 8 years ago
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED
Updated by usa (Usaku NAKAMURA) almost 8 years ago
- Backport changed from 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: WONTFIX, 2.2: DONE, 2.3: REQUIRED
ruby_2_2 r55360 merged revision(s) 54893.
Updated by usa (Usaku NAKAMURA) almost 8 years ago
about ruby_2_2, new_if_gen()
does not exist.
then, call newline_node()
directly in the rule definition of if_tail
.
Updated by nagachika (Tomoyuki Chikanaga) almost 8 years ago
- Backport changed from 2.1: WONTFIX, 2.2: DONE, 2.3: REQUIRED to 2.1: WONTFIX, 2.2: DONE, 2.3: DONE
ruby_2_3 r55382 merged revision(s) 54893.