From 83bd7929d7d3b0d557b7a9fa61fd52150e1b31c1 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 21 Feb 2018 11:40:36 -0800 Subject: [PATCH] Prefer 'return Debug.fail()' over 'throw Debug.fail()' --- src/compiler/checker.ts | 6 +++--- src/services/classifier.ts | 4 ++-- src/services/codefixes/importFixes.ts | 2 +- src/services/codefixes/inferFromUsage.ts | 2 +- src/services/completions.ts | 4 ++-- src/services/formatting/smartIndenter.ts | 2 +- src/services/jsTyping.ts | 2 +- src/services/textChanges.ts | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 00353c1c391f7..a44bef9d86026 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15259,7 +15259,7 @@ namespace ts { const intrinsicElementsType = getJsxType(JsxNames.IntrinsicElements); if (intrinsicElementsType !== unknownType) { // Property case - if (!isIdentifier(node.tagName)) throw Debug.fail(); + if (!isIdentifier(node.tagName)) return Debug.fail(); const intrinsicProp = getPropertyOfType(intrinsicElementsType, node.tagName.escapedText); if (intrinsicProp) { links.jsxFlags |= JsxFlags.IntrinsicNamedElement; @@ -18033,7 +18033,7 @@ namespace ts { } // Make sure require is not a local function - if (!isIdentifier(node.expression)) throw Debug.fail(); + if (!isIdentifier(node.expression)) return Debug.fail(); const resolvedRequire = resolveName(node.expression, node.expression.escapedText, SymbolFlags.Value, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ true); if (!resolvedRequire) { // project does not contain symbol named 'require' - assume commonjs require @@ -21768,7 +21768,7 @@ namespace ts { const symbol = getSymbolOfNode(node); if (symbol.flags & SymbolFlags.FunctionScopedVariable) { - if (!isIdentifier(node.name)) throw Debug.fail(); + if (!isIdentifier(node.name)) return Debug.fail(); const localDeclarationSymbol = resolveName(node, node.name.escapedText, SymbolFlags.Variable, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ false); if (localDeclarationSymbol && localDeclarationSymbol !== symbol && diff --git a/src/services/classifier.ts b/src/services/classifier.ts index aff626ca9fe5c..f1a50a3ef7881 100644 --- a/src/services/classifier.ts +++ b/src/services/classifier.ts @@ -224,7 +224,7 @@ namespace ts { case SyntaxKind.NoSubstitutionTemplateLiteral: return EndOfLineState.InTemplateHeadOrNoSubstitutionTemplate; default: - throw Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #" + token); + return Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #" + token); } } return lastOnTemplateStack === SyntaxKind.TemplateHead ? EndOfLineState.InTemplateSubstitutionPosition : undefined; @@ -343,7 +343,7 @@ namespace ts { case EndOfLineState.None: return { prefix: "" }; default: - throw Debug.assertNever(lexState); + return Debug.assertNever(lexState); } } diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 9f9bc959bf0d6..8127a39b8d895 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -699,7 +699,7 @@ namespace ts.codefix { // Fall back to the `import * as ns` style import. return ImportKind.Namespace; default: - throw Debug.assertNever(moduleKind); + return Debug.assertNever(moduleKind); } } diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index e17c518361199..eff77cb7f53e9 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -109,7 +109,7 @@ namespace ts.codefix { return isSetAccessor(containingFunction) ? getCodeActionForSetAccessor(containingFunction, program, cancellationToken) : undefined; default: - throw Debug.fail(String(errorCode)); + return Debug.fail(String(errorCode)); } } diff --git a/src/services/completions.ts b/src/services/completions.ts index c49f758392aef..9d053c0a0f9a3 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -69,7 +69,7 @@ namespace ts.Completions { case CompletionDataKind.JsDocParameterName: return jsdocCompletionInfo(JsDoc.getJSDocParameterNameCompletions(completionData.tag)); default: - throw Debug.assertNever(completionData); + return Debug.assertNever(completionData); } } @@ -1454,7 +1454,7 @@ namespace ts.Completions { isNewIdentifierLocation = false; const rootDeclaration = getRootDeclaration(objectLikeContainer.parent); - if (!isVariableLike(rootDeclaration)) throw Debug.fail("Root declaration is not variable-like."); + if (!isVariableLike(rootDeclaration)) return Debug.fail("Root declaration is not variable-like."); // We don't want to complete using the type acquired by the shape // of the binding pattern; we are only interested in types acquired diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index f124c444f6d69..371f7ce4d9dfc 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -583,7 +583,7 @@ namespace ts.formatting { case SyntaxKind.ModuleBlock: return true; default: - throw Debug.fail(); + return Debug.fail(); } case SyntaxKind.ContinueStatement: case SyntaxKind.BreakStatement: diff --git a/src/services/jsTyping.ts b/src/services/jsTyping.ts index bd6c2e5cb9f9c..ab107c0c00887 100644 --- a/src/services/jsTyping.ts +++ b/src/services/jsTyping.ts @@ -318,7 +318,7 @@ namespace ts.JsTyping { case PackageNameValidationResult.NameContainsNonURISafeCharacters: return `Package name '${typing}' contains non URI safe characters`; case PackageNameValidationResult.Ok: - throw Debug.fail(); // Shouldn't have called this. + return Debug.fail(); // Shouldn't have called this. default: Debug.assertNever(result); } diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index 04a20bbbbb88c..2b7115d279671 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -350,7 +350,7 @@ namespace ts.textChanges { else if (isVariableDeclaration(before)) { // insert `x = 1, ` into `const x = 1, y = 2; return { suffix: ", " }; } - throw Debug.failBadSyntaxKind(before); // We haven't handled this kind of node yet -- add it + return Debug.failBadSyntaxKind(before); // We haven't handled this kind of node yet -- add it } public insertNodeAtConstructorStart(sourceFile: SourceFile, ctr: ConstructorDeclaration, newStatement: Statement): void { @@ -434,7 +434,7 @@ namespace ts.textChanges { else if (isVariableDeclaration(node)) { return { prefix: ", " }; } - throw Debug.failBadSyntaxKind(node); // We haven't handled this kind of node yet -- add it + return Debug.failBadSyntaxKind(node); // We haven't handled this kind of node yet -- add it } /**