diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 4ae6a2bd31bf9..5e4ed7af65031 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -3274,7 +3274,7 @@ namespace ts { return isEnumConst(node) ? bindBlockScopedDeclaration(node, SymbolFlags.ConstEnum, SymbolFlags.ConstEnumExcludes) : bindBlockScopedDeclaration(node, SymbolFlags.RegularEnum, SymbolFlags.RegularEnumExcludes); - } + } function bindVariableDeclarationOrBindingElement(node: VariableDeclaration | BindingElement) { if (inStrictMode) { @@ -3282,7 +3282,7 @@ namespace ts { } if (!isBindingPattern(node.name)) { - if (isInJSFile(node) && isAccessedOrBareRequireVariableDeclaration(node) && !getJSDocTypeTag(node)) { + if (isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(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 84352d74cbfe6..1a8b1d0fc50e4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2596,7 +2596,7 @@ namespace ts { && isAliasableOrJsExpression(node.parent.right) || node.kind === SyntaxKind.ShorthandPropertyAssignment || node.kind === SyntaxKind.PropertyAssignment && isAliasableOrJsExpression((node as PropertyAssignment).initializer) - || isAccessedOrBareRequireVariableDeclaration(node); + || isVariableDeclarationInitializedToBareOrAccessedRequire(node); } function isAliasableOrJsExpression(e: Expression) { @@ -36984,7 +36984,7 @@ namespace ts { } // For a commonjs `const x = require`, validate the alias and exit const symbol = getSymbolOfNode(node); - if (symbol.flags & SymbolFlags.Alias && isAccessedOrBareRequireVariableDeclaration(node)) { + if (symbol.flags & SymbolFlags.Alias && isVariableDeclarationInitializedToBareOrAccessedRequire(node)) { checkAliasSymbol(node); return; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 224fb27ef919a..fe326922e3c4f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4664,14 +4664,12 @@ namespace ts { export type RequireOrImportCall = CallExpression & { expression: Identifier, arguments: [StringLiteralLike] }; /* @internal */ - export interface RequireVariableDeclaration extends VariableDeclaration { - readonly initializer: RequireOrImportCall; + export interface VariableDeclarationInitializedTo extends VariableDeclaration { + readonly initializer: T; } /* @internal */ - export interface AccessedOrBareRequireVariableDeclaration extends VariableDeclaration { - readonly initializer: RequireOrImportCall | AccessExpression; - } + export type RequireVariableDeclaration = VariableDeclarationInitializedTo; /* @internal */ export interface RequireVariableStatement extends VariableStatement { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 635bb02765aa5..1e3f5035e2b75 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2046,7 +2046,7 @@ namespace ts { } export function getExternalModuleRequireArgument(node: Node) { - return isAccessedOrBareRequireVariableDeclaration(node) && (getLeftmostAccessExpression(node.initializer) as CallExpression).arguments[0] as StringLiteral; + return isVariableDeclarationInitializedToBareOrAccessedRequire(node) && (getLeftmostAccessExpression(node.initializer) as CallExpression).arguments[0] as StringLiteral; } export function isInternalModuleImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration { @@ -2120,7 +2120,7 @@ namespace ts { /** * Like `isRequireVariableDeclaration` but allows things like `require("...").foo.bar` or `require("...")["baz"]`. */ - export function isAccessedOrBareRequireVariableDeclaration(node: Node): node is AccessedOrBareRequireVariableDeclaration { + export function isVariableDeclarationInitializedToBareOrAccessedRequire(node: Node): node is VariableDeclarationInitializedTo { return isVariableDeclarationInitializedWithRequireHelper(node, /*allowAccessedRequire*/ true); } diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 7dc65cee20689..9f6baf0cc73c4 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -1531,7 +1531,7 @@ namespace ts.FindAllReferences { // Use the parent symbol if the location is commonjs require syntax on javascript files only. if (isInJSFile(referenceLocation) && referenceLocation.parent.kind === SyntaxKind.BindingElement - && isAccessedOrBareRequireVariableDeclaration(referenceLocation.parent)) { + && isVariableDeclarationInitializedToBareOrAccessedRequire(referenceLocation.parent)) { referenceSymbol = referenceLocation.parent.symbol; // The parent will not have a symbol if it's an ObjectBindingPattern (when destructuring is used). In // this case, just skip it, since the bound identifiers are not an alias of the import. diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index f73e54c6419d1..bc1b2f64d5ab6 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -290,7 +290,7 @@ namespace ts.GoToDefinition { return declaration.parent.kind === SyntaxKind.NamedImports; case SyntaxKind.BindingElement: case SyntaxKind.VariableDeclaration: - return isInJSFile(declaration) && isAccessedOrBareRequireVariableDeclaration(declaration); + return isInJSFile(declaration) && isVariableDeclarationInitializedToBareOrAccessedRequire(declaration); default: return false; } diff --git a/src/services/importTracker.ts b/src/services/importTracker.ts index dc069f5e0b657..7bc8ffc36947e 100644 --- a/src/services/importTracker.ts +++ b/src/services/importTracker.ts @@ -621,7 +621,7 @@ namespace ts.FindAllReferences { Debug.assert((parent as ImportClause | NamespaceImport).name === node); return true; case SyntaxKind.BindingElement: - return isInJSFile(node) && isAccessedOrBareRequireVariableDeclaration(parent); + return isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(parent); default: return false; }