Add test for return in static block (#19774)

This commit is contained in:
fisker Cheung authored and GitHub committed 2026-08-03 10:32:12 +08:00
1 parent 19a0444ce4
commit 315f281982
2 files changed
+319 -15

No files matched your search

@@ -117,7 +117,253 @@ new.target
^~~~~~~~~~"
`;
exports[`snippet: return.cjs format 1`] = `
exports[`snippet: return/in-static-block.cjs format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
=====================================input======================================
class X { static { return; } }
=====================================output=====================================
class X {
static {
return;
}
}
================================================================================
`;
exports[`snippet: return/in-static-block.cjs format[__babel_estree] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.cjs format[acorn] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function (1:19)"
`;
exports[`snippet: return/in-static-block.cjs format[babel] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.cjs format[babel-ts] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.cjs format[espree] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function"
`;
exports[`snippet: return/in-static-block.cjs format[meriyah] 1`] = `
"Illegal return statement (1:20)
> 1 | class X { static { return; } }
| ^^^^^^
Cause: [1:19-1:25]: Illegal return statement"
`;
exports[`snippet: return/in-static-block.cjs format[oxc] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.cjs format[oxc-ts] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.cjs format[yuku] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.cjs format[yuku-ts] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.mjs format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
=====================================input======================================
class X { static { return; } }
=====================================output=====================================
class X {
static {
return;
}
}
================================================================================
`;
exports[`snippet: return/in-static-block.mjs format[__babel_estree] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.mjs format[acorn] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function (1:19)"
`;
exports[`snippet: return/in-static-block.mjs format[babel] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.mjs format[babel-ts] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.mjs format[espree] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function"
`;
exports[`snippet: return/in-static-block.mjs format[meriyah] 1`] = `
"Illegal return statement (1:20)
> 1 | class X { static { return; } }
| ^^^^^^
Cause: [1:19-1:25]: Illegal return statement"
`;
exports[`snippet: return/in-static-block.mjs format[oxc] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.mjs format[oxc-ts] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.mjs format[yuku] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.mjs format[yuku-ts] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.unknown format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
=====================================input======================================
class X { static { return; } }
=====================================output=====================================
class X {
static {
return;
}
}
================================================================================
`;
exports[`snippet: return/in-static-block.unknown format[__babel_estree] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.unknown format[acorn] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function (1:19)"
`;
exports[`snippet: return/in-static-block.unknown format[babel] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.unknown format[babel-ts] 1`] = `
"'return' outside of function. (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function. (1:19)"
`;
exports[`snippet: return/in-static-block.unknown format[espree] 1`] = `
"'return' outside of function (1:20)
> 1 | class X { static { return; } }
| ^
Cause: 'return' outside of function"
`;
exports[`snippet: return/in-static-block.unknown format[meriyah] 1`] = `
"Illegal return statement (1:20)
> 1 | class X { static { return; } }
| ^^^^^^
Cause: [1:19-1:25]: Illegal return statement"
`;
exports[`snippet: return/in-static-block.unknown format[oxc] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.unknown format[oxc-ts] 1`] = `
"A 'return' statement cannot be used inside a class static block. (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.unknown format[yuku] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/in-static-block.unknown format[yuku-ts] 1`] = `
"'return' statement is only valid inside a function (1:20)
> 1 | class X { static { return; } }
| ^^^^^^"
`;
exports[`snippet: return/top-level.cjs format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
@@ -129,7 +375,7 @@ return;
================================================================================
`;
exports[`snippet: return.mjs format 1`] = `
exports[`snippet: return/top-level.mjs format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
@@ -141,33 +387,33 @@ return;
================================================================================
`;
exports[`snippet: return.mjs format[espree] 1`] = `
exports[`snippet: return/top-level.mjs format[espree] 1`] = `
"'return' outside of function (1:1)
> 1 | return
| ^
Cause: 'return' outside of function"
`;
exports[`snippet: return.mjs format[meriyah] 1`] = `
exports[`snippet: return/top-level.mjs format[meriyah] 1`] = `
"Illegal return statement (1:1)
> 1 | return
| ^^^^^^
Cause: [1:0-1:6]: Illegal return statement"
`;
exports[`snippet: return.mjs format[yuku] 1`] = `
exports[`snippet: return/top-level.mjs format[yuku] 1`] = `
"'return' statement is only valid inside a function (1:1)
> 1 | return
| ^^^^^^"
`;
exports[`snippet: return.mjs format[yuku-ts] 1`] = `
exports[`snippet: return/top-level.mjs format[yuku-ts] 1`] = `
"'return' statement is only valid inside a function (1:1)
> 1 | return
| ^^^^^^"
`;
exports[`snippet: return.unknown format 1`] = `
exports[`snippet: return/top-level.unknown format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80 (default) |
+66 -8
View File
@@ -1,7 +1,12 @@
const tests = [
{
code: "return",
baseFilename: "return",
baseFilename: "return/top-level",
},
// https://github.com/acornjs/acorn/issues/1376#issuecomment-2960924476
{
code: "class X { static { return; } }",
baseFilename: "return/in-static-block",
},
{
code: "new.target",
@@ -23,9 +28,42 @@ runFormatTest(
["babel", "flow", "typescript"],
{
errors: {
acorn: ["new-target.mjs"],
espree: ["return.mjs", "new-target.mjs"],
meriyah: ["using.cjs", "return.mjs", "new-target.mjs"],
babel: [
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
"babel-ts": [
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
__babel_estree: [
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
acorn: [
"new-target.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
espree: [
"return/top-level.mjs",
"new-target.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
meriyah: [
"using.cjs",
"return/top-level.mjs",
"new-target.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
flow: [
"new-target.cjs",
"new-target.mjs",
@@ -35,10 +73,30 @@ runFormatTest(
"using.unknown",
],
hermes: ["new-target.cjs", "new-target.mjs", "new-target.unknown"],
oxc: ["new-target.mjs"],
"oxc-ts": ["new-target.mjs"],
yuku: ["return.mjs"],
"yuku-ts": ["return.mjs"],
oxc: [
"new-target.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
"oxc-ts": [
"new-target.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
yuku: [
"return/top-level.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
"yuku-ts": [
"return/top-level.mjs",
"return/in-static-block.cjs",
"return/in-static-block.mjs",
"return/in-static-block.unknown",
],
},
},
);