From 0ce5c4a7ee8bb7ec8f1e2c415bc2074f81bdf531 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 19 Feb 2021 09:34:05 -0800 Subject: [PATCH] improve isRequireVariableDeclaration parameters (#42865) One parameter is always called with `true`, so drop it. --- src/compiler/binder.ts | 2 +- src/compiler/checker.ts | 4 ++-- src/compiler/utilities.ts | 13 +++++-------- src/services/codefixes/importFixes.ts | 2 +- src/services/goToDefinition.ts | 2 +- src/services/importTracker.ts | 2 +- 6 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index bea34807d86..01a2b205d56 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -3307,7 +3307,7 @@ namespace ts { } if (!isBindingPattern(node.name)) { - if (isInJSFile(node) && isRequireVariableDeclaration(node, /*requireStringLiteralLikeArgument*/ true) && !getJSDocTypeTag(node)) { + if (isInJSFile(node) && isRequireVariableDeclaration(node) && !getJSDocTypeTag(node)) { declareSymbolAndAddToSymbolTable(node as Declaration, SymbolFlags.Alias, SymbolFlags.AliasExcludes); } else if (isBlockOrCatchScoped(node)) { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1a31c59cd04..7c7fab73585 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2495,7 +2495,7 @@ namespace ts { && isAliasableOrJsExpression(node.parent.right) || node.kind === SyntaxKind.ShorthandPropertyAssignment || node.kind === SyntaxKind.PropertyAssignment && isAliasableOrJsExpression((node as PropertyAssignment).initializer) - || isRequireVariableDeclaration(node, /*requireStringLiteralLikeArgument*/ true); + || isRequireVariableDeclaration(node); } function isAliasableOrJsExpression(e: Expression) { @@ -34412,7 +34412,7 @@ namespace ts { } // For a commonjs `const x = require`, validate the alias and exit const symbol = getSymbolOfNode(node); - if (symbol.flags & SymbolFlags.Alias && isRequireVariableDeclaration(node, /*requireStringLiteralLikeArgument*/ true)) { + if (symbol.flags & SymbolFlags.Alias && isRequireVariableDeclaration(node)) { checkAliasSymbol(node); return; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 015cc5ed93e..1777402f159 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1965,8 +1965,7 @@ namespace ts { } export function getExternalModuleRequireArgument(node: Node) { - return isRequireVariableDeclaration(node, /*requireStringLiteralLikeArgument*/ true) - && (getLeftmostAccessExpression(node.initializer) as CallExpression).arguments[0] as StringLiteral; + return isRequireVariableDeclaration(node) && (getLeftmostAccessExpression(node.initializer) as CallExpression).arguments[0] as StringLiteral; } export function isInternalModuleImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration { @@ -2033,19 +2032,17 @@ namespace ts { * Returns true if the node is a VariableDeclaration initialized to a require call (see `isRequireCall`). * This function does not test if the node is in a JavaScript file or not. */ - export function isRequireVariableDeclaration(node: Node, requireStringLiteralLikeArgument: true): node is RequireVariableDeclaration; - export function isRequireVariableDeclaration(node: Node, requireStringLiteralLikeArgument: boolean): node is VariableDeclaration; - export function isRequireVariableDeclaration(node: Node, requireStringLiteralLikeArgument: boolean): node is VariableDeclaration { + export function isRequireVariableDeclaration(node: Node): node is RequireVariableDeclaration { if (node.kind === SyntaxKind.BindingElement) { node = node.parent.parent; } - return isVariableDeclaration(node) && !!node.initializer && isRequireCall(getLeftmostAccessExpression(node.initializer), requireStringLiteralLikeArgument); + return isVariableDeclaration(node) && !!node.initializer && isRequireCall(getLeftmostAccessExpression(node.initializer), /*requireStringLiteralLikeArgument*/ true); } - export function isRequireVariableStatement(node: Node, requireStringLiteralLikeArgument = true): node is RequireVariableStatement { + export function isRequireVariableStatement(node: Node): node is RequireVariableStatement { return isVariableStatement(node) && node.declarationList.declarations.length > 0 - && every(node.declarationList.declarations, decl => isRequireVariableDeclaration(decl, requireStringLiteralLikeArgument)); + && every(node.declarationList.declarations, decl => isRequireVariableDeclaration(decl)); } export function isSingleOrDoubleQuote(charCode: number) { diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 83e22db2241..6a23151ae4d 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -376,7 +376,7 @@ namespace ts.codefix { // Can't use an es6 import for a type in JS. return exportedSymbolIsTypeOnly && isSourceFileJS(sourceFile) ? emptyArray : mapDefined(sourceFile.imports, (moduleSpecifier): FixAddToExistingImportInfo | undefined => { const i = importFromModuleSpecifier(moduleSpecifier); - if (isRequireVariableDeclaration(i.parent, /*requireStringLiteralLikeArgument*/ true)) { + if (isRequireVariableDeclaration(i.parent)) { return checker.resolveExternalModuleName(moduleSpecifier) === moduleSymbol ? { declaration: i.parent, importKind } : undefined; } if (i.kind === SyntaxKind.ImportDeclaration || i.kind === SyntaxKind.ImportEqualsDeclaration) { diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index faaf1077354..33330d1d0b0 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -232,7 +232,7 @@ namespace ts.GoToDefinition { return declaration.parent.kind === SyntaxKind.NamedImports; case SyntaxKind.BindingElement: case SyntaxKind.VariableDeclaration: - return isInJSFile(declaration) && isRequireVariableDeclaration(declaration, /*requireStringLiteralLikeArgument*/ true); + return isInJSFile(declaration) && isRequireVariableDeclaration(declaration); default: return false; } diff --git a/src/services/importTracker.ts b/src/services/importTracker.ts index ccee9c90a02..d0256252ebc 100644 --- a/src/services/importTracker.ts +++ b/src/services/importTracker.ts @@ -619,7 +619,7 @@ namespace ts.FindAllReferences { Debug.assert((parent as ImportClause | NamespaceImport).name === node); return true; case SyntaxKind.BindingElement: - return isInJSFile(node) && isRequireVariableDeclaration(parent, /*requireStringLiteralLikeArgument*/ true); + return isInJSFile(node) && isRequireVariableDeclaration(parent); default: return false; }