@@ -16945,18 +16945,20 @@ namespace ts {
16945
16945
// parameter symbols with declarations that have explicit type annotations. Such references are
16946
16946
// resolvable with no possibility of triggering circularities in control flow analysis.
16947
16947
function getTypeOfDottedName(node: Expression): Type | undefined {
16948
- switch (node.kind) {
16949
- case SyntaxKind.Identifier:
16950
- const symbol = getResolvedSymbol(<Identifier>node);
16951
- return getExplicitTypeOfSymbol(symbol.flags & SymbolFlags.Alias ? resolveAlias(symbol) : symbol);
16952
- case SyntaxKind.ThisKeyword:
16953
- return checkThisExpression(node);
16954
- case SyntaxKind.PropertyAccessExpression:
16955
- const type = getTypeOfDottedName((<PropertyAccessExpression>node).expression);
16956
- const prop = type && getPropertyOfType(type, (<PropertyAccessExpression>node).name.escapedText);
16957
- return prop && getExplicitTypeOfSymbol(prop);
16958
- case SyntaxKind.ParenthesizedExpression:
16959
- return getTypeOfDottedName((<ParenthesizedExpression>node).expression);
16948
+ if (!(node.flags & NodeFlags.InWithStatement)) {
16949
+ switch (node.kind) {
16950
+ case SyntaxKind.Identifier:
16951
+ const symbol = getResolvedSymbol(<Identifier>node);
16952
+ return getExplicitTypeOfSymbol(symbol.flags & SymbolFlags.Alias ? resolveAlias(symbol) : symbol);
16953
+ case SyntaxKind.ThisKeyword:
16954
+ return checkThisExpression(node);
16955
+ case SyntaxKind.PropertyAccessExpression:
16956
+ const type = getTypeOfDottedName((<PropertyAccessExpression>node).expression);
16957
+ const prop = type && getPropertyOfType(type, (<PropertyAccessExpression>node).name.escapedText);
16958
+ return prop && getExplicitTypeOfSymbol(prop);
16959
+ case SyntaxKind.ParenthesizedExpression:
16960
+ return getTypeOfDottedName((<ParenthesizedExpression>node).expression);
16961
+ }
16960
16962
}
16961
16963
}
16962
16964
0 commit comments