@@ -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,12 @@ public override void VisitObjectCreation(IObjectCreationOperation operation)
466466 {
467467 base . VisitObjectCreation ( operation ) ;
468468
469+ if ( operation . Syntax is ObjectCreationExpressionSyntax objectCreation )
470+ {
471+ VisitIfExplicitTypeName ( operation . SemanticModel ! , objectCreation . Type ) ;
472+ return ;
473+ }
474+
469475 declarationVisitor . VisitReference ( operation . Constructor , declaringSymbol , ( ) => [ operation . Syntax switch
470476 {
471477 ObjectCreationExpressionSyntax objectCreation => SyntaxUtils . Unify ( objectCreation . NewKeyword . GetLocation ( ) , objectCreation . Type . GetLocation ( ) ) ,
@@ -478,7 +484,7 @@ public override void VisitPropertyReference(IPropertyReferenceOperation operatio
478484 base . VisitPropertyReference ( operation ) ;
479485
480486 if ( operation . Syntax is MemberAccessExpressionSyntax memberAccess )
481- VisitIfExplicitStaticReceiver ( operation . SemanticModel ! , memberAccess ) ;
487+ VisitIfExplicitTypeName ( operation . SemanticModel ! , memberAccess . Expression ) ;
482488
483489 switch ( operation . Parent )
484490 {
0 commit comments