Project

General

Profile

Actions

Bug #8920

closed

Exception when using a variable defined in end-of-line if statement

Bug #8920: Exception when using a variable defined in end-of-line if statement

Added by jfredett (Joe Fredette) about 12 years ago. Updated about 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p247
[ruby-core:57257]

Description

=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

Updated by Anonymous about 12 years ago Actions #1 [ruby-core:57258]

  • Status changed from Open to Rejected

This is intended behaviour. Variables are defined in order of their appearance in the source.

I believe matz has rejected making variables defined in the condition of a postfix if before, saying he didn't want to introduce inconsistent behaviour just for this.

Updated by nobu (Nobuyoshi Nakada) about 12 years ago Actions #2 [ruby-core:57259]

  • Description updated (diff)

Updated by jfredett (Joe Fredette) about 12 years ago Actions #3 [ruby-core:57260]

-- accidental doublepost --

Updated by jfredett (Joe Fredette) about 12 years ago Actions #4 [ruby-core:57261]

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.

Actions

Also available in: PDF Atom