mirror of https://github.com/tc39/test262.git
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
// Copyright (C) 2021 Chengzhong Wu. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
description: InstallErrorCause on abrupt completions
|
|
info: |
|
|
Error ( message [ , options ] )
|
|
|
|
...
|
|
4. Perform ? InstallErrorCause(O, options).
|
|
...
|
|
|
|
20.5.8.1 InstallErrorCause ( O, options )
|
|
|
|
1. If Type(options) is Object and ? HasProperty(options, "cause") is true, then
|
|
a. Let cause be ? Get(options, "cause").
|
|
b. Perform ! CreateNonEnumerableDataPropertyOrThrow(O, "cause", cause).
|
|
...
|
|
|
|
esid: sec-error-message
|
|
features: [error-cause]
|
|
---*/
|
|
|
|
var message = "my-message";
|
|
var options;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// CHECK#0
|
|
options = new Proxy({}, {
|
|
has(target, prop) {
|
|
if (prop === "cause") {
|
|
throw new Test262Error("HasProperty");
|
|
}
|
|
return prop in target;
|
|
},
|
|
});
|
|
assert.throws(Test262Error, function () {
|
|
new Error(message, options);
|
|
}, "HasProperty");
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// CHECK#1
|
|
options = {
|
|
get cause() {
|
|
throw new Test262Error("Get Cause");
|
|
},
|
|
};
|
|
assert.throws(Test262Error, function () {
|
|
new Error(message, options);
|
|
}, "Get Cause");
|
|
//////////////////////////////////////////////////////////////////////////////
|