Skip to content

Commit 1c90ef5

Browse files
author
Kanchalai Tanglertsampan
committed
wip-fix resolveEntityName with parenthesizedExpression
1 parent 4b3cd6a commit 1c90ef5

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

src/compiler/checker.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,9 @@ namespace ts {
15111511
return undefined;
15121512
}
15131513
}
1514+
else if (name.kind === SyntaxKind.ParenthesizedExpression) {
1515+
return getSymbolOfNode(name.expression);
1516+
}
15141517
else {
15151518
Debug.fail("Unknown entity name kind.");
15161519
}
@@ -21069,7 +21072,6 @@ namespace ts {
2106921072

2107021073
if (isHeritageClauseElementIdentifier(<EntityName>entityName)) {
2107121074
let meaning = SymbolFlags.None;
21072-
2107321075
// In an interface or class, we're definitely interested in a type.
2107421076
if (entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments) {
2107521077
meaning = SymbolFlags.Type;
@@ -21084,9 +21086,13 @@ namespace ts {
2108421086
}
2108521087

2108621088
meaning |= SymbolFlags.Alias;
21087-
return resolveEntityName(<EntityName>entityName, meaning);
21089+
const entityNameSymbol = resolveEntityName(<EntityName>entityName, meaning);
21090+
if (entityNameSymbol) {
21091+
return entityNameSymbol;
21092+
}
2108821093
}
21089-
else if (isPartOfExpression(entityName)) {
21094+
21095+
if (isPartOfExpression(entityName)) {
2109021096
if (nodeIsMissing(entityName)) {
2109121097
// Missing entity name.
2109221098
return undefined;

src/compiler/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,7 @@ namespace ts {
13951395
multiLine?: boolean;
13961396
}
13971397

1398-
export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
1398+
export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression | ParenthesizedExpression;
13991399
export type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
14001400

14011401
export interface PropertyAccessExpression extends MemberExpression, Declaration {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
interface I {}
2+
interface CTor {
3+
new (hour: number, minute: number): I
4+
}
5+
var x: {
6+
B : CTor
7+
};
8+
class B {}
9+
function foo() {
10+
return {B: B};
11+
}
12+
class C extends (foo()).B {}

0 commit comments

Comments
 (0)