
Issue #20400 has been reported by kddnewton (Kevin Newton). ---------------------------------------- Bug #20400: Nested BEGIN{} execution order https://bugs.ruby-lang.org/issues/20400 * Author: kddnewton (Kevin Newton) * Status: Open * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- Right now there are specs for the order in which `BEGIN{}` should be executed, which is the order they appear in the file. For example: ```ruby BEGIN { print "1" } print "4" BEGIN { print "2" } print "5" BEGIN { print "3" } ``` should output "12345". However, I couldn't find any tests/specs on what happens when `BEGIN{}` is nested. The order appears to be somewhat confusing, so I wanted to clarify if it was intentional or a bug. For example: ```ruby BEGIN { print "1" BEGIN { print "2" } } ``` prints "21", and: ```ruby BEGIN { print "1" BEGIN { print "2" } BEGIN { print "3" } } ``` prints "231", and finally: ```ruby BEGIN { print "1" BEGIN { print "2" BEGIN { print "3" } } BEGIN { print "4" } } ``` prints "3241". Is this intentional? -- https://bugs.ruby-lang.org/