interesting little bug (I think)
When generating the answer to a previous email, I ran ruby -c against
a script and got ‘syntax ok’. (as expected) I then changed an
if/else/end to if/otherwise/end, ran ruby -c again, and got ‘syntax
ok’. (not as expected). I went ahead and ran the script (with the
‘otherwise’ change) and got:
– primes_with_error.rb:29: undefined local variable or method
otherwise' for main:Object (NameError) from primes_with_error.rb:25:in
each’
from primes_with_error.rb:25
Any reason that ruby -c didn’t catch this?
thanks,
-pate
On 12/7/05, pat eyler [email protected] wrote:
When generating the answer to a previous email, I ran ruby -c against
a script and got ‘syntax ok’. (as expected) I then changed an
if/else/end to if/otherwise/end, ran ruby -c again, and got ‘syntax
ok’. (not as expected).
I can’t see your code, but my guess is that the ruby interpreter
figured that otherwise is a function (not an accidental name for
else), so it is good syntax, even though there is a runtime error for
the missing method/variable name.
pth
pat eyler schrieb:
from primes_with_error.rb:25:in `each'
from primes_with_error.rb:25
Any reason that ruby -c didn’t catch this?
Pat, this isn’t a syntax error. The syntax is correct. Just define a
method or local variable named “otherwise” and all is fine.
Regards,
Pit
Quoting pat eyler [email protected]:
ok’. (not as expected). I went ahead and ran the script (with
the ‘otherwise’ change) and got:
– primes_with_error.rb:29: undefined local variable or method
otherwise' for main:Object (NameError) from primes_with_error.rb:25:in
each’
from primes_with_error.rb:25
Any reason that ruby -c didn’t catch this?
Basically, it’s not a syntax error. It’s possible for a script to
be wrong in surprising ways but still syntactically valid.
-mental