Add tests for Subclassing the built-in Error Object

This commit is contained in:
Leonardo Balter 2016-01-07 17:23:31 -05:00
parent a5b3c84fbd
commit 390c7a7fdb
3 changed files with 81 additions and 0 deletions

View File

@ -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');

View 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');

View 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');
});