Skip to content

Commit 7deef3d

Browse files
committed
Don't throw when out of accessible expressions
1 parent 88cebbc commit 7deef3d

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/EntityFrameworkCore.Projectables.Generator/ExpressionSyntaxRewriter.cs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,34 +112,34 @@ public ExpressionSyntaxRewriter(INamedTypeSymbol targetTypeSymbol, NullCondition
112112

113113
public override SyntaxNode? VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
114114
{
115-
if (_conditionalAccessExpressionsStack.Count == 0)
115+
if (_conditionalAccessExpressionsStack.Count > 0)
116116
{
117-
throw new InvalidOperationException("Expected at least one conditional expression on the stack");
118-
}
117+
var targetExpression = _conditionalAccessExpressionsStack.Pop();
119118

120-
var targetExpression = _conditionalAccessExpressionsStack.Pop();
119+
return _nullConditionalRewriteSupport switch {
120+
NullConditionalRewriteSupport.Ignore => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name),
121+
NullConditionalRewriteSupport.Rewrite => SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, targetExpression, node.Name),
122+
_ => node
123+
};
124+
}
121125

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-
};
126+
return base.VisitMemberBindingExpression(node);
127127
}
128128

129129
public override SyntaxNode? VisitElementBindingExpression(ElementBindingExpressionSyntax node)
130130
{
131-
if (_conditionalAccessExpressionsStack.Count == 0)
131+
if (_conditionalAccessExpressionsStack.Count > 0)
132132
{
133-
throw new InvalidOperationException("Expected at least one conditional expression on the stack");
134-
}
133+
var targetExpression = _conditionalAccessExpressionsStack.Pop();
135134

136-
var targetExpression = _conditionalAccessExpressionsStack.Pop();
135+
return _nullConditionalRewriteSupport switch {
136+
NullConditionalRewriteSupport.Ignore => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList),
137+
NullConditionalRewriteSupport.Rewrite => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList),
138+
_ => Visit(node)
139+
};
140+
}
137141

138-
return _nullConditionalRewriteSupport switch {
139-
NullConditionalRewriteSupport.Ignore => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList),
140-
NullConditionalRewriteSupport.Rewrite => SyntaxFactory.ElementAccessExpression(targetExpression, node.ArgumentList),
141-
_ => Visit(node)
142-
};
142+
return base.VisitElementBindingExpression(node);
143143
}
144144

145145
public override SyntaxNode? VisitThisExpression(ThisExpressionSyntax node)

0 commit comments

Comments
 (0)