@@ -72,6 +72,9 @@ public ExpressionSyntaxRewriter(INamedTypeSymbol targetTypeSymbol, NullCondition
7272 {
7373 var diagnostic = Diagnostic . Create ( Diagnostics . NullConditionalRewriteUnsupported , node . GetLocation ( ) , node ) ;
7474 _context . ReportDiagnostic ( diagnostic ) ;
75+
76+ // Return the original node, do not attempt further rewrites
77+ return node ;
7578 }
7679
7780 else if ( _nullConditionalRewriteSupport is NullConditionalRewriteSupport . Ignore )
@@ -112,34 +115,34 @@ public ExpressionSyntaxRewriter(INamedTypeSymbol targetTypeSymbol, NullCondition
112115
113116 public override SyntaxNode ? VisitMemberBindingExpression ( MemberBindingExpressionSyntax node )
114117 {
115- if ( _conditionalAccessExpressionsStack . Count == 0 )
118+ if ( _conditionalAccessExpressionsStack . Count > 0 )
116119 {
117- throw new InvalidOperationException ( "Expected at least one conditional expression on the stack" ) ;
118- }
120+ var targetExpression = _conditionalAccessExpressionsStack . Pop ( ) ;
119121
120- var targetExpression = _conditionalAccessExpressionsStack . Pop ( ) ;
122+ return _nullConditionalRewriteSupport switch {
123+ NullConditionalRewriteSupport . Ignore => SyntaxFactory . MemberAccessExpression ( SyntaxKind . SimpleMemberAccessExpression , targetExpression , node . Name ) ,
124+ NullConditionalRewriteSupport . Rewrite => SyntaxFactory . MemberAccessExpression ( SyntaxKind . SimpleMemberAccessExpression , targetExpression , node . Name ) ,
125+ _ => node
126+ } ;
127+ }
121128
122- return _nullConditionalRewriteSupport switch {
123- NullConditionalRewriteSupport . Ignore => SyntaxFactory . MemberAccessExpression ( SyntaxKind . SimpleMemberAccessExpression , targetExpression , node . Name ) ,
124- NullConditionalRewriteSupport . Rewrite => SyntaxFactory . MemberAccessExpression ( SyntaxKind . SimpleMemberAccessExpression , targetExpression , node . Name ) ,
125- _ => node
126- } ;
129+ return base . VisitMemberBindingExpression ( node ) ;
127130 }
128131
129132 public override SyntaxNode ? VisitElementBindingExpression ( ElementBindingExpressionSyntax node )
130133 {
131- if ( _conditionalAccessExpressionsStack . Count == 0 )
134+ if ( _conditionalAccessExpressionsStack . Count > 0 )
132135 {
133- throw new InvalidOperationException ( "Expected at least one conditional expression on the stack" ) ;
134- }
136+ var targetExpression = _conditionalAccessExpressionsStack . Pop ( ) ;
135137
136- var targetExpression = _conditionalAccessExpressionsStack . Pop ( ) ;
138+ return _nullConditionalRewriteSupport switch {
139+ NullConditionalRewriteSupport . Ignore => SyntaxFactory . ElementAccessExpression ( targetExpression , node . ArgumentList ) ,
140+ NullConditionalRewriteSupport . Rewrite => SyntaxFactory . ElementAccessExpression ( targetExpression , node . ArgumentList ) ,
141+ _ => Visit ( node )
142+ } ;
143+ }
137144
138- return _nullConditionalRewriteSupport switch {
139- NullConditionalRewriteSupport . Ignore => SyntaxFactory . ElementAccessExpression ( targetExpression , node . ArgumentList ) ,
140- NullConditionalRewriteSupport . Rewrite => SyntaxFactory . ElementAccessExpression ( targetExpression , node . ArgumentList ) ,
141- _ => Visit ( node )
142- } ;
145+ return base . VisitElementBindingExpression ( node ) ;
143146 }
144147
145148 public override SyntaxNode ? VisitThisExpression ( ThisExpressionSyntax node )
0 commit comments