mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
- 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
183 lines
4.2 KiB
JavaScript
183 lines
4.2 KiB
JavaScript
// Copyright JS Foundation and other contributors, http://js.foundation
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
function check_syntax_error(code)
|
|
{
|
|
try {
|
|
eval(code)
|
|
assert(false)
|
|
} catch (e) {
|
|
assert(e instanceof SyntaxError)
|
|
}
|
|
}
|
|
|
|
function check_property(obj, name, value)
|
|
{
|
|
property = Object.getOwnPropertyDescriptor(obj, name)
|
|
assert(typeof property === "object")
|
|
assert(property.value === value)
|
|
}
|
|
|
|
check_syntax_error("class C { get a = 5 }");
|
|
check_syntax_error("class C { id1 id2 }");
|
|
check_syntax_error("class C { a = 5,6 }");
|
|
check_syntax_error("class C { set\na = 6 }");
|
|
check_syntax_error("class C { constructor }");
|
|
check_syntax_error("class C { static constructor }");
|
|
check_syntax_error("class C { constructor = 1 }");
|
|
check_syntax_error("class C { static constructor = 1 }");
|
|
check_syntax_error("class C { f = arguments }");
|
|
check_syntax_error("class C { static f = a\\u0072guments }");
|
|
check_syntax_error("class C { f = () => arguments }");
|
|
check_syntax_error("class C { f = arguments => 1 }");
|
|
check_syntax_error("class C { f = ([arguments]) => 1 }");
|
|
check_syntax_error("new class { f = eval('arguments') }");
|
|
check_syntax_error("new class { f = eval('arguments => 1') }");
|
|
|
|
var res = 10
|
|
var counter = 0
|
|
|
|
function f1() {
|
|
counter++
|
|
return 5
|
|
}
|
|
|
|
var C1 = class {
|
|
get = "a" + f1()
|
|
static; set; a = () => Math.cos(0)
|
|
v\u0061r
|
|
f\u006fr = () => this
|
|
arguments = this
|
|
}
|
|
|
|
res = new C1
|
|
check_property(res, "get", "a5")
|
|
check_property(res, "static", undefined)
|
|
check_property(res, "set", undefined)
|
|
assert(res.a() === 1)
|
|
check_property(res, "var", undefined)
|
|
assert(res.for() === res)
|
|
assert(res.arguments === res)
|
|
|
|
class C2 {
|
|
constructor(a = this.x, b = this.y) {
|
|
assert(a === undefined)
|
|
assert(b === undefined)
|
|
check_property(this, 'x', 11)
|
|
check_property(this, 'y', "ab")
|
|
}
|
|
x = 5 + 6
|
|
y = "a" + 'b'
|
|
}
|
|
|
|
res = new C2
|
|
|
|
class C3 {
|
|
constructor() {
|
|
assert(this.x === 1)
|
|
return { z:"zz" }
|
|
}
|
|
x = 1
|
|
}
|
|
|
|
class C4 extends C3 {
|
|
constructor() {
|
|
super()
|
|
assert(Object.getOwnPropertyDescriptor(this, "x") === undefined)
|
|
check_property(this, "y", 2)
|
|
check_property(this, "z", "zz")
|
|
}
|
|
y = 2
|
|
}
|
|
new C4
|
|
|
|
var o = {}
|
|
class C5 extends C3 {
|
|
'pr op' = o
|
|
3 = true
|
|
}
|
|
res = new C5
|
|
assert(Object.getOwnPropertyDescriptor(res, "x") === undefined)
|
|
check_property(res, "pr op", o)
|
|
check_property(res, "3", true)
|
|
check_property(res, "z", "zz")
|
|
|
|
class C6 {
|
|
a= () => this
|
|
b= this
|
|
}
|
|
|
|
class C7 extends C6 {
|
|
c= () => this
|
|
d= this
|
|
}
|
|
|
|
count = 0
|
|
class C8 extends C7 {
|
|
constructor() {
|
|
count++
|
|
super()
|
|
}
|
|
|
|
e= () => this
|
|
f= this
|
|
}
|
|
|
|
var res = new C8
|
|
assert(res.a() === res)
|
|
assert(res.b === res)
|
|
assert(res.c() === res)
|
|
assert(res.d === res)
|
|
assert(res.e() === res)
|
|
assert(res.f === res)
|
|
|
|
count = 0
|
|
class C9 {
|
|
a=assert(++count === 5)
|
|
a=assert(++count === 6)
|
|
a=assert(++count === 7)
|
|
a=assert(++count === 8)
|
|
static a=assert(++count === 1)
|
|
static a=assert(++count === 2)
|
|
static a=assert(++count === 3)
|
|
static a=assert(++count === 4)
|
|
}
|
|
|
|
assert(count === 4)
|
|
new C9
|
|
assert(count === 8)
|
|
|
|
count = 0
|
|
class C10 {
|
|
[(assert(++count == 1), "aa")] = assert(++count == 5);
|
|
[(assert(++count == 2), "bb")] = assert(++count == 6);
|
|
cc = assert(++count == 7);
|
|
[(assert(++count == 3), "aa")] = assert(++count == 8);
|
|
[(assert(++count == 4), "bb")] = assert(++count == 9);
|
|
}
|
|
|
|
assert(count == 4)
|
|
assert(Reflect.ownKeys(new C10).toString() === "aa,bb,cc");
|
|
assert(count == 9)
|
|
|
|
res = "p"
|
|
class C11 {
|
|
p1 = assert(Reflect.ownKeys(this).toString() === "");
|
|
[res + 2] = assert(Reflect.ownKeys(this).toString() === "p1");
|
|
[res + 1] = assert(Reflect.ownKeys(this).toString() === "p1,p2");
|
|
p3 = assert(Reflect.ownKeys(this).toString() === "p1,p2");
|
|
[res + 4] = assert(Reflect.ownKeys(this).toString() === "p1,p2,p3");
|
|
}
|
|
new C11
|