mirror of https://github.com/tc39/test262.git
Add tests for Subclassing the built-in RegExp Objects
This commit is contained in:
parent
5be3a8019d
commit
fc160c78ad
|
@ -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');
|
|
@ -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);
|
|
@ -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…
Reference in New Issue