Skip to content

Commit 16501c0

Browse files
committed
updated code to be more resilient to constant location.
1 parent 1f8be41 commit 16501c0

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/MongoDB.Driver/Linq/Processors/Normalizer.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,7 @@ private BinaryExpression EnsureConstantIsOnRight(BinaryExpression node)
163163
var left = node.Left;
164164
var right = node.Right;
165165
var operatorType = node.NodeType;
166-
if (left.NodeType == ExpressionType.Constant ||
167-
(left.NodeType == ExpressionType.Convert && ((UnaryExpression)left).Operand.NodeType == ExpressionType.Constant) ||
168-
(left.NodeType == ExpressionType.ConvertChecked && ((UnaryExpression)left).Operand.NodeType == ExpressionType.Constant))
166+
if (RemoveUnnecessaries(left).NodeType == ExpressionType.Constant)
169167
{
170168
right = node.Left;
171169
left = node.Right;
@@ -209,5 +207,17 @@ private Expression VisitVBCompilerServicesOperatorsCompareString(MethodCallExpre
209207

210208
return null;
211209
}
210+
211+
private Expression RemoveUnnecessaries(Expression node)
212+
{
213+
while (node.NodeType == ExpressionType.Convert ||
214+
node.NodeType == ExpressionType.ConvertChecked ||
215+
node.NodeType == ExpressionType.Quote)
216+
{
217+
node = ((UnaryExpression)node).Operand;
218+
}
219+
220+
return node;
221+
}
212222
}
213223
}

0 commit comments

Comments
 (0)