Small question about ruby -c

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:ineach’
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