@@ -21289,8 +21289,12 @@ namespace ts {
2128921289 case SyntaxKind.PropertyAccessExpression:
2129021290 case SyntaxKind.ElementAccessExpression:
2129121291 return isAccessExpression(target) &&
21292- getAccessedPropertyName(<AccessExpression>source) === getAccessedPropertyName(target) &&
21293- isMatchingReference((<AccessExpression>source).expression, target.expression);
21292+ getAccessedPropertyName(source as AccessExpression) === getAccessedPropertyName(target) &&
21293+ isMatchingReference((source as AccessExpression).expression, target.expression);
21294+ case SyntaxKind.QualifiedName:
21295+ return isAccessExpression(target) &&
21296+ (source as QualifiedName).right.escapedText === getAccessedPropertyName(target) &&
21297+ isMatchingReference((source as QualifiedName).left, target.expression);
2129421298 case SyntaxKind.BinaryExpression:
2129521299 return (isBinaryExpression(source) && source.operatorToken.kind === SyntaxKind.CommaToken && isMatchingReference(source.right, target));
2129621300 }
@@ -26421,8 +26425,7 @@ namespace ts {
2642126425 // assignment target, and the referenced property was declared as a variable, property,
2642226426 // accessor, or optional method.
2642326427 const assignmentKind = getAssignmentTargetKind(node);
26424- if (!isAccessExpression(node) ||
26425- assignmentKind === AssignmentKind.Definite ||
26428+ if (assignmentKind === AssignmentKind.Definite ||
2642626429 prop && !(prop.flags & (SymbolFlags.Variable | SymbolFlags.Property | SymbolFlags.Accessor)) && !(prop.flags & SymbolFlags.Method && propType.flags & TypeFlags.Union)) {
2642726430 return propType;
2642826431 }
@@ -26434,7 +26437,7 @@ namespace ts {
2643426437 // and if we are in a constructor of the same class as the property declaration, assume that
2643526438 // the property is uninitialized at the top of the control flow.
2643626439 let assumeUninitialized = false;
26437- if (strictNullChecks && strictPropertyInitialization && node.expression.kind === SyntaxKind.ThisKeyword) {
26440+ if (strictNullChecks && strictPropertyInitialization && isAccessExpression(node) && node.expression.kind === SyntaxKind.ThisKeyword) {
2643826441 const declaration = prop && prop.valueDeclaration;
2643926442 if (declaration && isInstancePropertyWithoutInitializer(declaration)) {
2644026443 const flowContainer = getControlFlowContainer(node);
0 commit comments