Project

General

Profile

Actions

Bug #20400

closed

Nested BEGIN{} execution order

Added by kddnewton (Kevin Newton) about 1 month ago. Updated about 1 month ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:117366]

Description

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:

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:

BEGIN {
  print "1"
  BEGIN { print "2" }
}

prints "21", and:

BEGIN {
  print "1"
  BEGIN { print "2" }
  BEGIN { print "3" }
}

prints "231", and finally:

BEGIN {
  print "1"
  BEGIN {
    print "2"
    BEGIN { print "3" }
  }
  BEGIN { print "4" }
}

prints "3241". Is this intentional?

Actions

Also available in: Atom PDF

Like0
Like0Like0