Skip to content

Commit c82b6b0

Browse files
committed
CSHARP-5450: Verify that all calls to Translate or TranslateEnumerable are correct.
1 parent a8bccc2 commit c82b6b0

File tree

25 files changed

+34
-17
lines changed

25 files changed

+34
-17
lines changed

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/ArrayLengthExpressionToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static AggregationExpression Translate(TranslationContext context, UnaryE
2626
if (expression.NodeType == ExpressionType.ArrayLength)
2727
{
2828
var arrayExpression = expression.Operand;
29-
var arrayTranslation = ExpressionToAggregationExpressionTranslator.Translate(context, arrayExpression);
29+
var arrayTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, arrayExpression);
3030
var ast = AstExpression.Size(arrayTranslation.Ast);
3131
var serializer = BsonSerializer.LookupSerializer(expression.Type);
3232
return new AggregationExpression(expression, ast, serializer);

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/ContainsMethodToAggregationExpressionTranslator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,10 @@ private static AggregationExpression TranslateEnumerableContains(TranslationCont
7777
{
7878
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
7979
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
80+
8081
var valueTranslation = ExpressionToAggregationExpressionTranslator.Translate(context, valueExpression);
8182
var ast = AstExpression.In(valueTranslation.Ast, sourceTranslation.Ast);
83+
8284
return new AggregationExpression(expression, ast, BooleanSerializer.Instance);
8385
}
8486
}

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/DefaultIfEmptyMethodToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ public static AggregationExpression Translate(TranslationContext context, Method
4949
{
5050
var sourceExpression = arguments[0];
5151
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
52-
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
5352
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
53+
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
5454

5555
var (sourceVarBinding, sourceAst) = AstExpression.UseVarIfNotSimple("source", sourceTranslation.Ast);
5656
AstExpression defaultValueAst;

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/DistinctMethodToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public static AggregationExpression Translate(TranslationContext context, Method
3939
{
4040
var sourceExpression = arguments[0];
4141
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
42-
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
4342
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
43+
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
4444

4545
var ast = AstExpression.SetIntersection(sourceTranslation.Ast);
4646
var serializer = NestedAsQueryableSerializer.CreateIEnumerableOrNestedAsQueryableSerializer(expression.Type, itemSerializer);

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/ElementAtMethodToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public static AggregationExpression Translate(TranslationContext context, Method
4747
{
4848
var sourceExpression = arguments[0];
4949
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
50-
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
5150
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
51+
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
5252

5353
var indexExpression = arguments[1];
5454
var indexTranslation = ExpressionToAggregationExpressionTranslator.Translate(context, indexExpression);

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/PickMethodToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public static AggregationExpression Translate(TranslationContext context, Method
102102
{
103103
var sourceExpression = arguments[0];
104104
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
105+
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
105106
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
106107

107108
if (method.IsOneOf(__accumulatorOnlyMethods) && !IsGroupingSource(sourceTranslation.Ast))

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/ReverseMethodToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public static AggregationExpression Translate(TranslationContext context, Method
4040
var sourceExpression = arguments[0];
4141
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
4242
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
43+
4344
var ast = AstExpression.ReverseArray(sourceTranslation.Ast);
4445
var itemSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
4546
var serializer = NestedAsQueryableSerializer.CreateIEnumerableOrNestedAsQueryableSerializer(expression.Type, itemSerializer);

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/SelectManyMethodToAggregationExpressionTranslator.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,14 @@ public static AggregationExpression Translate(TranslationContext context, Method
4040
var sourceExpression = arguments[0];
4141
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
4242
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
43+
4344
var selectorLambda = ExpressionHelper.UnquoteLambdaIfQueryableMethod(method, arguments[1]);
4445
var selectorParameter = selectorLambda.Parameters[0];
4546
var selectorParameterSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
4647
var selectorParameterSymbol = context.CreateSymbol(selectorParameter, selectorParameterSerializer);
4748
var selectorContext = context.WithSymbol(selectorParameterSymbol);
4849
var selectorTranslation = ExpressionToAggregationExpressionTranslator.Translate(selectorContext, selectorLambda.Body);
50+
4951
var asVar = selectorParameterSymbol.Var;
5052
var valueVar = AstExpression.Var("value");
5153
var thisVar = AstExpression.Var("this");
@@ -56,6 +58,7 @@ public static AggregationExpression Translate(TranslationContext context, Method
5658
@in: selectorTranslation.Ast),
5759
initialValue: new BsonArray(),
5860
@in: AstExpression.ConcatArrays(valueVar, thisVar));
61+
5962
return new AggregationExpression(expression, ast, selectorTranslation.Serializer);
6063
}
6164

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/SelectMethodToAggregationExpressionTranslator.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,20 @@ public static AggregationExpression Translate(TranslationContext context, Method
4040
var sourceExpression = arguments[0];
4141
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
4242
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
43+
4344
var selectorLambda = ExpressionHelper.UnquoteLambdaIfQueryableMethod(method, arguments[1]);
4445
var selectorParameter = selectorLambda.Parameters[0];
4546
var selectorParameterSerializer = ArraySerializerHelper.GetItemSerializer(sourceTranslation.Serializer);
4647
var selectorParameterSymbol = context.CreateSymbol(selectorParameter, selectorParameterSerializer);
4748
var selectorContext = context.WithSymbol(selectorParameterSymbol);
4849
var translatedSelector = ExpressionToAggregationExpressionTranslator.Translate(selectorContext, selectorLambda.Body);
50+
4951
var ast = AstExpression.Map(
5052
sourceTranslation.Ast,
5153
selectorParameterSymbol.Var,
5254
translatedSelector.Ast);
5355
var serializer = NestedAsQueryableSerializer.CreateIEnumerableOrNestedAsQueryableSerializer(expression.Type, itemSerializer : translatedSelector.Serializer);
56+
5457
return new AggregationExpression(expression, ast, serializer);
5558
}
5659

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToAggregationExpressionTranslators/MethodTranslators/StandardDeviationMethodsToAggregationExpressionTranslator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public static AggregationExpression Translate(TranslationContext context, Method
3434
{
3535
var sourceExpression = arguments[0];
3636
var sourceTranslation = ExpressionToAggregationExpressionTranslator.TranslateEnumerable(context, sourceExpression);
37+
NestedAsQueryableHelper.EnsureQueryableMethodHasNestedAsQueryableSource(expression, sourceTranslation);
3738

3839
if (arguments.Count == 2)
3940
{

0 commit comments

Comments
 (0)