From: "jfredett (Joe Fredette)" Date: 2013-09-18T22:13:20+09:00 Subject: [ruby-core:57261] [ruby-trunk - Bug #8920] Exception when using a variable defined in end-of-line if statement Issue #8920 has been updated by jfredett (Joe Fredette). Excellent, thanks charliesome for the fast response, and nobu for fixing my formatting. I'll report back to the rubinius project that this is, indeed, inconsistent behavior. ---------------------------------------- Bug #8920: Exception when using a variable defined in end-of-line if statement https://bugs.ruby-lang.org/issues/8920#change-41878 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/