From ee1f19efca361230dc08ceaf6ecbe0adebfbbec2 Mon Sep 17 00:00:00 2001 From: Yui T Date: Fri, 12 Dec 2014 16:27:43 -0800 Subject: [PATCH] Move grammar checking: labelStatement --- src/compiler/checker.ts | 15 +++++++++++++++ src/compiler/parser.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8c4cfeec5fa..da5df9f2efe 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8131,6 +8131,21 @@ module ts { } function checkLabeledStatement(node: LabeledStatement) { + // ensure that label is unique + // Grammar checking + var current = node.parent; + while (current) { + if (isAnyFunction(current)) { + break; + } + if (current.kind === SyntaxKind.LabeledStatement && (current).label.text === node.label.text) { + var sourceFile = getSourceFileOfNode(node); + grammarErrorOnNode(node.label, Diagnostics.Duplicate_label_0, getTextOfNodeFromSourceText(sourceFile.text, node.label)); + break; + } + current = current.parent; + } + checkSourceElement(node.statement); } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 7fb859f750a..ebd8cc88505 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4651,7 +4651,7 @@ module ts { case SyntaxKind.GetAccessor: return checkGetAccessor(node); //case SyntaxKind.HeritageClause: return checkHeritageClause(node); //case SyntaxKind.InterfaceDeclaration: return checkInterfaceDeclaration(node); - case SyntaxKind.LabeledStatement: return checkLabeledStatement(node); + //case SyntaxKind.LabeledStatement: return checkLabeledStatement(node); case SyntaxKind.PropertyAssignment: return checkPropertyAssignment(node); case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: