From 5e107e6042cc83bf7071051631fe4b6c0bd61ae0 Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Tue, 10 Mar 2015 21:22:41 -0400 Subject: [PATCH] Address slew of review comments --- src/compiler/checker.ts | 9 +++++---- src/compiler/parser.ts | 9 +++------ src/compiler/types.ts | 2 +- tests/baselines/reference/APISample_compile.js | 2 +- tests/baselines/reference/APISample_compile.types | 4 ++-- tests/baselines/reference/APISample_linter.js | 2 +- tests/baselines/reference/APISample_linter.types | 4 ++-- tests/baselines/reference/APISample_transform.js | 2 +- tests/baselines/reference/APISample_transform.types | 4 ++-- tests/baselines/reference/APISample_watcher.js | 2 +- tests/baselines/reference/APISample_watcher.types | 4 ++-- 11 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d0c9ff87140..df1b70ab6ff 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11381,12 +11381,13 @@ module ts { } function checkGrammarArrowFunction(node: FunctionLikeDeclaration): boolean { - if (node.kind === SyntaxKind.ArrowFunction && (node).arrow) { + if (node.kind === SyntaxKind.ArrowFunction) { var arrowFunction = node; var sourceFile = getSourceFileOfNode(node); - if (getLineAndCharacterOfPosition(sourceFile, getTokenPosOfNode(arrowFunction.arrow, sourceFile)).line !== - getLineAndCharacterOfPosition(sourceFile, arrowFunction.parameters.end).line) { - return grammarErrorOnNode(arrowFunction.arrow, Diagnostics.Line_terminator_not_permitted_before_arrow); + var equalsGreaterThanLine = getLineAndCharacterOfPosition(sourceFile, getTokenPosOfNode(arrowFunction.equalsGreaterThanToken, sourceFile)).line; + var parametersLine = getLineAndCharacterOfPosition(sourceFile, arrowFunction.parameters.end).line; + if (equalsGreaterThanLine !== parametersLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, Diagnostics.Line_terminator_not_permitted_before_arrow); } } return false; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 6b010f584a2..5756f379685 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -95,7 +95,7 @@ module ts { visitNodes(cbNodes, (node).typeParameters) || visitNodes(cbNodes, (node).parameters) || visitNode(cbNode, (node).type) || - visitNode(cbNode, (node).arrow) || + visitNode(cbNode, (node).equalsGreaterThanToken) || visitNode(cbNode, (node).body); case SyntaxKind.TypeReference: return visitNode(cbNode, (node).typeName) || @@ -3017,9 +3017,7 @@ module ts { node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - if ((node.arrow = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, false, Diagnostics._0_expected, "=>"))) { - node.arrow.parent = node; - } + node.equalsGreaterThanToken = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, false, Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(); return finishNode(node); @@ -3048,8 +3046,7 @@ module ts { // If we have an arrow, then try to parse the body. Even if not, try to parse if we // have an opening brace, just in case we're in an error state. - if ((arrowFunction.arrow = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, false, Diagnostics._0_expected, "=>")) || token === SyntaxKind.OpenBraceToken) { - arrowFunction.arrow.parent = arrowFunction; + if ((arrowFunction.equalsGreaterThanToken = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, false, Diagnostics._0_expected, "=>")) || token === SyntaxKind.OpenBraceToken) { arrowFunction.body = parseArrowFunctionExpressionBody(); } else { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 49529bed9c6..25a8ce75245 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -654,7 +654,7 @@ module ts { } export interface ArrowFunction extends Expression, FunctionLikeDeclaration { - arrow: Node; + equalsGreaterThanToken: Node; } // The text property of a LiteralExpression stores the interpreted value of the literal in text form. For a StringLiteral, diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index 997bd2bd337..6244dc73951 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -554,7 +554,7 @@ declare module "typescript" { body: Block | Expression; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { - arrow: Node; + equalsGreaterThanToken: Node; } interface LiteralExpression extends PrimaryExpression { text: string; diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index d91d860ca8f..43e88c27e41 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -1674,8 +1674,8 @@ declare module "typescript" { >Expression : Expression >FunctionLikeDeclaration : FunctionLikeDeclaration - arrow: Node; ->arrow : Node + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node >Node : Node } interface LiteralExpression extends PrimaryExpression { diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index b941acdbc52..fd4649f614d 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -585,7 +585,7 @@ declare module "typescript" { body: Block | Expression; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { - arrow: Node; + equalsGreaterThanToken: Node; } interface LiteralExpression extends PrimaryExpression { text: string; diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index b8701020e03..984b59ca7ee 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -1820,8 +1820,8 @@ declare module "typescript" { >Expression : Expression >FunctionLikeDeclaration : FunctionLikeDeclaration - arrow: Node; ->arrow : Node + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node >Node : Node } interface LiteralExpression extends PrimaryExpression { diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index baf3f9d8503..4222e1b2d98 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -586,7 +586,7 @@ declare module "typescript" { body: Block | Expression; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { - arrow: Node; + equalsGreaterThanToken: Node; } interface LiteralExpression extends PrimaryExpression { text: string; diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index d214a6fc959..bea3f1e7231 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -1770,8 +1770,8 @@ declare module "typescript" { >Expression : Expression >FunctionLikeDeclaration : FunctionLikeDeclaration - arrow: Node; ->arrow : Node + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node >Node : Node } interface LiteralExpression extends PrimaryExpression { diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index d963aaff481..0928c2cf139 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -623,7 +623,7 @@ declare module "typescript" { body: Block | Expression; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { - arrow: Node; + equalsGreaterThanToken: Node; } interface LiteralExpression extends PrimaryExpression { text: string; diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index da00b9bf466..4498a5538e4 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -1943,8 +1943,8 @@ declare module "typescript" { >Expression : Expression >FunctionLikeDeclaration : FunctionLikeDeclaration - arrow: Node; ->arrow : Node + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node >Node : Node } interface LiteralExpression extends PrimaryExpression {