jerryscript/tests/jerry/class-fields2.js
Szilagyi Adam 4924f9fd31
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
2022-01-31 16:46:00 +01:00

140 lines
2.4 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.
var count = 0
class C1 {
error = assert(++count === 1)
error = function() { throw 40.5 }()
}
try {
new C1
assert(false)
} catch(e) {
assert(e === 40.5)
assert(count === 1)
}
count = 0
class C2 {
constructor(a = assert(++count === 1)) {}
error = function() { throw "Err" }()
error = assert(false)
}
try {
new C2
assert(false)
} catch(e) {
assert(e === "Err")
assert(count === 1)
}
count = 0
var o = {}
class C3 extends class {
error = function() { throw o }()
} {
constructor() {
assert(++count === 1)
super()
assert(false)
}
}
try {
new C3
assert(false)
} catch (e) {
assert(e === o)
assert(count === 1)
}
count = 0
class C4 {
constructor() {
assert(++count === 2)
}
a = assert(++count === 1)
}
class C5 extends C4 {
ok = assert(++count === 3)
error = function() { assert(++count === 4); throw "Except" }()
never = assert(false)
}
try {
new C5
assert(false)
} catch (e) {
assert(e === "Except")
assert(count === 4)
}
count = 0
o = []
class C6 {
a = assert(++count === 2)
}
class C7 extends C6 {
constructor() {
assert(++count === 1)
eval('super()')
assert(false)
}
ok = assert(++count === 3)
error = function() { assert(++count === 4); throw o }()
never = assert(false)
}
try {
new C7
assert(false)
} catch (e) {
assert(e === o)
assert(count === 4)
}
var res
class C8 {
/* Create a non-configurable accessor */
a = (res = this, Object.defineProperty(this, "b", { get() {} }));
b = 6
}
try {
new C8
assert(false)
} catch(e) {
assert(e instanceof TypeError)
assert(Reflect.ownKeys(res).toString() === "b,a")
}
class C9 {
["p" + 1]
["p" + 2] = (res = this, Object.freeze(this));
p3
}
try {
new C9
assert(false)
} catch(e) {
assert(e instanceof TypeError)
assert(Reflect.ownKeys(res).toString() === "p1")
}