// Copyright (C) 2015 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: Initialization from a RegExp-like object es6id: 21.2.3.1 info: | 1. Let patternIsRegExp be IsRegExp(pattern). [...] 6. Else if patternIsRegExp is true, then a. Let P be Get(pattern, "source"). b. ReturnIfAbrupt(P). c. If flags is undefined, then i. Let F be Get(pattern, "flags"). ii. ReturnIfAbrupt(F). d. Else, let F be flags. [...] 10. Return RegExpInitialize(O, P, F). features: [Symbol, Symbol.match] ---*/ var obj = { source: 'source text', flags: 'i' }; var result; obj[Symbol.match] = true; result = new RegExp(obj); assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); assert.sameValue(result.source, 'source text'); assert.sameValue(result.flags, 'i'); obj[Symbol.match] = 'string'; result = new RegExp(obj); assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); assert.sameValue(result.source, 'source text'); assert.sameValue(result.flags, 'i'); obj[Symbol.match] = []; result = new RegExp(obj); assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); assert.sameValue(result.source, 'source text'); assert.sameValue(result.flags, 'i'); obj[Symbol.match] = Symbol(); result = new RegExp(obj); assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); assert.sameValue(result.source, 'source text'); assert.sameValue(result.flags, 'i'); obj[Symbol.match] = 86; result = new RegExp(obj); assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); assert.sameValue(result.source, 'source text'); assert.sameValue(result.flags, 'i'); reportCompare(0, 0);