diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/promise-capability-default-closures.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/promise-capability-default-closures.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/promise-capability-default-closures.js b/deps/v8/test/mjsunit/compiler/promise-capability-default-closures.js new file mode 100644 index 0000000000..f4d8cd4e5d --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/promise-capability-default-closures.js @@ -0,0 +1,47 @@ +// 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: --allow-natives-syntax + +(function() { + var resolve, value; + (new Promise(r => resolve = r)).then(v => value = v); + function foo() { resolve(1); } + foo(); + foo(); + %OptimizeFunctionOnNextCall(foo); + foo(); + setTimeout(_ => assertEquals(1, value)); +})(); + +(function() { + var reject, value; + (new Promise((_, r) => reject = r)).catch(v => value = v); + function foo() { reject(1); } + foo(); + foo(); + %OptimizeFunctionOnNextCall(foo); + foo(); + setTimeout(_ => assertEquals(1, value)); +})(); + +(function() { + var value; + function foo(x) { return new Promise((resolve, reject) => resolve(x)); } + foo(1); + foo(1); + %OptimizeFunctionOnNextCall(foo); + foo(1).then(v => value = v); + setTimeout(_ => assertEquals(1, value)); +})(); + +(function() { + var value; + function foo(x) { return new Promise((resolve, reject) => reject(x)); } + foo(1); + foo(1); + %OptimizeFunctionOnNextCall(foo); + foo(1).catch(v => value = v); + setTimeout(_ => assertEquals(1, value)); +})(); |