Bug #14062
closedTop-level return allows an argument
Description
Should it be a SyntaxError, as mentioned in https://bugs.ruby-lang.org/issues/4840#note-24 ?
It seems confusing to accept it silently, as one could expect the exit code to be affected by it (that should not be the case imho).
Discovered in https://github.com/ruby/spec/pull/530
Files
Updated by duerst (Martin Dürst) over 8 years ago
Wouldn't this be equivalent to C's return statement in main()?
It is used to tell the outer process (usually a shell) about the success (0) or failure (anything else than 0) of the program.
In the average shell, you should be able to test it with e.g.
which would not print the "Previous process was successful." text because the return value was something else than 0.
Updated by Eregon (Benoit Daloze) over 8 years ago
Currently the argument is ignored.
And I think it would make little sense in a file loaded by #require to affect the global exit status if it does a "return 1".
"exit 1" can be used for that, top-level return is to avoid loading anything further in the file when it's not needed in my understanding.
Updated by matz (Yukihiro Matsumoto) over 8 years ago
- Related to Feature #4840: Allow returning from require added
Updated by matz (Yukihiro Matsumoto) over 8 years ago
I am against making it a syntax error. Adding warnings is OK (but maybe we can rely on Rubocop etc. to detect them).
Matz.
Updated by jeremyevans0 (Jeremy Evans) almost 7 years ago
Attached is a patch that adds a warning when using a top-level return with an argument.
Updated by Eregon (Benoit Daloze) almost 7 years ago
- Description updated (diff)
Updated by Eregon (Benoit Daloze) almost 7 years ago
jeremyevans0 (Jeremy Evans) wrote:
Attached is a patch that adds a warning when using a top-level return with an argument.
Thank you, it looks good to me.
Although, I would suggest to change the warning message to one of these:
Could you commit it?
Updated by jeremyevans (Jeremy Evans) almost 7 years ago
- Status changed from Open to Closed
Applied in changeset git|aa97410b0a85cb4ceb956ab943b5eee92a128411.
Warn if using return at top-level with an argument
Fixes [Bug #14062]