@@ -20,6 +20,10 @@ private Invocation(ExpressionNodeInfo info)
2020
2121 public static Expression Create ( ExpressionNodeInfo info ) => new Invocation ( info ) . TryPopulate ( ) ;
2222
23+ private bool IsEventDelegateCall ( ) => Kind == ExprKind . DELEGATE_INVOCATION && Context . GetModel ( Syntax . Expression ) . GetSymbolInfo ( Syntax . Expression ) . Symbol ? . Kind == SymbolKind . Event ;
24+
25+ private bool IsExplicitDelegateInvokeCall ( ) => Kind == ExprKind . DELEGATE_INVOCATION && Context . GetModel ( Syntax . Expression ) . GetSymbolInfo ( Syntax . Expression ) . Symbol is IMethodSymbol m && m . MethodKind == MethodKind . DelegateInvoke ;
26+
2327 protected override void PopulateExpression ( TextWriter trapFile )
2428 {
2529 if ( IsNameof ( Syntax ) )
@@ -33,7 +37,7 @@ protected override void PopulateExpression(TextWriter trapFile)
3337 var target = TargetSymbol ;
3438 switch ( Syntax . Expression )
3539 {
36- case MemberAccessExpressionSyntax memberAccess :
40+ case MemberAccessExpressionSyntax memberAccess when Kind == ExprKind . METHOD_INVOCATION || IsEventDelegateCall ( ) || IsExplicitDelegateInvokeCall ( ) :
3741 memberName = memberAccess . Name . Identifier . Text ;
3842 if ( Syntax . Expression . Kind ( ) == SyntaxKind . SimpleMemberAccessExpression )
3943 // Qualified method call; `x.M()`
@@ -48,7 +52,7 @@ protected override void PopulateExpression(TextWriter trapFile)
4852 Create ( Context , FindConditionalQualifier ( memberBinding ) , this , child ++ ) ;
4953 MakeConditional ( trapFile ) ;
5054 break ;
51- case SimpleNameSyntax simpleName when ( Kind == ExprKind . METHOD_INVOCATION ) :
55+ case SimpleNameSyntax simpleName when Kind == ExprKind . METHOD_INVOCATION :
5256 // Unqualified method call; `M()`
5357 memberName = simpleName . Identifier . Text ;
5458 if ( target is not null && ! target . IsStatic )
0 commit comments