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
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
···
On 12/7/05, pat eyler <pat.eyler@gmail.com> 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).
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?
Pat, this isn't a syntax error. The *syntax* is correct. Just define a method or local variable named "otherwise" and all is fine.
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.