Remove ES_NEXT macro (#4915)
- remove all '#JERRY_ESNEXT' macro - remove 5.1 build profile, update test runner accordingly (Note: all builtins are turn on by default) - move tests from tests/jerry/esnext into tests/jerry, concatenate files with same names - add skiplist to some snapshot tests that were supported only in 5.1 - fix doxygen issues that were hidden before (bc. of es.next macro) Co-authored-by: Martin Negyokru negyokru@inf.u-szeged.hu JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
@@ -207,3 +207,139 @@ assert(prop1_desc.value === 1);
|
||||
assert(prop1_desc.writable === true);
|
||||
assert(prop3_desc.value === 4);
|
||||
assert(prop3_desc.writable === true);
|
||||
|
||||
var object = {};
|
||||
var symbol = Symbol("symbol");
|
||||
|
||||
Object.defineProperties(object, {
|
||||
"foo": {
|
||||
value: true,
|
||||
writable: true
|
||||
},
|
||||
[symbol]: {
|
||||
value: "a symbol",
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
|
||||
assert (object.foo === true);
|
||||
assert (object[symbol] === "a symbol");
|
||||
|
||||
try {
|
||||
Object.defineProperties(undefined, {
|
||||
[symbol]: {
|
||||
value: "a symbol",
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
}
|
||||
|
||||
// If one of the properties is wrong than it shouldn't update the object.
|
||||
var obj2 = {
|
||||
a: 5
|
||||
};
|
||||
try {
|
||||
Object.defineProperties(obj2, {
|
||||
"foo": {
|
||||
value: true,
|
||||
writable: true
|
||||
},
|
||||
[symbol]: {
|
||||
value: "a symbol",
|
||||
set: 3
|
||||
}
|
||||
});
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
assert (obj2.foo === undefined);
|
||||
assert (obj2[symbol] === undefined);
|
||||
assert (obj2.a === 5);
|
||||
}
|
||||
|
||||
// Define accessors
|
||||
var object = {};
|
||||
Object.defineProperties(object, {
|
||||
"foo": {
|
||||
value: 42,
|
||||
writable: true,
|
||||
},
|
||||
[symbol]: {
|
||||
get: function() { return this.foo },
|
||||
set: function(v) { this.foo = v }
|
||||
}
|
||||
});
|
||||
|
||||
assert (object[symbol] === 42);
|
||||
object[symbol] = "baz";
|
||||
assert (object[symbol] === "baz");
|
||||
|
||||
// Define get method which throws error
|
||||
var object = {};
|
||||
var props = {
|
||||
[symbol]: {
|
||||
value: 3,
|
||||
writable: true
|
||||
},
|
||||
get bar() {
|
||||
throw new TypeError("foo");
|
||||
return { value : 2, writable : true };
|
||||
},
|
||||
};
|
||||
|
||||
try {
|
||||
Object.defineProperties(object, props);
|
||||
assert (false);
|
||||
} catch (e) {
|
||||
assert (e instanceof TypeError);
|
||||
assert (e.message === "foo");
|
||||
}
|
||||
// Define get method which deletes a property
|
||||
var object = {};
|
||||
Object.defineProperties(object, {
|
||||
"foo": {
|
||||
value: 42,
|
||||
writable: true,
|
||||
},
|
||||
[symbol]: {
|
||||
value: "a symbol",
|
||||
configurable: true
|
||||
},
|
||||
"bar": {
|
||||
get: function() {
|
||||
delete this[symbol];
|
||||
return this.foo;
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
assert (object[symbol] === "a symbol");
|
||||
assert (object.bar === 42);
|
||||
assert (object[symbol] === undefined);
|
||||
|
||||
var object = {};
|
||||
var props = {
|
||||
[symbol]: {
|
||||
value: "a symbol",
|
||||
configurable: true
|
||||
},
|
||||
get bar() {
|
||||
delete props[symbol];
|
||||
delete props.prop1;
|
||||
return { value : 2, writable : true };
|
||||
},
|
||||
prop1: {
|
||||
value: 3,
|
||||
writable: true,
|
||||
},
|
||||
};
|
||||
|
||||
Object.defineProperties(object, props);
|
||||
var bar_desc = Object.getOwnPropertyDescriptor(object, 'bar');
|
||||
assert(bar_desc.value === 2);
|
||||
assert(bar_desc.writable === true);
|
||||
assert(object.prop1 === undefined);
|
||||
assert(object[symbol] === undefined);
|
||||
|
||||
Reference in New Issue
Block a user