From: "nobu (Nobuyoshi Nakada)" Date: 2013-09-18T22:00:56+09:00 Subject: [ruby-core:57259] [ruby-trunk - Bug #8920] Exception when using a variable defined in end-of-line if statement Issue #8920 has been updated by nobu (Nobuyoshi Nakada). Description updated ---------------------------------------- Bug #8920: Exception when using a variable defined in end-of-line if statement https://bugs.ruby-lang.org/issues/8920#change-41876 Author: jfredett (Joe Fredette) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0p247 Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin The following code raises an exception on each MRI version (exact ((%`ruby -v`%)) output attached at the end of this post): class Test def foo puts "No Exception!" end end begin t.foo if t = Test.new rescue Exception => e STDERR.puts "Exception raised! ``#{e.class}: #{e}''" exit 1 end exit 0 The exception raised is: NameError: undefined local variable or method `t' for main:Object The output I expected was "No Exception." This script was run on the following system: $ rvm --version #=> rvm 1.21.17 (stable) by Wayne E. Seguin , Michal Papis [https://rvm.io/] $ uname -a #=> Darwin JGF.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May 1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64 i386 MacBookPro8,2 Darwin (For reference, this is a mid-2011 Macbook Pro) and raises the unexpected exception on the following ruby versions: ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.3.0] ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0] It also appears to raise in JRuby, but not in Rubinius, though that may or may not be relevant for this bugtracker. Please let me know if I need to provide any other details. I put 2.0.0 in the ((%`ruby -v`%)) field, but it is reproducible on each of the MRI versions I listed above. =end -- http://bugs.ruby-lang.org/