From 7eb4e742d12341d9bd1ed85f1af38eb0bcfe1838 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 1 Dec 2014 00:16:55 -0800 Subject: [PATCH] Don't directly produce errors while parsing 'try' statements. --- src/compiler/diagnosticInformationMap.generated.ts | 1 - src/compiler/diagnosticMessages.json | 4 ---- src/compiler/parser.ts | 9 +++++---- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index c17cf94e8c0..f593348e2a7 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -106,7 +106,6 @@ module ts { Type_argument_expected: { code: 1140, category: DiagnosticCategory.Error, key: "Type argument expected." }, String_literal_expected: { code: 1141, category: DiagnosticCategory.Error, key: "String literal expected." }, Line_break_not_permitted_here: { code: 1142, category: DiagnosticCategory.Error, key: "Line break not permitted here." }, - catch_or_finally_expected: { code: 1143, category: DiagnosticCategory.Error, key: "'catch' or 'finally' expected." }, Block_or_expected: { code: 1144, category: DiagnosticCategory.Error, key: "Block or ';' expected." }, Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members." }, Declaration_expected: { code: 1146, category: DiagnosticCategory.Error, key: "Declaration expected." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 3d5be6d566a..ef45a93b298 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -415,10 +415,6 @@ "category": "Error", "code": 1142 }, - "'catch' or 'finally' expected.": { - "category": "Error", - "code": 1143 - }, "Block or ';' expected.": { "category": "Error", "code": 1144 diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index ffd32b6094c..5b4805cd74d 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3397,12 +3397,13 @@ module ts { if (token === SyntaxKind.CatchKeyword) { node.catchBlock = parseCatchBlock(); } - if (token === SyntaxKind.FinallyKeyword) { + + // If we don't have a catch clause, then we must have a finally clause. Try to parse + // one out no matter what. + if (!node.catchBlock || token === SyntaxKind.FinallyKeyword) { node.finallyBlock = parseTokenAndBlock(SyntaxKind.FinallyKeyword, SyntaxKind.FinallyBlock); } - if (!(node.catchBlock || node.finallyBlock)) { - error(Diagnostics.catch_or_finally_expected); - } + return finishNode(node); }