Fix __proto__ parsing in object literals (#3704)
Co-authored-by: Rafal Walczyna r.walczyna@samsung.com JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
@@ -26,7 +26,7 @@ var o = {};
|
||||
o.__proto__ = Array.prototype;
|
||||
assert(o instanceof Array);
|
||||
|
||||
var obj = Object.create(null)
|
||||
var obj = Object.create(null)
|
||||
p = {};
|
||||
obj.__proto__ = p;
|
||||
assert(Object.getPrototypeOf(obj) !== p);
|
||||
@@ -54,5 +54,36 @@ try {
|
||||
assert(e instanceof TypeError);
|
||||
}
|
||||
|
||||
var o2 = { ["__proto__"] : null };
|
||||
var o2 = { ["__proto__"] : null };
|
||||
assert(o2.__proto__ === null);
|
||||
assert(Object.getPrototypeOf(o2) === Object.prototype);
|
||||
|
||||
var o3 = { __proto__ : null };
|
||||
assert(o3.__proto__ === undefined);
|
||||
assert(Object.getPrototypeOf(o3) === null);
|
||||
|
||||
var o4 = { "__proto__" : null };
|
||||
assert(o4.__proto__ === undefined);
|
||||
assert(Object.getPrototypeOf(o4) === null);
|
||||
|
||||
var __proto__ = [];
|
||||
var o5 = { __proto__ };
|
||||
assert(o5.__proto__ === __proto__);
|
||||
assert(Object.getPrototypeOf(o5) === Object.prototype);
|
||||
|
||||
var o6 = { __proto__() { return "42" } };
|
||||
assert(o6.__proto__() === "42");
|
||||
assert(Object.getPrototypeOf(o6) === Object.prototype);
|
||||
|
||||
var o7 = { __\u0070r\u006ft\u006f__: null };
|
||||
assert(o7.__proto__ === undefined);
|
||||
assert(Object.getPrototypeOf(o7) === null);
|
||||
|
||||
var o8 = { };
|
||||
o8.__proto__ = Array.prototype;
|
||||
assert(Object.getPrototypeOf(o8) === Array.prototype);
|
||||
|
||||
var str1 = '{"__proto__": [] }';
|
||||
var obj1 = JSON.parse(str1);
|
||||
assert(Object.getPrototypeOf(obj1) === Object.prototype);
|
||||
assert(Array.isArray(obj1.__proto__));
|
||||
|
||||
Reference in New Issue
Block a user