Bug 821850 - Properly propagate |strict| in JSObject::deleteByValue. r=jorendorff

This commit is contained in:
Bobby Holley 2013-02-08 14:24:19 +00:00
parent 340661f4dc
commit bae9282c5c
2 changed files with 11 additions and 2 deletions

View File

@ -0,0 +1,9 @@
load(libdir + "asserts.js");
m={}
Object.defineProperty(m, 'p', {value: 3});
assertThrowsInstanceOf(function() {"use strict"; delete m.p;}, TypeError);
x = new Proxy(m, {})
assertEq(x.p, 3);
assertEq((function fun() {"use strict"; return delete x.p; })(), false);

View File

@ -1623,10 +1623,10 @@ JSObject::deleteByValue(JSContext *cx, HandleObject obj,
return false;
if (name->isIndex(&index))
return deleteElement(cx, obj, index, rval, false);
return deleteElement(cx, obj, index, rval, strict);
Rooted<PropertyName*> propname(cx, name->asPropertyName());
return deleteProperty(cx, obj, propname, rval, false);
return deleteProperty(cx, obj, propname, rval, strict);
}
JS_FRIEND_API(bool)