Skip to content

Commit 930b942

Browse files
committed
Also count explicit type name usages in object construction as usages of the type itself
1 parent 3d58c9f commit 930b942

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/ApiUsageAnalyzer/FindAllReferences.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ public override void VisitEventReference(IEventReferenceOperation operation)
395395
base.VisitEventReference(operation);
396396

397397
if (operation.Syntax is MemberAccessExpressionSyntax memberAccess)
398-
VisitIfExplicitStaticReceiver(operation.SemanticModel!, memberAccess);
398+
VisitIfExplicitTypeName(operation.SemanticModel!, memberAccess.Expression);
399399

400400
declarationVisitor.VisitReference(operation.Event, declaringSymbol, () => [operation.Syntax switch
401401
{
@@ -409,7 +409,7 @@ public override void VisitFieldReference(IFieldReferenceOperation operation)
409409
base.VisitFieldReference(operation);
410410

411411
if (operation.Syntax is MemberAccessExpressionSyntax memberAccess)
412-
VisitIfExplicitStaticReceiver(operation.SemanticModel!, memberAccess);
412+
VisitIfExplicitTypeName(operation.SemanticModel!, memberAccess.Expression);
413413

414414
declarationVisitor.VisitReference(operation.Field, declaringSymbol, () => [operation.Syntax switch
415415
{
@@ -423,7 +423,7 @@ public override void VisitInvocation(IInvocationOperation operation)
423423
base.VisitInvocation(operation);
424424

425425
if (operation.Syntax is InvocationExpressionSyntax { Expression: MemberAccessExpressionSyntax memberAccess })
426-
VisitIfExplicitStaticReceiver(operation.SemanticModel!, memberAccess);
426+
VisitIfExplicitTypeName(operation.SemanticModel!, memberAccess.Expression);
427427

428428
declarationVisitor.VisitReference(operation.TargetMethod, declaringSymbol, () => [operation.Syntax switch
429429
{
@@ -433,11 +433,11 @@ public override void VisitInvocation(IInvocationOperation operation)
433433
}]);
434434
}
435435

436-
private void VisitIfExplicitStaticReceiver(SemanticModel semanticModel, MemberAccessExpressionSyntax syntax)
436+
private void VisitIfExplicitTypeName(SemanticModel semanticModel, SyntaxNode expression)
437437
{
438-
var symbolInfo = semanticModel.GetSymbolInfo(syntax.Expression, declarationVisitor.cancellationToken);
438+
var symbolInfo = semanticModel.GetSymbolInfo(expression, declarationVisitor.cancellationToken);
439439
if (symbolInfo.Symbol is ITypeSymbol type)
440-
declarationVisitor.VisitReference(type, declaringSymbol, () => [syntax.Expression.GetLocation()]);
440+
declarationVisitor.VisitReference(type, declaringSymbol, () => [expression.GetLocation()]);
441441
}
442442

443443
public override void VisitIsType(IIsTypeOperation operation)
@@ -466,6 +466,9 @@ public override void VisitObjectCreation(IObjectCreationOperation operation)
466466
{
467467
base.VisitObjectCreation(operation);
468468

469+
if (operation.Syntax is ObjectCreationExpressionSyntax objectCreation)
470+
VisitIfExplicitTypeName(operation.SemanticModel!, objectCreation.Type);
471+
469472
declarationVisitor.VisitReference(operation.Constructor, declaringSymbol, () => [operation.Syntax switch
470473
{
471474
ObjectCreationExpressionSyntax objectCreation => SyntaxUtils.Unify(objectCreation.NewKeyword.GetLocation(), objectCreation.Type.GetLocation()),
@@ -478,7 +481,7 @@ public override void VisitPropertyReference(IPropertyReferenceOperation operatio
478481
base.VisitPropertyReference(operation);
479482

480483
if (operation.Syntax is MemberAccessExpressionSyntax memberAccess)
481-
VisitIfExplicitStaticReceiver(operation.SemanticModel!, memberAccess);
484+
VisitIfExplicitTypeName(operation.SemanticModel!, memberAccess.Expression);
482485

483486
switch (operation.Parent)
484487
{

0 commit comments

Comments
 (0)