From 150e8d30d7de44ceef8228a4256c8a31c310c867 Mon Sep 17 00:00:00 2001 From: Yui T Date: Sun, 2 Nov 2014 19:52:08 -0800 Subject: [PATCH] Store scanner position before create PropertyDeclaration node --- src/compiler/parser.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 41243efa171..65fada8e134 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2668,9 +2668,11 @@ module ts { } function parsePropertyAssignment(): PropertyDeclaration { - var node = createNode(SyntaxKind.PropertyAssignment); - node.name = parsePropertyName(); + var nodePos = scanner.getStartPos(); + var propertyName = parsePropertyName(); if (token === SyntaxKind.OpenParenToken || token === SyntaxKind.LessThanToken) { + var node = createNode(SyntaxKind.PropertyAssignment, nodePos); + node.name = propertyName; var sig = parseSignature(SyntaxKind.CallSignature, SyntaxKind.ColonToken, /* returnTokenRequired */ false); var body = parseBody(/* ignoreMissingOpenBrace */ false); // do not propagate property name as name for function expression @@ -2679,8 +2681,11 @@ module ts { // var y = { x() { } } // otherwise this will bring y.x into the scope of x which is incorrect node.initializer = makeFunctionExpression(SyntaxKind.FunctionExpression, node.pos, undefined, sig, body); + return finishNode(node); } else { + var node = createNode(SyntaxKind.PropertyAssignment, nodePos); + node.name = propertyName; parseExpected(SyntaxKind.ColonToken); node.initializer = parseAssignmentExpression(false); }