Bug fix for issue #14696, things changed are;

- Empty class type will now throw an error,
- Trailing comma in class type will also throw an error,
- Added tests for empty class type parameter,
- Updated tests for class type parameters with trailing comma

This behavior is consistently following function or method like when its type parameter is either empty or has trailing comma.
This commit is contained in:
Vadi Taslim 2017-03-24 12:39:36 +08:00
parent a9d8df2e5a
commit 6b5330f343
5 changed files with 34 additions and 1 deletions

View file

@ -19559,7 +19559,7 @@ namespace ts {
}
function checkClassLikeDeclaration(node: ClassLikeDeclaration) {
checkGrammarClassDeclarationHeritageClauses(node);
checkGrammarClassLikeDeclaration(node);
checkDecorators(node);
if (node.name) {
checkTypeNameIsReserved(node.name, Diagnostics.Class_name_cannot_be_0);
@ -22520,6 +22520,11 @@ namespace ts {
checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file);
}
function checkGrammarClassLikeDeclaration(node: ClassLikeDeclaration): boolean {
const file = getSourceFileOfNode(node);
return checkGrammarClassDeclarationHeritageClauses(node) || checkGrammarTypeParameterList(node.typeParameters, file);
}
function checkGrammarArrowFunction(node: FunctionLikeDeclaration, file: SourceFile): boolean {
if (node.kind === SyntaxKind.ArrowFunction) {
const arrowFunction = <ArrowFunction>node;

View file

@ -0,0 +1,8 @@
tests/cases/compiler/classWithEmptyTypeParameter.ts(1,8): error TS1098: Type parameter list cannot be empty.
==== tests/cases/compiler/classWithEmptyTypeParameter.ts (1 errors) ====
class C<> {
~~
!!! error TS1098: Type parameter list cannot be empty.
}

View file

@ -0,0 +1,10 @@
//// [classWithEmptyTypeParameter.ts]
class C<> {
}
//// [classWithEmptyTypeParameter.js]
var C = (function () {
function C() {
}
return C;
}());

View file

@ -0,0 +1,8 @@
tests/cases/compiler/typeParameterListWithTrailingComma1.ts(1,10): error TS1009: Trailing comma not allowed.
==== tests/cases/compiler/typeParameterListWithTrailingComma1.ts (1 errors) ====
class C<T,> {
~
!!! error TS1009: Trailing comma not allowed.
}

View file

@ -0,0 +1,2 @@
class C<> {
}