From: duerst@... Date: 2017-10-27T11:12:44+00:00 Subject: [ruby-core:83591] [Ruby trunk Bug#14062] Top-level return allows an argument Issue #14062 has been updated by duerst (Martin D��rst). 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. ``` ruby test.rb && echo "Previous process was successful." ``` which would not print the `"Previous process was successful."` text because the return value was something else than 0. ---------------------------------------- Bug #14062: Top-level return allows an argument https://bugs.ruby-lang.org/issues/14062#change-67615 * Author: Eregon (Benoit Daloze) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-10-26 trunk 60450) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- ~~~ ruby puts "Here" return 42 # or :foo, or any value ~~~ ~~~ ruby test.rb Here ~~~ 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 exact code to be affected by it (that should not be the case imho). Discovered in https://github.com/ruby/spec/pull/530 -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>