Add tests for decorators on rest parameters (#19885)
This commit is contained in:
1 parent
86d29b3603
commit
5d2f938850
6 files changed
+400
-1
No files matched your search
@@ -58,7 +58,11 @@ const disabledTests = new Map(
|
|||||||
oxc: [],
|
oxc: [],
|
||||||
"oxc-ts": [],
|
"oxc-ts": [],
|
||||||
yuku: ["js/await/await-with-parens.js"],
|
yuku: ["js/await/await-with-parens.js"],
|
||||||
"yuku-ts": ["js/await/await-with-parens.js"],
|
"yuku-ts": [
|
||||||
|
"js/await/await-with-parens.js",
|
||||||
|
"js/decorators/rest-parameters/constructor.js",
|
||||||
|
"js/decorators/rest-parameters/method.js",
|
||||||
|
],
|
||||||
hermes: [
|
hermes: [
|
||||||
"js/await/like-call.js", // Different result
|
"js/await/like-call.js", // Different result
|
||||||
"jsx/top-level-await/test.jsx",
|
"jsx/top-level-await/test.jsx",
|
||||||
|
|||||||
@@ -0,0 +1,370 @@
|
|||||||
|
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||||
|
|
||||||
|
exports[`constructor.js format 1`] = `
|
||||||
|
====================================options=====================================
|
||||||
|
parsers: ["babel", "flow", "typescript"]
|
||||||
|
printWidth: 80 (default) |
|
||||||
|
=====================================input======================================
|
||||||
|
class C {
|
||||||
|
constructor(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
=====================================output=====================================
|
||||||
|
class C {
|
||||||
|
constructor(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[__babel_estree] 1`] = `
|
||||||
|
"Unexpected token (2:26)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:25)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[acorn] 1`] = `
|
||||||
|
"Unexpected character '@' (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@' (2:14)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[babel] 1`] = `
|
||||||
|
"Unexpected token (2:26)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:25)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[babel-ts] 1`] = `
|
||||||
|
"Unexpected token (2:26)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:25)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[espree] 1`] = `
|
||||||
|
"Unexpected character '@' (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[flow] 1`] = `
|
||||||
|
"Unexpected token \`@\`, expected an identifier (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token \`@\`, expected an identifier (2:14)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[hermes] 1`] = `
|
||||||
|
"identifier, '{' or '[' expected in binding pattern (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: identifier, '{' or '[' expected in binding pattern (2:14)
|
||||||
|
constructor(@decorator ...args) {}
|
||||||
|
^"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[meriyah] 1`] = `
|
||||||
|
"Expected ')' (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: [2:14-2:15]: Expected ')'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[oxc] 1`] = `
|
||||||
|
"Decorators are not valid here. (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`constructor.js format[yuku] 1`] = `
|
||||||
|
"Unexpected token '@' in binding pattern (2:15)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | constructor(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format 1`] = `
|
||||||
|
====================================options=====================================
|
||||||
|
parsers: ["babel", "flow", "typescript"]
|
||||||
|
printWidth: 80 (default) |
|
||||||
|
=====================================input======================================
|
||||||
|
class C {
|
||||||
|
method(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
=====================================output=====================================
|
||||||
|
class C {
|
||||||
|
method(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[__babel_estree] 1`] = `
|
||||||
|
"Unexpected token (2:21)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:20)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[acorn] 1`] = `
|
||||||
|
"Unexpected character '@' (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@' (2:9)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[babel] 1`] = `
|
||||||
|
"Unexpected token (2:21)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:20)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[babel-ts] 1`] = `
|
||||||
|
"Unexpected token (2:21)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:20)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[espree] 1`] = `
|
||||||
|
"Unexpected character '@' (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[flow] 1`] = `
|
||||||
|
"Unexpected token \`@\`, expected an identifier (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token \`@\`, expected an identifier (2:9)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[hermes] 1`] = `
|
||||||
|
"identifier, '{' or '[' expected in binding pattern (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: identifier, '{' or '[' expected in binding pattern (2:9)
|
||||||
|
method(@decorator ...args) {}
|
||||||
|
^"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[meriyah] 1`] = `
|
||||||
|
"Expected ')' (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: [2:9-2:10]: Expected ')'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[oxc] 1`] = `
|
||||||
|
"Decorators are not valid here. (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`method.js format[yuku] 1`] = `
|
||||||
|
"Unexpected token '@' in binding pattern (2:10)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | method(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format 1`] = `
|
||||||
|
====================================options=====================================
|
||||||
|
parsers: ["babel", "flow", "typescript"]
|
||||||
|
printWidth: 80 (default) |
|
||||||
|
=====================================input======================================
|
||||||
|
class C {
|
||||||
|
set setter(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
=====================================output=====================================
|
||||||
|
class C {
|
||||||
|
set setter(@decorator ...args) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[__babel_estree] 1`] = `
|
||||||
|
"Unexpected token (2:25)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:24)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[acorn] 1`] = `
|
||||||
|
"Unexpected character '@' (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@' (2:13)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[babel] 1`] = `
|
||||||
|
"Unexpected token (2:25)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:24)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[babel-ts] 1`] = `
|
||||||
|
"Unexpected token (2:25)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token (2:24)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[espree] 1`] = `
|
||||||
|
"Unexpected character '@' (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected character '@'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[flow] 1`] = `
|
||||||
|
"Unexpected token \`@\`, expected an identifier (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: Unexpected token \`@\`, expected an identifier (2:13)"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[hermes] 1`] = `
|
||||||
|
"identifier, '{' or '[' expected in binding pattern (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: identifier, '{' or '[' expected in binding pattern (2:13)
|
||||||
|
set setter(@decorator ...args) {}
|
||||||
|
^"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[meriyah] 1`] = `
|
||||||
|
"Expected ')' (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |
|
||||||
|
Cause: [2:13-2:14]: Expected ')'"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[oxc] 1`] = `
|
||||||
|
"Decorators are not valid here. (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[oxc-ts] 1`] = `
|
||||||
|
"A 'set' accessor cannot have rest parameter. (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[yuku] 1`] = `
|
||||||
|
"Unexpected token '@' in binding pattern (2:14)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`setter.js format[yuku-ts] 1`] = `
|
||||||
|
"Setter must have exactly one parameter (2:13)
|
||||||
|
1 | class C {
|
||||||
|
> 2 | set setter(@decorator ...args) {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
3 | }
|
||||||
|
4 |"
|
||||||
|
`;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
class C {
|
||||||
|
constructor(@decorator ...args) {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
runFormatTest(import.meta, ["babel", "flow", "typescript"], {
|
||||||
|
errors: {
|
||||||
|
babel: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
flow: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
acorn: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
espree: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
meriyah: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
oxc: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
"oxc-ts": ["setter.js"],
|
||||||
|
yuku: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
"yuku-ts": ["setter.js"],
|
||||||
|
hermes: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
"babel-ts": ["constructor.js", "method.js", "setter.js"],
|
||||||
|
__babel_estree: ["constructor.js", "method.js", "setter.js"],
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
class C {
|
||||||
|
method(@decorator ...args) {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
class C {
|
||||||
|
set setter(@decorator ...args) {}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user