ladybird/Userland/Libraries/LibJS/Tests/syntax/generators.js
Ali Mohammad Pur d374295a26 LibJS: Parse generator functions in object literals
Also add some parser tests
2021-06-14 13:06:08 +01:00

41 lines
1.5 KiB
JavaScript

describe("parsing freestanding generators", () => {
test("simple", () => {
expect(`function* foo() {}`).toEval();
expect(`function *foo() {}`).toEval();
expect(`function
*foo() {}`).toEval();
});
test("yield expression", () => {
expect(`function* foo() { yield; }`).toEval();
expect(`function* foo() { yield (yield); }`).toEval();
expect(`function* foo() { yield (yield foo); }`).toEval();
expect(`function foo() { yield; }`).toEval();
expect(`function foo() { yield 3; }`).not.toEval();
});
test.skip("yield-from expression", () => {
expect(`function* foo() { yield *bar; }`).toEval();
expect(`function* foo() { yield *(yield); }`).toEval();
expect(`function* foo() { yield
*bar; }`).not.toEval();
expect(`function foo() { yield
*bar; }`).toEval();
});
});
describe("parsing object literal generator functions", () => {
test("simple", () => {
expect(`x = { *foo() { } }`).toEval();
expect(`x = { * foo() { } }`).toEval();
expect(`x = { *
foo() { } }`).toEval();
});
test("yield", () => {
expect(`x = { foo() { yield; } }`).toEval();
expect(`x = { *foo() { yield; } }`).toEval();
expect(`x = { *foo() { yield 42; } }`).toEval();
expect(`x = { foo() { yield 42; } }`).not.toEval();
expect(`x = { *foo() { yield (yield); } }`).toEval();
expect(`x = { *
foo() { yield (yield); } }`).toEval();
});
});