@@ -20,6 +20,10 @@ private Invocation(ExpressionNodeInfo info)
20
20
21
21
public static Expression Create ( ExpressionNodeInfo info ) => new Invocation ( info ) . TryPopulate ( ) ;
22
22
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
+
23
27
protected override void PopulateExpression ( TextWriter trapFile )
24
28
{
25
29
if ( IsNameof ( Syntax ) )
@@ -33,7 +37,7 @@ protected override void PopulateExpression(TextWriter trapFile)
33
37
var target = TargetSymbol ;
34
38
switch ( Syntax . Expression )
35
39
{
36
- case MemberAccessExpressionSyntax memberAccess :
40
+ case MemberAccessExpressionSyntax memberAccess when Kind == ExprKind . METHOD_INVOCATION || IsEventDelegateCall ( ) || IsExplicitDelegateInvokeCall ( ) :
37
41
memberName = memberAccess . Name . Identifier . Text ;
38
42
if ( Syntax . Expression . Kind ( ) == SyntaxKind . SimpleMemberAccessExpression )
39
43
// Qualified method call; `x.M()`
@@ -48,7 +52,7 @@ protected override void PopulateExpression(TextWriter trapFile)
48
52
Create ( Context , FindConditionalQualifier ( memberBinding ) , this , child ++ ) ;
49
53
MakeConditional ( trapFile ) ;
50
54
break ;
51
- case SimpleNameSyntax simpleName when ( Kind == ExprKind . METHOD_INVOCATION ) :
55
+ case SimpleNameSyntax simpleName when Kind == ExprKind . METHOD_INVOCATION :
52
56
// Unqualified method call; `M()`
53
57
memberName = simpleName . Identifier . Text ;
54
58
if ( target is not null && ! target . IsStatic )
0 commit comments