Skip to content

Commit

Permalink
feat(ts-estree): enable errors 1098 and 1099 (#219)
Browse files Browse the repository at this point in the history
- add test cases for typed destruction
- add test cases for anonymous function with returnType and typeParameters
  • Loading branch information
armano2 committed Feb 7, 2019
1 parent a005541 commit fc50167
Show file tree
Hide file tree
Showing 9 changed files with 13,199 additions and 9,539 deletions.
11,308 changes: 6,545 additions & 4,763 deletions packages/parser/tests/lib/__snapshots__/typescript.ts.snap

Large diffs are not rendered by default.

@@ -0,0 +1,3 @@
var obj = function <T>(a: string) {
return a;
};
@@ -0,0 +1,2 @@
var obj = function (): void {
};
@@ -0,0 +1 @@
type foo = ([a]: any) => any
@@ -0,0 +1 @@
type foo = ({a}: any) => any
2 changes: 2 additions & 0 deletions packages/typescript-estree/src/semantic-errors.ts
Expand Up @@ -66,6 +66,8 @@ function whitelistSupportedDiagnostics(
case 1090: // ts 3.2 "'{0}' modifier cannot appear on a parameter."
case 1096: // ts 3.2 "An index signature must have exactly one parameter."
case 1097: // ts 3.2 "'{0}' list cannot be empty."
case 1098: // ts 3.3 "Type parameter list cannot be empty."
case 1099: // ts 3.3 "Type argument list cannot be empty."
case 1117: // ts 3.2 "An object literal cannot have multiple properties with the same name in strict mode."
case 1121: // ts 3.2 "Octal literals are not allowed in strict mode."
case 1123: // ts 3.2: "Variable declaration list cannot be empty."
Expand Down
28 changes: 24 additions & 4 deletions packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts
Expand Up @@ -383,8 +383,8 @@ tester.addFixturePatternConfig('typescript/basics', {
*/
'type-assertion-arrow-function',
/**
* Babel does not include optional keyword into range parameter in arrow function
* https://github.com/babel/babel/issues/9461
* PR for optional parameters in arrow function has been merged into Babel: https://github.com/babel/babel/pull/9463
* TODO: remove me in next babel > 7.3.2
*/
'arrow-function-with-optional-parameter'
],
Expand Down Expand Up @@ -434,7 +434,23 @@ tester.addFixturePatternConfig('typescript/expressions', {
});

tester.addFixturePatternConfig('typescript/errorRecovery', {
fileType: 'ts'
fileType: 'ts',
ignore: [
/**
* Expected error on empty type arguments and type parameters
* TypeScript report diagnostics correctly but babel not
* https://github.com/babel/babel/issues/9462
*/
'empty-type-arguments',
'empty-type-arguments-in-call-expression',
'empty-type-arguments-in-new-expression',
'empty-type-parameters',
'empty-type-parameters-in-arrow-function',
'empty-type-parameters-in-constructor',
'empty-type-parameters-in-function-expression',
'empty-type-parameters-in-method',
'empty-type-parameters-in-method-signature'
]
});

tester.addFixturePatternConfig('typescript/types', {
Expand All @@ -443,7 +459,11 @@ tester.addFixturePatternConfig('typescript/types', {
/**
* AST difference
*/
'literal-number-negative'
'literal-number-negative',
/**
* Babel parse error: https://github.com/babel/babel/pull/9431
*/
'function-with-array-destruction'
]
});

Expand Down
Expand Up @@ -1798,6 +1798,10 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e

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

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"`;

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"`;

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

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

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

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-call-expression.src 1`] = `
Object {
"column": 3,
"index": 3,
"lineNumber": 1,
"message": "Type argument list cannot be empty.",
}
`;

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-arguments-in-new-expression.src 1`] = `
Object {
"column": 7,
"index": 7,
"lineNumber": 1,
"message": "Type argument list cannot be empty.",
}
`;

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

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-arrow-function.src 1`] = `
Object {
"column": 11,
"index": 11,
"lineNumber": 1,
"message": "Type parameter list cannot be empty.",
}
`;

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-constructor.src 1`] = `
Object {
"column": 13,
"index": 25,
"lineNumber": 2,
"message": "Type parameter list cannot be empty.",
}
`;

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-function-expression.src 1`] = `
Object {
"column": 20,
"index": 20,
"lineNumber": 1,
"message": "Type parameter list cannot be empty.",
}
`;

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method.src 1`] = `
Object {
"column": 6,
"index": 18,
"lineNumber": 2,
"message": "Type parameter list cannot be empty.",
}
`;

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"`;
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/typescript/errorRecovery/empty-type-parameters-in-method-signature.src 1`] = `
Object {
"column": 6,
"index": 22,
"lineNumber": 2,
"message": "Type parameter list cannot be empty.",
}
`;

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

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

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

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

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

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

0 comments on commit fc50167

Please sign in to comment.