mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 11:45:37 +00:00
Bug 1219757 - Part 0: Remove RegExp.multiline warning. r=till
This commit is contained in:
parent
399cac9177
commit
8b3aa73ad5
@ -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_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_lastMatch_getter, return res->createLastMatch(cx, args.rval()))
|
||||||
DEFINE_STATIC_GETTER(static_lastParen_getter, return res->createLastParen(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()))
|
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;
|
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 bool
|
||||||
static_multiline_setter(JSContext* cx, unsigned argc, Value* vp)
|
static_multiline_setter(JSContext* cx, unsigned argc, Value* vp)
|
||||||
{
|
{
|
||||||
@ -729,9 +701,6 @@ static_multiline_setter(JSContext* cx, unsigned argc, Value* vp)
|
|||||||
if (!res)
|
if (!res)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!WarnOnceAboutRegExpMultiline(cx))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
bool b = ToBoolean(args.get(0));
|
bool b = ToBoolean(args.get(0));
|
||||||
res->setMultiline(cx, b);
|
res->setMultiline(cx, b);
|
||||||
args.rval().setBoolean(b);
|
args.rval().setBoolean(b);
|
||||||
|
@ -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;");
|
|
@ -443,7 +443,6 @@ MSG_DEF(JSMSG_UNDEFINED_CURRENCY, 0, JSEXN_TYPEERR, "undefined currency in
|
|||||||
// RegExp
|
// RegExp
|
||||||
MSG_DEF(JSMSG_BACK_REF_OUT_OF_RANGE, 0, JSEXN_SYNTAXERR, "back reference out of range in regular expression")
|
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_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_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_DECIMAL_ESCAPE, 0, JSEXN_SYNTAXERR, "invalid decimal escape in regular expression")
|
||||||
MSG_DEF(JSMSG_INVALID_GROUP, 0, JSEXN_SYNTAXERR, "invalid regexp group")
|
MSG_DEF(JSMSG_INVALID_GROUP, 0, JSEXN_SYNTAXERR, "invalid regexp group")
|
||||||
|
@ -52,7 +52,6 @@ JSCompartment::JSCompartment(Zone* zone, const JS::CompartmentOptions& options =
|
|||||||
marked(true),
|
marked(true),
|
||||||
warnedAboutFlagsArgument(false),
|
warnedAboutFlagsArgument(false),
|
||||||
warnedAboutExprClosure(false),
|
warnedAboutExprClosure(false),
|
||||||
warnedAboutRegExpMultiline(false),
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
firedOnNewGlobalObject(false),
|
firedOnNewGlobalObject(false),
|
||||||
#endif
|
#endif
|
||||||
|
@ -296,7 +296,6 @@ struct JSCompartment
|
|||||||
bool marked;
|
bool marked;
|
||||||
bool warnedAboutFlagsArgument;
|
bool warnedAboutFlagsArgument;
|
||||||
bool warnedAboutExprClosure;
|
bool warnedAboutExprClosure;
|
||||||
bool warnedAboutRegExpMultiline;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
bool firedOnNewGlobalObject;
|
bool firedOnNewGlobalObject;
|
||||||
|
Loading…
Reference in New Issue
Block a user