mirror of
https://github.com/tc39/test262.git
synced 2025-07-23 14:04:51 +02:00
Add tests for Subclassing the built-in Error Object
This commit is contained in:
parent
a5b3c84fbd
commit
390c7a7fdb
@ -0,0 +1,36 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 19.5.1.1
|
||||||
|
description: >
|
||||||
|
A new instance has the message property if created with a parameter
|
||||||
|
info: >
|
||||||
|
19.5.1.1 Error ( message )
|
||||||
|
|
||||||
|
...
|
||||||
|
4. If message is not undefined, then
|
||||||
|
a. Let msg be ToString(message).
|
||||||
|
b. ReturnIfAbrupt(msg).
|
||||||
|
c. Let msgDesc be the PropertyDescriptor{[[Value]]: msg, [[Writable]]: true,
|
||||||
|
[[Enumerable]]: false, [[Configurable]]: true}.
|
||||||
|
d. Let status be DefinePropertyOrThrow(O, "message", msgDesc).
|
||||||
|
...
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
|
||||||
|
class Err extends Error {}
|
||||||
|
|
||||||
|
Err.prototype.message = 'custom-error';
|
||||||
|
|
||||||
|
var err1 = new Err('foo 42');
|
||||||
|
assert.sameValue(err1.message, 'foo 42');
|
||||||
|
assert(err1.hasOwnProperty('message'));
|
||||||
|
|
||||||
|
verifyWritable(err1, 'message');
|
||||||
|
verifyNotEnumerable(err1, 'message');
|
||||||
|
verifyConfigurable(err1, 'message');
|
||||||
|
|
||||||
|
var err2 = new Err();
|
||||||
|
assert.sameValue(err2.hasOwnProperty('message'), false);
|
||||||
|
assert.sameValue(err2.message, 'custom-error');
|
22
test/language/subclassing/Error/regular-subclassing.js
Normal file
22
test/language/subclassing/Error/regular-subclassing.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 19.5.1
|
||||||
|
description: Subclassing the Error object
|
||||||
|
info: >
|
||||||
|
19.5.1 The Error Constructor
|
||||||
|
|
||||||
|
...
|
||||||
|
The Error constructor is designed to be subclassable. It may be used as the
|
||||||
|
alue of an extends clause of a class definition. Subclass constructors that
|
||||||
|
intend to inherit the specified Error behaviour must include a super call to
|
||||||
|
the Error constructor to create and initialize subclass instances with a
|
||||||
|
[[ErrorData]] internal slot.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
class CustomError extends Error {}
|
||||||
|
|
||||||
|
var err = new CustomError('foo 42');
|
||||||
|
|
||||||
|
assert.sameValue(err.message, 'foo 42');
|
||||||
|
assert.sameValue(err.name, 'Error');
|
23
test/language/subclassing/Error/super-must-be-called.js
Normal file
23
test/language/subclassing/Error/super-must-be-called.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es6id: 19.5.1
|
||||||
|
description: Super need to be called to initialize internals
|
||||||
|
info: >
|
||||||
|
19.5.1 The Error Constructor
|
||||||
|
|
||||||
|
...
|
||||||
|
The Error constructor is designed to be subclassable. It may be used as the
|
||||||
|
alue of an extends clause of a class definition. Subclass constructors that
|
||||||
|
intend to inherit the specified Error behaviour must include a super call to
|
||||||
|
the Error constructor to create and initialize subclass instances with a
|
||||||
|
[[ErrorData]] internal slot.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
class CustomError extends Error {
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(ReferenceError, function() {
|
||||||
|
new CustomError('foo');
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user