@@ -1267,7 +1267,7 @@ module ts {
12671267 return finishNode ( node ) ;
12681268 }
12691269
1270- function parseSignature ( kind : SyntaxKind , returnToken : SyntaxKind ) : ParsedSignature {
1270+ function parseSignature ( kind : SyntaxKind , returnToken : SyntaxKind , returnTokenRequired : boolean ) : ParsedSignature {
12711271 if ( kind === SyntaxKind . ConstructSignature ) {
12721272 parseExpected ( SyntaxKind . NewKeyword ) ;
12731273 }
@@ -1277,7 +1277,7 @@ module ts {
12771277
12781278 var type : TypeNode ;
12791279
1280- if ( returnToken === SyntaxKind . EqualsGreaterThanToken ) {
1280+ if ( returnTokenRequired ) {
12811281 parseExpected ( returnToken ) ;
12821282 type = parseType ( ) ;
12831283 }
@@ -1349,7 +1349,7 @@ module ts {
13491349
13501350 function parseSignatureMember ( kind : SyntaxKind , returnToken : SyntaxKind ) : SignatureDeclaration {
13511351 var node = < SignatureDeclaration > createNode ( kind ) ;
1352- var sig = parseSignature ( kind , returnToken ) ;
1352+ var sig = parseSignature ( kind , returnToken , /* returnTokenRequired */ false ) ;
13531353 node . typeParameters = sig . typeParameters ;
13541354 node . parameters = sig . parameters ;
13551355 node . type = sig . type ;
@@ -1422,7 +1422,7 @@ module ts {
14221422 }
14231423 if ( token === SyntaxKind . OpenParenToken || token === SyntaxKind . LessThanToken ) {
14241424 node . kind = SyntaxKind . Method ;
1425- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
1425+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
14261426 ( < MethodDeclaration > node ) . typeParameters = sig . typeParameters ;
14271427 ( < MethodDeclaration > node ) . parameters = sig . parameters ;
14281428 ( < MethodDeclaration > node ) . type = sig . type ;
@@ -1483,7 +1483,7 @@ module ts {
14831483 function parseFunctionType ( signatureKind : SyntaxKind ) : TypeLiteralNode {
14841484 var node = < TypeLiteralNode > createNode ( SyntaxKind . TypeLiteral ) ;
14851485 var member = < SignatureDeclaration > createNode ( signatureKind ) ;
1486- var sig = parseSignature ( signatureKind , SyntaxKind . EqualsGreaterThanToken ) ;
1486+ var sig = parseSignature ( signatureKind , SyntaxKind . EqualsGreaterThanToken , /* returnTokenRequired */ true ) ;
14871487 member . typeParameters = sig . typeParameters ;
14881488 member . parameters = sig . parameters ;
14891489 member . type = sig . type ;
@@ -1739,7 +1739,7 @@ module ts {
17391739 var pos = getNodePos ( ) ;
17401740
17411741 if ( triState === Tristate . True ) {
1742- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
1742+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
17431743
17441744 // If we have an arrow, then try to parse the body.
17451745 // Even if not, try to parse if we have an opening brace, just in case we're in an error state.
@@ -1842,7 +1842,7 @@ module ts {
18421842
18431843 function tryParseSignatureIfArrowOrBraceFollows ( ) : ParsedSignature {
18441844 return tryParse ( ( ) => {
1845- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
1845+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
18461846
18471847 // Parsing a signature isn't enough.
18481848 // Parenthesized arrow signatures often look like other valid expressions.
@@ -2184,7 +2184,7 @@ module ts {
21842184 var node = < PropertyDeclaration > createNode ( SyntaxKind . PropertyAssignment ) ;
21852185 node . name = parsePropertyName ( ) ;
21862186 if ( token === SyntaxKind . OpenParenToken || token === SyntaxKind . LessThanToken ) {
2187- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
2187+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
21882188 var body = parseBody ( /* ignoreMissingOpenBrace */ false ) ;
21892189 // do not propagate property name as name for function expression
21902190 // for scenarios like
@@ -2284,7 +2284,7 @@ module ts {
22842284 var pos = getNodePos ( ) ;
22852285 parseExpected ( SyntaxKind . FunctionKeyword ) ;
22862286 var name = isIdentifier ( ) ? parseIdentifier ( ) : undefined ;
2287- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
2287+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
22882288 var body = parseBody ( /* ignoreMissingOpenBrace */ false ) ;
22892289 if ( name && isInStrictMode && isEvalOrArgumentsIdentifier ( name ) ) {
22902290 // It is a SyntaxError to use within strict mode code the identifiers eval or arguments as the
@@ -2899,7 +2899,7 @@ module ts {
28992899 if ( flags ) node . flags = flags ;
29002900 parseExpected ( SyntaxKind . FunctionKeyword ) ;
29012901 node . name = parseIdentifier ( ) ;
2902- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
2902+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
29032903 node . typeParameters = sig . typeParameters ;
29042904 node . parameters = sig . parameters ;
29052905 node . type = sig . type ;
@@ -2916,7 +2916,7 @@ module ts {
29162916 var node = < ConstructorDeclaration > createNode ( SyntaxKind . Constructor , pos ) ;
29172917 node . flags = flags ;
29182918 parseExpected ( SyntaxKind . ConstructorKeyword ) ;
2919- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
2919+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
29202920 node . typeParameters = sig . typeParameters ;
29212921 node . parameters = sig . parameters ;
29222922 node . type = sig . type ;
@@ -2943,7 +2943,7 @@ module ts {
29432943 var method = < MethodDeclaration > createNode ( SyntaxKind . Method , pos ) ;
29442944 method . flags = flags ;
29452945 method . name = name ;
2946- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
2946+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
29472947 method . typeParameters = sig . typeParameters ;
29482948 method . parameters = sig . parameters ;
29492949 method . type = sig . type ;
@@ -3016,7 +3016,7 @@ module ts {
30163016 var node = < MethodDeclaration > createNode ( kind , pos ) ;
30173017 node . flags = flags ;
30183018 node . name = parsePropertyName ( ) ;
3019- var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken ) ;
3019+ var sig = parseSignature ( SyntaxKind . CallSignature , SyntaxKind . ColonToken , /* returnTokenRequired */ false ) ;
30203020 node . typeParameters = sig . typeParameters ;
30213021 node . parameters = sig . parameters ;
30223022 node . type = sig . type ;
0 commit comments