mirror of
https://github.com/tc39/test262.git
synced 2025-07-24 22:45:10 +02:00
Add tests for Subclassing the built-in RegExp Objects
This commit is contained in:
parent
5be3a8019d
commit
fc160c78ad
26
test/language/subclassing/RegExp/lastIndex.js
Normal file
26
test/language/subclassing/RegExp/lastIndex.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// 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');
|
23
test/language/subclassing/RegExp/regular-subclassing.js
Normal file
23
test/language/subclassing/RegExp/regular-subclassing.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: 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);
|
32
test/language/subclassing/RegExp/super-must-be-called.js
Normal file
32
test/language/subclassing/RegExp/super-must-be-called.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// 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();
|
Loading…
x
Reference in New Issue
Block a user