mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-13 05:37:13 -05:00
EntityNameExpression doesn't need to include ParenthesizedExpression (#21588)
This commit is contained in:
@@ -1983,8 +1983,7 @@ namespace ts {
|
||||
if (name.kind === SyntaxKind.QualifiedName) {
|
||||
left = (<QualifiedName>name).left;
|
||||
}
|
||||
else if (name.kind === SyntaxKind.PropertyAccessExpression &&
|
||||
(name.expression.kind === SyntaxKind.ParenthesizedExpression || isEntityNameExpression(name.expression))) {
|
||||
else if (name.kind === SyntaxKind.PropertyAccessExpression) {
|
||||
left = name.expression;
|
||||
}
|
||||
else {
|
||||
@@ -2013,15 +2012,6 @@ namespace ts {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
else if (name.kind === SyntaxKind.ParenthesizedExpression) {
|
||||
// If the expression in parenthesizedExpression is not an entity-name (e.g. it is a call expression), it won't be able to successfully resolve the name.
|
||||
// This is the case when we are trying to do any language service operation in heritage clauses.
|
||||
// By return undefined, the getSymbolOfEntityNameOrPropertyAccessExpression will attempt to checkPropertyAccessExpression to resolve symbol.
|
||||
// i.e class C extends foo()./*do language service operation here*/B {}
|
||||
return isEntityNameExpression(name.expression) ?
|
||||
resolveEntityName(name.expression as EntityNameOrEntityNameExpression, meaning, ignoreErrors, dontResolveAlias, location) :
|
||||
undefined;
|
||||
}
|
||||
else {
|
||||
Debug.assertNever(name, "Unknown entity name kind.");
|
||||
}
|
||||
@@ -24477,8 +24467,8 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
if (entityName.parent.kind === SyntaxKind.ExportAssignment && isEntityNameExpression(<Identifier | PropertyAccessExpression>entityName)) {
|
||||
return resolveEntityName(<EntityNameExpression>entityName,
|
||||
if (entityName.parent.kind === SyntaxKind.ExportAssignment && isEntityNameExpression(entityName)) {
|
||||
return resolveEntityName(entityName,
|
||||
/*all meanings*/ SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Alias);
|
||||
}
|
||||
|
||||
@@ -24493,7 +24483,7 @@ namespace ts {
|
||||
entityName = <QualifiedName | PropertyAccessEntityNameExpression>entityName.parent;
|
||||
}
|
||||
|
||||
if (isHeritageClauseElementIdentifier(<EntityName>entityName)) {
|
||||
if (isHeritageClauseElementIdentifier(entityName)) {
|
||||
let meaning = SymbolFlags.None;
|
||||
// In an interface or class, we're definitely interested in a type.
|
||||
if (entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments) {
|
||||
@@ -24509,7 +24499,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
meaning |= SymbolFlags.Alias;
|
||||
const entityNameSymbol = resolveEntityName(<EntityName>entityName, meaning);
|
||||
const entityNameSymbol = isEntityNameExpression(entityName) ? resolveEntityName(entityName, meaning) : undefined;
|
||||
if (entityNameSymbol) {
|
||||
return entityNameSymbol;
|
||||
}
|
||||
|
||||
@@ -1638,7 +1638,7 @@ namespace ts {
|
||||
multiLine?: boolean;
|
||||
}
|
||||
|
||||
export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression | ParenthesizedExpression;
|
||||
export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
|
||||
export type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
|
||||
|
||||
export interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
|
||||
|
||||
@@ -3286,7 +3286,7 @@ namespace ts {
|
||||
&& isClassLike(node.parent.parent);
|
||||
}
|
||||
|
||||
export function isEntityNameExpression(node: Expression): node is EntityNameExpression {
|
||||
export function isEntityNameExpression(node: Node): node is EntityNameExpression {
|
||||
return node.kind === SyntaxKind.Identifier ||
|
||||
node.kind === SyntaxKind.PropertyAccessExpression && isEntityNameExpression((<PropertyAccessExpression>node).expression);
|
||||
}
|
||||
|
||||
@@ -983,7 +983,7 @@ declare namespace ts {
|
||||
interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> {
|
||||
kind: SyntaxKind.ObjectLiteralExpression;
|
||||
}
|
||||
type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression | ParenthesizedExpression;
|
||||
type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
|
||||
type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
|
||||
interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
|
||||
kind: SyntaxKind.PropertyAccessExpression;
|
||||
|
||||
@@ -983,7 +983,7 @@ declare namespace ts {
|
||||
interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> {
|
||||
kind: SyntaxKind.ObjectLiteralExpression;
|
||||
}
|
||||
type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression | ParenthesizedExpression;
|
||||
type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
|
||||
type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
|
||||
interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
|
||||
kind: SyntaxKind.PropertyAccessExpression;
|
||||
|
||||
Reference in New Issue
Block a user