diff options
Diffstat (limited to 'deps/v8/test/mjsunit/async-stack-traces-prepare-stacktrace-2.js')
-rw-r--r-- | deps/v8/test/mjsunit/async-stack-traces-prepare-stacktrace-2.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/async-stack-traces-prepare-stacktrace-2.js b/deps/v8/test/mjsunit/async-stack-traces-prepare-stacktrace-2.js new file mode 100644 index 0000000000..8126a83dc9 --- /dev/null +++ b/deps/v8/test/mjsunit/async-stack-traces-prepare-stacktrace-2.js @@ -0,0 +1,31 @@ +// Copyright 2018 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: --async-stack-traces + +// Check that Error.prepareStackTrace doesn't expose strict +// mode closures, even in the presence of async frames. +Error.prepareStackTrace = (e, frames) => { + assertEquals(undefined, frames[0].getFunction()); + assertEquals(two.name, frames[0].getFunctionName()); + assertEquals(undefined, frames[1].getFunction()); + assertEquals(one.name, frames[1].getFunctionName()); + return frames; +}; + +async function one(x) { + return await two(x); +} + +async function two(x) { + "use strict"; + try { + x = await x; + throw new Error(); + } catch (e) { + return e.stack; + } +} + +one(1).catch(e => setTimeout(_ => {throw e}, 0)); |