@@ -952,19 +952,33 @@ public override VisualBasicSyntaxNode VisitInvocationExpression(CSS.InvocationEx
952952 }
953953
954954 var invokedCsExpression = node . Expression ;
955- if ( invokedCsExpression is CSS . MemberAccessExpressionSyntax csMemberAccess && csMemberAccess . Name . Identifier . Value . Equals ( "Invoke" ) && _commonConversions . IsEventHandlerIdentifier ( csMemberAccess . Expression ) ) {
955+ if ( invokedCsExpression is CSS . MemberAccessExpressionSyntax csMemberAccess && IsInvokeIdentifier ( csMemberAccess . Name ) ) {
956956 invokedCsExpression = csMemberAccess . Expression ;
957957 }
958958
959+ if ( TryCreateRaiseEventStatement ( invokedCsExpression , node . ArgumentList , out VisualBasicSyntaxNode visitInvocationExpression ) ) {
960+ return visitInvocationExpression ;
961+ }
962+
959963 var vbEventExpression = ( ExpressionSyntax ) invokedCsExpression . Accept ( TriviaConvertingVisitor ) ;
960964 var argumentListSyntax = ( ArgumentListSyntax ) node . ArgumentList . Accept ( TriviaConvertingVisitor ) ;
965+ return SyntaxFactory . InvocationExpression ( vbEventExpression , argumentListSyntax ) ;
966+ }
961967
962- if ( _commonConversions . IsEventHandlerIdentifier ( invokedCsExpression ) ) {
963- return SyntaxFactory . RaiseEventStatement ( RemoveEventSuffix ( GetSimpleName ( vbEventExpression ) ) ,
964- argumentListSyntax ) ;
968+ private bool TryCreateRaiseEventStatement ( CSS . ExpressionSyntax invokedCsExpression ,
969+ CSS . ArgumentListSyntax argumentListSyntax , out VisualBasicSyntaxNode visitInvocationExpression )
970+ {
971+ if ( _commonConversions . IsEventHandlerIdentifier ( invokedCsExpression ) )
972+ {
973+ var expressionSyntax = ( ExpressionSyntax ) invokedCsExpression . Accept ( TriviaConvertingVisitor ) ;
974+ var identifierNameSyntax = RemoveEventSuffix ( GetSimpleName ( expressionSyntax ) ) ;
975+ var argumentList = ( ArgumentListSyntax ) argumentListSyntax . Accept ( TriviaConvertingVisitor ) ;
976+ visitInvocationExpression = SyntaxFactory . RaiseEventStatement ( identifierNameSyntax , argumentList ) ;
977+ return true ;
965978 }
966979
967- return SyntaxFactory . InvocationExpression ( vbEventExpression , argumentListSyntax ) ;
980+ visitInvocationExpression = null ;
981+ return false ;
968982 }
969983
970984 private IdentifierNameSyntax RemoveEventSuffix ( SimpleNameSyntax name )
@@ -1009,13 +1023,22 @@ public override VisualBasicSyntaxNode VisitConditionalExpression(CSS.Conditional
10091023
10101024 public override VisualBasicSyntaxNode VisitConditionalAccessExpression ( CSS . ConditionalAccessExpressionSyntax node )
10111025 {
1026+ if ( node . WhenNotNull is CSS . InvocationExpressionSyntax invocation && invocation . Expression is CSS . MemberBindingExpressionSyntax binding && IsInvokeIdentifier ( binding . Name ) && TryCreateRaiseEventStatement ( node . Expression , invocation . ArgumentList , out var raiseEventStatement ) ) {
1027+ return raiseEventStatement ;
1028+ }
1029+
10121030 return SyntaxFactory . ConditionalAccessExpression (
10131031 ( ExpressionSyntax ) node . Expression . Accept ( TriviaConvertingVisitor ) ,
10141032 SyntaxFactory . Token ( SyntaxKind . QuestionToken ) ,
10151033 ( ExpressionSyntax ) node . WhenNotNull . Accept ( TriviaConvertingVisitor )
10161034 ) ;
10171035 }
10181036
1037+ private static bool IsInvokeIdentifier ( CSS . SimpleNameSyntax sns )
1038+ {
1039+ return sns . Identifier . Value . Equals ( "Invoke" ) ;
1040+ }
1041+
10191042 public override VisualBasicSyntaxNode VisitMemberAccessExpression ( CSS . MemberAccessExpressionSyntax node )
10201043 {
10211044 return WrapTypedNameIfNecessary ( SyntaxFactory . MemberAccessExpression (
0 commit comments