From 7deef3dbeffb535fbd4557ab3e885fa8382268dc Mon Sep 17 00:00:00 2001 From: Koen Date: Fri, 26 May 2023 00:54:53 +0100 Subject: [PATCH] Don't throw when out of accessible expressions --- .../ExpressionSyntaxRewriter.cs | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/EntityFrameworkCore.Projectables.Generator/ExpressionSyntaxRewriter.cs b/src/EntityFrameworkCore.Projectables.Generator/ExpressionSyntaxRewriter.cs index f5215c6..346c8d9 100644 --- a/src/EntityFrameworkCore.Projectables.Generator/ExpressionSyntaxRewriter.cs +++ b/src/EntityFrameworkCore.Projectables.Generator/ExpressionSyntaxRewriter.cs @@ -112,34 +112,34 @@ namespace EntityFrameworkCore.Projectables.Generator public override SyntaxNode? VisitMemberBindingExpression(MemberBindingExpressionSyntax node) { - if (_conditionalAccessExpressionsStack.Count == 0) + if (_conditionalAccessExpressionsStack.Count > 0) { - throw new InvalidOperationException("Expected at least one conditional expression on the stack"); + var targetExpression = _conditionalAccessExpressionsStack.Pop(); + + return _nullConditionalRewriteSupport switch { + NullConditionalRewriteSupport.Ignore => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name), + NullConditionalRewriteSupport.Rewrite => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name), + _ => node + }; } - var targetExpression = _conditionalAccessExpressionsStack.Pop(); - - return _nullConditionalRewriteSupport switch { - NullConditionalRewriteSupport.Ignore => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name), - NullConditionalRewriteSupport.Rewrite => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name), - _ => node - }; + return base.VisitMemberBindingExpression(node); } public override SyntaxNode? VisitElementBindingExpression(ElementBindingExpressionSyntax node) { - if (_conditionalAccessExpressionsStack.Count == 0) + if (_conditionalAccessExpressionsStack.Count > 0) { - throw new InvalidOperationException("Expected at least one conditional expression on the stack"); + var targetExpression = _conditionalAccessExpressionsStack.Pop(); + + return _nullConditionalRewriteSupport switch { + NullConditionalRewriteSupport.Ignore => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList), + NullConditionalRewriteSupport.Rewrite => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList), + _ => Visit(node) + }; } - var targetExpression = _conditionalAccessExpressionsStack.Pop(); - - return _nullConditionalRewriteSupport switch { - NullConditionalRewriteSupport.Ignore => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList), - NullConditionalRewriteSupport.Rewrite => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList), - _ => Visit(node) - }; + return base.VisitElementBindingExpression(node); } public override SyntaxNode? VisitThisExpression(ThisExpressionSyntax node)