var BUGNUMBER = 1147817; var summary = "RegExp constructor with pattern with @@match."; print(BUGNUMBER + ": " + summary); var matchValue; var constructorValue; var matchGet; var constructorGet; var sourceGet; var flagsGet; function reset() { matchGet = false; constructorGet = false; sourceGet = false; flagsGet = false; } var obj = { get [Symbol.match]() { matchGet = true; return matchValue; }, get constructor() { constructorGet = true; return constructorValue; }, get source() { sourceGet = true; return "foo"; }, get flags() { flagsGet = true; return "i"; }, toString() { return "bar"; } }; matchValue = true; constructorValue = function() {}; reset(); assertEq(RegExp(obj).toString(), "/foo/i"); assertEq(matchGet, true); assertEq(constructorGet, true); assertEq(sourceGet, true); assertEq(flagsGet, true); reset(); assertEq(RegExp(obj, "g").toString(), "/foo/g"); assertEq(matchGet, true); assertEq(constructorGet, false); assertEq(sourceGet, true); assertEq(flagsGet, false); matchValue = false; constructorValue = function() {}; reset(); assertEq(RegExp(obj).toString(), "/bar/"); assertEq(matchGet, true); assertEq(constructorGet, false); assertEq(sourceGet, false); assertEq(flagsGet, false); reset(); assertEq(RegExp(obj, "g").toString(), "/bar/g"); assertEq(matchGet, true); assertEq(constructorGet, false); assertEq(sourceGet, false); assertEq(flagsGet, false); matchValue = true; constructorValue = RegExp; reset(); assertEq(RegExp(obj), obj); assertEq(matchGet, true); assertEq(constructorGet, true); assertEq(sourceGet, false); assertEq(flagsGet, false); if (typeof reportCompare === "function") reportCompare(true, true);