// tests for nested scopes, labels, breaking labels and setting the result of block expressions //expect:inner //expect:outer { @outer { @middle { @inner print "inner"; break @middle; }; print "middle"; }; print "outer"; }; //expect:inner //expect:middle //expect:outer { @outer { @middle { @inner print "inner"; break @inner; }; print "middle"; }; print "outer"; }; // nothing to expect here { @outer { @middle { @inner { break @outer; }; print "inner"; }; print "middle"; }; print "outer"; }; //expect:5.0 var f = funct() { var y = 1; var z = 3; var p = 1; :result = y + (z + p); { break @function; }; :result = 10; }; print f(); //expect:15.0 f = funct(m, n) :result = m + n ; print f(f(5, 5), 5); //expect:10.0 var g = funct() :result = {@a :a = { @b :b = { @c :c = 10; }; }; } ; print g(); //expect:9.0 var h = funct() :result = {@a :a = { @b :b = { @c :a = 3; :b = 6; :c = :a + :b; }; }; } ; print h();