From 98cb805f138d829d82983903dd1874af2da3e7d1 Mon Sep 17 00:00:00 2001 From: Yui T Date: Sun, 14 Dec 2014 22:50:58 -0800 Subject: [PATCH] Move grammar check: throwStatement; there are still errors from incomplete grammar migration --- src/compiler/checker.ts | 13 +++++++++++++ src/compiler/diagnosticInformationMap.generated.ts | 2 +- src/compiler/diagnosticMessages.json | 3 ++- src/compiler/parser.ts | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index edf1a01ad3b..10abc5601af 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8241,6 +8241,10 @@ module ts { } function checkThrowStatement(node: ThrowStatement) { + if (node.expression === undefined) { + grammarErrorAfterFirstToken(getSourceFileOfNode(node), node, Diagnostics.Line_break_not_permitted_here); + } + if (node.expression) { checkExpression(node.expression); } @@ -10353,6 +10357,15 @@ module ts { return grammarErrorOnNode(node, Diagnostics.Invalid_use_of_0_in_strict_mode, name); } + function grammarErrorAfterFirstToken(sourceFile: SourceFile, node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): boolean { + if (!hasParseDiagnostics(sourceFile)) { + var scanner = createScanner(compilerOptions.target, /*skipTrivia*/ true, sourceFile.text); + scanToken(scanner, node.pos); + diagnostics.push(createFileDiagnostic(sourceFile, scanner.getTextPos(), 0, message, arg0, arg1, arg2)); + return true; + } + } + initializeTypeChecker(); return checker; diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index b2209d41677..2050bad5ca5 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -105,7 +105,7 @@ module ts { Type_parameter_declaration_expected: { code: 1139, category: DiagnosticCategory.Error, key: "Type parameter declaration expected." }, Type_argument_expected: { code: 1140, category: DiagnosticCategory.Error, key: "Type argument expected." }, String_literal_expected: { code: 1141, category: DiagnosticCategory.Error, key: "String literal expected.", isEarly: true }, - Line_break_not_permitted_here: { code: 1142, category: DiagnosticCategory.Error, key: "Line break not permitted here." }, + Line_break_not_permitted_here: { code: 1142, category: DiagnosticCategory.Error, key: "Line break not permitted here.", isEarly: true }, or_expected: { code: 1144, category: DiagnosticCategory.Error, key: "'{' or ';' expected." }, Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members.", isEarly: true }, Declaration_expected: { code: 1146, category: DiagnosticCategory.Error, key: "Declaration expected." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 9651742d437..2cef9250a8f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -476,7 +476,8 @@ }, "Line break not permitted here.": { "category": "Error", - "code": 1142 + "code": 1142, + "isEarly": true }, "'{' or ';' expected.": { "category": "Error", diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 162f895fe09..41ccdfd3dc3 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4671,7 +4671,7 @@ module ts { //case SyntaxKind.ShorthandPropertyAssignment: return checkShorthandPropertyAssignment(node); //case SyntaxKind.SwitchStatement: return checkSwitchStatement(node); //case SyntaxKind.TaggedTemplateExpression: return checkTaggedTemplateExpression(node); - case SyntaxKind.ThrowStatement: return checkThrowStatement(node); + //case SyntaxKind.ThrowStatement: return checkThrowStatement(node); case SyntaxKind.TypeReference: return checkTypeReference(node); case SyntaxKind.VariableDeclaration: return checkVariableDeclaration(node); case SyntaxKind.VariableStatement: return checkVariableStatement(node);