Bug 1219757 - Part 0: Remove RegExp.multiline warning. r=till

This commit is contained in:
Tooru Fujisawa 2016-02-21 20:40:37 +09:00
parent 399cac9177
commit 8b3aa73ad5
5 changed files with 2 additions and 59 deletions

View File

@ -648,6 +648,8 @@ const JSFunctionSpec js::regexp_methods[] = {
}
DEFINE_STATIC_GETTER(static_input_getter, return res->createPendingInput(cx, args.rval()))
DEFINE_STATIC_GETTER(static_multiline_getter, args.rval().setBoolean(res->multiline());
return true)
DEFINE_STATIC_GETTER(static_lastMatch_getter, return res->createLastMatch(cx, args.rval()))
DEFINE_STATIC_GETTER(static_lastParen_getter, return res->createLastParen(cx, args.rval()))
DEFINE_STATIC_GETTER(static_leftContext_getter, return res->createLeftContext(cx, args.rval()))
@ -691,36 +693,6 @@ static_input_setter(JSContext* cx, unsigned argc, Value* vp)
return true;
}
static bool
WarnOnceAboutRegExpMultiline(JSContext* cx)
{
if (!cx->compartment()->warnedAboutRegExpMultiline) {
if (!JS_ReportErrorFlagsAndNumber(cx, JSREPORT_WARNING, GetErrorMessage, nullptr,
JSMSG_DEPRECATED_REGEXP_MULTILINE))
{
return false;
}
cx->compartment()->warnedAboutRegExpMultiline = true;
}
return true;
}
static bool
static_multiline_getter(JSContext* cx, unsigned argc, Value* vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
RegExpStatics* res = cx->global()->getRegExpStatics(cx);
if (!res)
return false;
if (!WarnOnceAboutRegExpMultiline(cx))
return false;
args.rval().setBoolean(res->multiline());
return true;
}
static bool
static_multiline_setter(JSContext* cx, unsigned argc, Value* vp)
{
@ -729,9 +701,6 @@ static_multiline_setter(JSContext* cx, unsigned argc, Value* vp)
if (!res)
return false;
if (!WarnOnceAboutRegExpMultiline(cx))
return false;
bool b = ToBoolean(args.get(0));
res->setMultiline(cx, b);
args.rval().setBoolean(b);

View File

@ -1,23 +0,0 @@
// RegExp.multiline access should be warned once and only once.
function testWarn(code) {
enableLastWarning();
var g = newGlobal();
g.code = code;
g.eval('eval(code)');
var warning = getLastWarning();
assertEq(warning !== null, true, "warning should be caught for " + code);
assertEq(warning.name, "SyntaxError");
clearLastWarning();
g.eval('eval(code)');
warning = getLastWarning();
assertEq(warning, null, "warning should not be caught for 2nd ocurrence");
disableLastWarning();
}
testWarn("var a = RegExp.multiline;");
testWarn("RegExp.multiline = true;");
testWarn("var a = RegExp['$*'];");
testWarn("RegExp['$*'] = true;");

View File

@ -443,7 +443,6 @@ MSG_DEF(JSMSG_UNDEFINED_CURRENCY, 0, JSEXN_TYPEERR, "undefined currency in
// RegExp
MSG_DEF(JSMSG_BACK_REF_OUT_OF_RANGE, 0, JSEXN_SYNTAXERR, "back reference out of range in regular expression")
MSG_DEF(JSMSG_BAD_CLASS_RANGE, 0, JSEXN_SYNTAXERR, "invalid range in character class")
MSG_DEF(JSMSG_DEPRECATED_REGEXP_MULTILINE, 0, JSEXN_SYNTAXERR, "RegExp.multiline is deprecated. Use m flag instead")
MSG_DEF(JSMSG_ESCAPE_AT_END_OF_REGEXP, 0, JSEXN_SYNTAXERR, "\\ at end of pattern")
MSG_DEF(JSMSG_INVALID_DECIMAL_ESCAPE, 0, JSEXN_SYNTAXERR, "invalid decimal escape in regular expression")
MSG_DEF(JSMSG_INVALID_GROUP, 0, JSEXN_SYNTAXERR, "invalid regexp group")

View File

@ -52,7 +52,6 @@ JSCompartment::JSCompartment(Zone* zone, const JS::CompartmentOptions& options =
marked(true),
warnedAboutFlagsArgument(false),
warnedAboutExprClosure(false),
warnedAboutRegExpMultiline(false),
#ifdef DEBUG
firedOnNewGlobalObject(false),
#endif

View File

@ -296,7 +296,6 @@ struct JSCompartment
bool marked;
bool warnedAboutFlagsArgument;
bool warnedAboutExprClosure;
bool warnedAboutRegExpMultiline;
#ifdef DEBUG
bool firedOnNewGlobalObject;