Skip to content
Snippets Groups Projects
Commit fc160c78 authored by Leonardo Balter's avatar Leonardo Balter
Browse files

Add tests for Subclassing the built-in RegExp Objects

parent 5be3a801
No related branches found
No related tags found
No related merge requests found
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 21.2.6.1
description: Instances has the own property lastIndex
info: >
21.2.6.1 lastIndex
The value of the lastIndex property specifies the String index at which to
start the next match. It is coerced to an integer when used (see 21.2.5.2.2).
This property shall have the attributes { [[Writable]]: true, [[Enumerable]]:
false, [[Configurable]]: false }.
includes: [propertyHelper.js]
---*/
class RE extends RegExp {}
var re = new RE('39?');
re.exec('TC39');
assert.sameValue(re.lastIndex, 0);
verifyWritable(re, 'lastIndex');
verifyNotEnumerable(re, 'lastIndex');
verifyNotConfigurable(re, 'lastIndex');
\ No newline at end of file
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 21.2.3
description: Subclassing the RegExp object
info: >
21.2.3 The RegExp Constructor
...
The RegExp constructor is designed to be subclassable. It may be used as the
value of an extends clause of a class definition. Subclass constructors that
intend to inherit the specified RegExp behaviour must include a super call to
the RegExp constructor to create and initialize subclass instances with the
necessary internal slots.
---*/
class RE extends RegExp {}
var re = new RE(39);
assert.sameValue(re.test('TC39'), true);
assert.sameValue(re.test('42'), false);
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 21.2.3
description: Super need to be called to initialize internals
info: >
21.2.3 The RegExp Constructor
...
The RegExp constructor is designed to be subclassable. It may be used as the
value of an extends clause of a class definition. Subclass constructors that
intend to inherit the specified RegExp behaviour must include a super call to
the RegExp constructor to create and initialize subclass instances with the
necessary internal slots.
---*/
class RE1 extends RegExp {
constructor() {}
}
assert.throws(ReferenceError, function() {
new RE1();
});
class RE2 extends RegExp {
constructor() {
super();
}
}
new RE2();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment