--- /dev/null
+function direct() {
+ return arguments;
+}
+
+function scoped(a) {
+ if (!effectful42())
+ return function() { return a; }
+ return arguments;
+}
+
+function foo(a) {
+ try {
+ return a[0];
+ } catch (e) {
+ return -23;
+ }
+}
+
+for (var i = 0; i < 100; ++i) {
+ var result = foo(scoped(42));
+ if (result != 42)
+ throw "Error: bad result: " + result;
+}
+
+for (var i = 0; i < 100; ++i) {
+ var result = foo(direct(42));
+ if (result != 42)
+ throw "Error: bad result: " + result;
+}
+