// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Flags: --harmony-do-expressions (function testBasic() { let f = (x = eval("var z = 42; z"), y = do { 43 }) => x + y; assertEquals(85, f()); })(); (function testReturnParam() { let f = (x = eval("var z = 42; z"), y = do { x }) => x + y; assertEquals(84, f()); })(); (function testCaptureParam() { let f = (x = eval("var z = 42; z"), y = do { () => x }) => x + y(); assertEquals(84, f()); })(); (function testScoped() { let f = (x = eval("var z = 42; z"), y = do { let z; x }) => x + y; assertEquals(84, f()); })(); (function testCaptureScoped() { let f = (x = eval("var z = 42; z"), y = do { let z; () => x }) => x + y(); assertEquals(84, f()); })(); (function testCaptureOuter() { let z = 44; let f = (x = eval("var z = 42; z"), y = do { () => z }) => x + y(); assertEquals(86, f()) })(); (function testCaptureOuterScoped() { let z = 44; let f = (x = eval("var z = 42; z"), y = do { let q; () => z }) => x + y(); assertEquals(86, f()) })(); (function testWith() { let f = (x = eval("var z = 42; z"), y = do { with ({foo: "bar"}) { () => x } }) => x + y(); assertEquals(84, f()) })(); (function testTry() { let f = (x = eval("var z = 42; z"), y = do { try { () => x } catch (e) { } }) => x + y(); assertEquals(84, f()) })(); (function testCatch() { let f = (x = eval("var z = 42; z"), y = do { try { throw 42 } catch (e) { () => x } }) => x + y(); assertEquals(84, f()) })(); (function testFinally() { let z = 44; let q; let f = (x = eval("var z = 42; z"), y = do { try { } catch (e) { } finally { q = () => z } q; }) => x + y(); assertEquals(86, f()) })(); (function testFinallyThrow() { let z = 44; let q; let f = (x = eval("var z = 42; z"), y = do { try { throw 42; } catch (e) { } finally { q = () => z } q; }) => x + y(); assertEquals(86, f()) })();