@@ -11534,6 +11534,21 @@ namespace ts {
1153411534 diagnostics.add(createDiagnosticForNodeFromMessageChain(propNode, errorInfo));
1153511535 }
1153611536
11537+ function markPropertyAsReferenced(prop: Symbol) {
11538+ if (prop &&
11539+ noUnusedIdentifiers &&
11540+ (prop.flags & SymbolFlags.ClassMember) &&
11541+ prop.valueDeclaration && (getModifierFlags(prop.valueDeclaration) & ModifierFlags.Private)) {
11542+ if (prop.flags & SymbolFlags.Instantiated) {
11543+ getSymbolLinks(prop).target.isReferenced = true;
11544+
11545+ }
11546+ else {
11547+ prop.isReferenced = true;
11548+ }
11549+ }
11550+ }
11551+
1153711552 function checkPropertyAccessExpressionOrQualifiedName(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, right: Identifier) {
1153811553 const type = checkNonNullExpression(left);
1153911554 if (isTypeAny(type) || type === silentNeverType) {
@@ -11553,17 +11568,7 @@ namespace ts {
1155311568 return unknownType;
1155411569 }
1155511570
11556- if (noUnusedIdentifiers &&
11557- (prop.flags & SymbolFlags.ClassMember) &&
11558- prop.valueDeclaration && (getModifierFlags(prop.valueDeclaration) & ModifierFlags.Private)) {
11559- if (prop.flags & SymbolFlags.Instantiated) {
11560- getSymbolLinks(prop).target.isReferenced = true;
11561-
11562- }
11563- else {
11564- prop.isReferenced = true;
11565- }
11566- }
11571+ markPropertyAsReferenced(prop);
1156711572
1156811573 getNodeLinks(node).resolvedSymbol = prop;
1156911574
@@ -16353,6 +16358,7 @@ namespace ts {
1635316358 const parentType = getTypeForBindingElementParent(parent);
1635416359 const name = node.propertyName || <Identifier>node.name;
1635516360 const property = getPropertyOfType(parentType, getTextOfPropertyName(name));
16361+ markPropertyAsReferenced(property);
1635616362 if (parent.initializer && property && getParentOfSymbol(property)) {
1635716363 checkClassPropertyAccess(parent, parent.initializer, parentType, property);
1635816364 }
0 commit comments