Fixed bug where function type literals may omit their '=>'.

This commit is contained in:
Daniel Rosenwasser 2014-09-11 15:48:24 -07:00
parent 2ba3ae9225
commit 96e5bd26c3
3 changed files with 43 additions and 1 deletions

View file

@ -1274,7 +1274,18 @@ module ts {
var typeParameters = parseTypeParameters();
var parameters = parseParameterList(SyntaxKind.OpenParenToken, SyntaxKind.CloseParenToken);
checkParameterList(parameters);
var type = parseOptional(returnToken) ? parseType() : undefined;
var type: TypeNode;
if (returnToken === SyntaxKind.EqualsGreaterThanToken) {
parseExpected(returnToken);
type = parseType();
}
else if (parseOptional(returnToken))
{
type = parseType();
}
return {
typeParameters: typeParameters,
parameters: parameters,

View file

@ -0,0 +1,18 @@
==== tests/cases/compiler/functionTypesLackingReturnTypes.ts (2 errors) ====
// Error (no '=>')
function f(x: ()) {
~
!!! '=>' expected.
}
// Error (no '=>')
var g: (param);
~
!!! '=>' expected.
// Okay
var h: { () }
// Okay
var i: { new () }

View file

@ -0,0 +1,13 @@
// Error (no '=>')
function f(x: ()) {
}
// Error (no '=>')
var g: (param);
// Okay
var h: { () }
// Okay
var i: { new () }