diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e21e46126f4..cccf77a3d56 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2408,7 +2408,7 @@ namespace ts { || node.kind === SyntaxKind.ExportSpecifier || node.kind === SyntaxKind.ExportAssignment && exportAssignmentIsAlias(node) || isBinaryExpression(node) && getAssignmentDeclarationKind(node) === AssignmentDeclarationKind.ModuleExports && exportAssignmentIsAlias(node) - || isPropertyAccessExpression(node) + || isAccessExpression(node) && isBinaryExpression(node.parent) && node.parent.left === node && node.parent.operatorToken.kind === SyntaxKind.EqualsToken @@ -2803,7 +2803,7 @@ namespace ts { return getTargetOfAliasLikeExpression(expression, dontRecursivelyResolve); } - function getTargetOfPropertyAccessExpression(node: PropertyAccessExpression, dontRecursivelyResolve: boolean): Symbol | undefined { + function getTargetOfAccessExpression(node: AccessExpression, dontRecursivelyResolve: boolean): Symbol | undefined { if (!(isBinaryExpression(node.parent) && node.parent.left === node && node.parent.operatorToken.kind === SyntaxKind.EqualsToken)) { return undefined; } @@ -2836,8 +2836,9 @@ namespace ts { return resolveEntityName((node as ShorthandPropertyAssignment).name, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace, /*ignoreErrors*/ true, dontRecursivelyResolve); case SyntaxKind.PropertyAssignment: return getTargetOfPropertyAssignment(node as PropertyAssignment, dontRecursivelyResolve); + case SyntaxKind.ElementAccessExpression: case SyntaxKind.PropertyAccessExpression: - return getTargetOfPropertyAccessExpression(node as PropertyAccessExpression, dontRecursivelyResolve); + return getTargetOfAccessExpression(node as AccessExpression, dontRecursivelyResolve); default: return Debug.fail(); } diff --git a/tests/baselines/reference/moduleExportAliasElementAccessExpression.symbols b/tests/baselines/reference/moduleExportAliasElementAccessExpression.symbols new file mode 100644 index 00000000000..501941eb682 --- /dev/null +++ b/tests/baselines/reference/moduleExportAliasElementAccessExpression.symbols @@ -0,0 +1,9 @@ +=== tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression.js === +function D () { } +>D : Symbol(D, Decl(moduleExportAliasElementAccessExpression.js, 0, 0)) + +exports["D"] = D; +>exports : Symbol("tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression", Decl(moduleExportAliasElementAccessExpression.js, 0, 0)) +>"D" : Symbol("D", Decl(moduleExportAliasElementAccessExpression.js, 0, 17)) +>D : Symbol(D, Decl(moduleExportAliasElementAccessExpression.js, 0, 0)) + diff --git a/tests/baselines/reference/moduleExportAliasElementAccessExpression.types b/tests/baselines/reference/moduleExportAliasElementAccessExpression.types new file mode 100644 index 00000000000..9b07a6672ce --- /dev/null +++ b/tests/baselines/reference/moduleExportAliasElementAccessExpression.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression.js === +function D () { } +>D : () => void + +exports["D"] = D; +>exports["D"] = D : () => void +>exports["D"] : () => void +>exports : typeof import("tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression") +>"D" : "D" +>D : () => void + diff --git a/tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression.ts b/tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression.ts new file mode 100644 index 00000000000..f6826c68611 --- /dev/null +++ b/tests/cases/conformance/salsa/moduleExportAliasElementAccessExpression.ts @@ -0,0 +1,6 @@ +// @noEmit: true +// @checkJs: true +// @filename: moduleExportAliasElementAccessExpression.js + +function D () { } +exports["D"] = D;