Pick up the latest branch-head for V8 5.1. This branch brings in improved language support and performance improvements. For full details: http://v8project.blogspot.com/2016/04/v8-release-51.html * Picks up the latest branch head for 5.1 [1] * Edit v8 gitignore to allow trace_event copy * Update V8 DEP trace_event as per deps/v8/DEPS [2] [1] https://chromium.googlesource.com/v8/v8.git/+/dc81244 [2] https://chromium.googlesource.com/chromium/src/base/trace_event/common/+/c8c8665 PR-URL: https://github.com/nodejs/node/pull/7016 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
// Copyright 2016 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.
|
|
|
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=595319
|
|
// Ensure exceptions are checked for by Array.prototype.concat from adding
|
|
// an element, and that elements are added to array subclasses appropriately
|
|
|
|
// If adding a property does throw, the exception is propagated
|
|
class MyException extends Error { }
|
|
class NoDefinePropertyArray extends Array {
|
|
constructor(...args) {
|
|
super(...args);
|
|
return new Proxy(this, {
|
|
defineProperty() { throw new MyException(); }
|
|
});
|
|
}
|
|
}
|
|
assertThrows(() => new NoDefinePropertyArray().concat([1]), MyException);
|
|
|
|
// Ensure elements are added to the instance, rather than calling [[Set]].
|
|
class ZeroGetterArray extends Array { get 0() {} };
|
|
assertArrayEquals([1], new ZeroGetterArray().concat(1));
|
|
|
|
// Frozen arrays lead to throwing
|
|
|
|
class FrozenArray extends Array {
|
|
constructor(...args) { super(...args); Object.freeze(this); }
|
|
}
|
|
assertThrows(() => new FrozenArray().concat([1]), TypeError);
|
|
|
|
// Non-configurable non-writable zero leads to throwing
|
|
class ZeroFrozenArray extends Array {
|
|
constructor(...args) {
|
|
super(...args);
|
|
Object.defineProperty(this, 0, {value: 1});
|
|
}
|
|
}
|
|
assertThrows(() => new ZeroFrozenArray().concat([1]), TypeError);
|