Skip to content

Commit fc50167

Browse files
authored
feat(ts-estree): enable errors 1098 and 1099 (typescript-eslint#219)
- add test cases for typed destruction - add test cases for anonymous function with returnType and typeParameters
1 parent a005541 commit fc50167

File tree

9 files changed

+13199
-9539
lines changed

9 files changed

+13199
-9539
lines changed

packages/parser/tests/lib/__snapshots__/typescript.ts.snap

Lines changed: 6545 additions & 4763 deletions
Large diffs are not rendered by default.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
var obj = function <T>(a: string) {
2+
return a;
3+
};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
var obj = function (): void {
2+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type foo = ([a]: any) => any
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type foo = ({a}: any) => any

packages/typescript-estree/src/semantic-errors.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ function whitelistSupportedDiagnostics(
6666
case 1090: // ts 3.2 "'{0}' modifier cannot appear on a parameter."
6767
case 1096: // ts 3.2 "An index signature must have exactly one parameter."
6868
case 1097: // ts 3.2 "'{0}' list cannot be empty."
69+
case 1098: // ts 3.3 "Type parameter list cannot be empty."
70+
case 1099: // ts 3.3 "Type argument list cannot be empty."
6971
case 1117: // ts 3.2 "An object literal cannot have multiple properties with the same name in strict mode."
7072
case 1121: // ts 3.2 "Octal literals are not allowed in strict mode."
7173
case 1123: // ts 3.2: "Variable declaration list cannot be empty."

packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,8 @@ tester.addFixturePatternConfig('typescript/basics', {
383383
*/
384384
'type-assertion-arrow-function',
385385
/**
386-
* Babel does not include optional keyword into range parameter in arrow function
387-
* https://github.com/babel/babel/issues/9461
386+
* PR for optional parameters in arrow function has been merged into Babel: https://github.com/babel/babel/pull/9463
387+
* TODO: remove me in next babel > 7.3.2
388388
*/
389389
'arrow-function-with-optional-parameter'
390390
],
@@ -434,7 +434,23 @@ tester.addFixturePatternConfig('typescript/expressions', {
434434
});
435435

436436
tester.addFixturePatternConfig('typescript/errorRecovery', {
437-
fileType: 'ts'
437+
fileType: 'ts',
438+
ignore: [
439+
/**
440+
* Expected error on empty type arguments and type parameters
441+
* TypeScript report diagnostics correctly but babel not
442+
* https://github.com/babel/babel/issues/9462
443+
*/
444+
'empty-type-arguments',
445+
'empty-type-arguments-in-call-expression',
446+
'empty-type-arguments-in-new-expression',
447+
'empty-type-parameters',
448+
'empty-type-parameters-in-arrow-function',
449+
'empty-type-parameters-in-constructor',
450+
'empty-type-parameters-in-function-expression',
451+
'empty-type-parameters-in-method',
452+
'empty-type-parameters-in-method-signature'
453+
]
438454
});
439455

440456
tester.addFixturePatternConfig('typescript/types', {
@@ -443,7 +459,11 @@ tester.addFixturePatternConfig('typescript/types', {
443459
/**
444460
* AST difference
445461
*/
446-
'literal-number-negative'
462+
'literal-number-negative',
463+
/**
464+
* Babel parse error: https://github.com/babel/babel/pull/9431
465+
*/
466+
'function-with-array-destruction'
447467
]
448468
});
449469

packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.ts.snap

Lines changed: 80 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,6 +1798,10 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
17981798

17991799
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/export-type-function-declaration.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
18001800

1801+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/function-anonymus-with-type-parameters.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
1802+
1803+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/function-anynomus-with-return-type.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
1804+
18011805
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/function-overloads.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
18021806

18031807
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/basics/function-with-await.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
@@ -2073,23 +2077,86 @@ Object {
20732077
}
20742078
`;
20752079

2076-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2080+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments.src 1`] = `
2081+
Object {
2082+
"column": 14,
2083+
"index": 14,
2084+
"lineNumber": 1,
2085+
"message": "Type argument list cannot be empty.",
2086+
}
2087+
`;
20772088

2078-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-call-expression.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2089+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-call-expression.src 1`] = `
2090+
Object {
2091+
"column": 3,
2092+
"index": 3,
2093+
"lineNumber": 1,
2094+
"message": "Type argument list cannot be empty.",
2095+
}
2096+
`;
20792097

2080-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-new-expression.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2098+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-new-expression.src 1`] = `
2099+
Object {
2100+
"column": 7,
2101+
"index": 7,
2102+
"lineNumber": 1,
2103+
"message": "Type argument list cannot be empty.",
2104+
}
2105+
`;
20812106

2082-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2107+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters.src 1`] = `
2108+
Object {
2109+
"column": 11,
2110+
"index": 11,
2111+
"lineNumber": 1,
2112+
"message": "Type parameter list cannot be empty.",
2113+
}
2114+
`;
20832115

2084-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-arrow-function.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2116+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-arrow-function.src 1`] = `
2117+
Object {
2118+
"column": 11,
2119+
"index": 11,
2120+
"lineNumber": 1,
2121+
"message": "Type parameter list cannot be empty.",
2122+
}
2123+
`;
20852124

2086-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-constructor.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2125+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-constructor.src 1`] = `
2126+
Object {
2127+
"column": 13,
2128+
"index": 25,
2129+
"lineNumber": 2,
2130+
"message": "Type parameter list cannot be empty.",
2131+
}
2132+
`;
20872133

2088-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-function-expression.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2134+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-function-expression.src 1`] = `
2135+
Object {
2136+
"column": 20,
2137+
"index": 20,
2138+
"lineNumber": 1,
2139+
"message": "Type parameter list cannot be empty.",
2140+
}
2141+
`;
20892142

2090-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2143+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method.src 1`] = `
2144+
Object {
2145+
"column": 6,
2146+
"index": 18,
2147+
"lineNumber": 2,
2148+
"message": "Type parameter list cannot be empty.",
2149+
}
2150+
`;
20912151

2092-
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method-signature.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2152+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method-signature.src 1`] = `
2153+
Object {
2154+
"column": 6,
2155+
"index": 22,
2156+
"lineNumber": 2,
2157+
"message": "Type parameter list cannot be empty.",
2158+
}
2159+
`;
20932160

20942161
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/enum-with-keywords.src 1`] = `
20952162
Object {
@@ -2360,6 +2427,10 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e
23602427

23612428
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/function-in-generic.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
23622429

2430+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/function-with-array-destruction.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2431+
2432+
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/function-with-object-destruction.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
2433+
23632434
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/function-with-rest.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;
23642435

23652436
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/types/function-with-this.src 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`;

0 commit comments

Comments
 (0)