Skip to content

Commit 8a03ac0

Browse files
committed
Rename ProjectionExpression.Apply(ItemProjectorExpression) -> ApplyItemProjector
1 parent de92c75 commit 8a03ac0

11 files changed

+35
-31
lines changed

Orm/Xtensive.Orm/Orm/Linq/Expressions/GroupingExpression.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public override Expression ReplaceApplyParameter(ApplyParameter newApplyParamete
9090
return new GroupingExpression(Type, OuterParameter, DefaultIfEmpty, ProjectionExpression, ApplyParameter, KeyExpression, SelectManyInfo);
9191

9292
var newItemProjector = ProjectionExpression.ItemProjector.RewriteApplyParameter(ApplyParameter, newApplyParameter);
93-
var newProjectionExpression = ProjectionExpression.Apply(newItemProjector);
93+
var newProjectionExpression = ProjectionExpression.ApplyItemProjector(newItemProjector);
9494
return new GroupingExpression(Type, OuterParameter, DefaultIfEmpty, newProjectionExpression, newApplyParameter, KeyExpression, SelectManyInfo);
9595
}
9696

Orm/Xtensive.Orm/Orm/Linq/Expressions/ProjectionExpression.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ internal class ProjectionExpression : ExtendedExpression
2121

2222
public override string ToString() => $"Projection: {ItemProjector}, IsScalar = {IsScalar}";
2323

24-
public ProjectionExpression Apply(ItemProjectorExpression itemProjectorExpression) =>
24+
/// <summary>
25+
/// Creates new <see cref="ProjectionExpression"/> based on this instance. New projection
26+
/// inherits all properties but <see cref="ProjectionExpression.ItemProjector"/>, which is
27+
/// replaced by the given <paramref name="itemProjectorExpression"/>.
28+
/// </summary>
29+
/// <param name="itemProjectorExpression">Replacement of <see cref="ProjectionExpression.ItemProjector"/>.</param>
30+
/// <returns>New instance with replaced item projector.</returns>
31+
public ProjectionExpression ApplyItemProjector(ItemProjectorExpression itemProjectorExpression) =>
2532
new ProjectionExpression(Type, itemProjectorExpression, TupleParameterBindings, ResultAccessMethod);
2633

2734
// Constructors

Orm/Xtensive.Orm/Orm/Linq/Expressions/SubQueryExpression.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public virtual Expression ReplaceApplyParameter(ApplyParameter newApplyParameter
109109
return new SubQueryExpression(Type, OuterParameter, DefaultIfEmpty, ProjectionExpression, ApplyParameter);
110110

111111
var newItemProjector = ProjectionExpression.ItemProjector.RewriteApplyParameter(ApplyParameter, newApplyParameter);
112-
var newProjectionExpression = ProjectionExpression.Apply(newItemProjector);
112+
var newProjectionExpression = ProjectionExpression.ApplyItemProjector(newItemProjector);
113113
return new SubQueryExpression(Type, OuterParameter, DefaultIfEmpty, newProjectionExpression, newApplyParameter);
114114
}
115115

Orm/Xtensive.Orm/Orm/Linq/Expressions/Visitors/ExtendedExpressionReplacer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected override Expression VisitProjectionExpression(ProjectionExpression pro
3838
var itemChanged = item != projectionExpression.ItemProjector.Item;
3939
if (providerChanged || itemChanged) {
4040
var itemProjector = new ItemProjectorExpression(item, provider, projectionExpression.ItemProjector.Context);
41-
return projectionExpression.Apply(itemProjector);
41+
return projectionExpression.ApplyItemProjector(itemProjector);
4242
}
4343
return projectionExpression;
4444
}

Orm/Xtensive.Orm/Orm/Linq/LinqBindingCollection.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public override void ReplaceBound(ParameterExpression key, ProjectionExpression
6666
if (parameter!=key) {
6767
var projection = this[parameter];
6868
var newItemProjector = projection.ItemProjector.Remap(value.ItemProjector.DataSource, 0);
69-
var newProjection = projection.Apply(newItemProjector);
69+
var newProjection = projection.ApplyItemProjector(newItemProjector);
7070
base.ReplaceBound(parameter, newProjection);
7171
}
7272
}

Orm/Xtensive.Orm/Orm/Linq/Materialization/ExpressionMaterializer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ private TranslatedQuery PrepareSubqueryParameters(SubQueryExpression subQueryExp
193193

194194
// 2. Add only parameter<tuple>. Tuple value will be assigned
195195
// at the moment of materialization in SubQuery constructor
196-
projection = projectionExpression.Apply(itemProjector);
196+
projection = projectionExpression.ApplyItemProjector(itemProjector);
197197

198198
// 3. Make translation
199199
elementType = projectionExpression.ItemProjector.Item.Type;

Orm/Xtensive.Orm/Orm/Linq/Rewriters/ApplyParameterRewriter.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ protected override Expression VisitGroupingExpression(GroupingExpression express
4848
|| newItemProjectorBody != projectionExpression.ItemProjector.Item
4949
|| newKeyExpression != expression.KeyExpression) {
5050
var newItemProjector = new ItemProjectorExpression(newItemProjectorBody, newProvider, projectionExpression.ItemProjector.Context);
51-
var newProjectionExpression = projectionExpression.Apply(newItemProjector);
51+
var newProjectionExpression = projectionExpression.ApplyItemProjector(newItemProjector);
5252
return new GroupingExpression(
5353
expression.Type, expression.OuterParameter, expression.DefaultIfEmpty, newProjectionExpression,
5454
expression.ApplyParameter, expression.KeyExpression, expression.SelectManyInfo);
@@ -65,7 +65,7 @@ protected override Expression VisitSubQueryExpression(SubQueryExpression express
6565
|| newItemProjectorBody != projectionExpression.ItemProjector.Item) {
6666
var newItemProjector = new ItemProjectorExpression(
6767
newItemProjectorBody, newProvider, projectionExpression.ItemProjector.Context);
68-
var newProjectionExpression = projectionExpression.Apply(newItemProjector);
68+
var newProjectionExpression = projectionExpression.ApplyItemProjector(newItemProjector);
6969
return new SubQueryExpression(
7070
expression.Type, expression.OuterParameter, expression.DefaultIfEmpty, newProjectionExpression,
7171
expression.ApplyParameter, expression.ExtendedType);

Orm/Xtensive.Orm/Orm/Linq/Rewriters/ApplyParameterToTupleParameterRewriter.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected override Expression VisitGroupingExpression(GroupingExpression express
4949
|| newItemProjectorBody != projectionExpression.ItemProjector.Item
5050
|| newKeyExpression != expression.KeyExpression) {
5151
var newItemProjector = new ItemProjectorExpression(newItemProjectorBody, newProvider, projectionExpression.ItemProjector.Context);
52-
var newProjectionExpression = projectionExpression.Apply(newItemProjector);
52+
var newProjectionExpression = projectionExpression.ApplyItemProjector(newItemProjector);
5353
return new GroupingExpression(
5454
expression.Type, expression.OuterParameter, expression.DefaultIfEmpty,
5555
newProjectionExpression, expression.ApplyParameter,
@@ -65,7 +65,7 @@ protected override Expression VisitSubQueryExpression(SubQueryExpression express
6565
var newItemProjectorBody = Visit(projectionExpression.ItemProjector.Item);
6666
if (newProvider != projectionExpression.ItemProjector.DataSource || newItemProjectorBody != projectionExpression.ItemProjector.Item) {
6767
var newItemProjector = new ItemProjectorExpression(newItemProjectorBody, newProvider, projectionExpression.ItemProjector.Context);
68-
var newProjectionExpression = projectionExpression.Apply(newItemProjector);
68+
var newProjectionExpression = projectionExpression.ApplyItemProjector(newItemProjector);
6969
return new SubQueryExpression(
7070
expression.Type, expression.OuterParameter,
7171
expression.DefaultIfEmpty, newProjectionExpression,

Orm/Xtensive.Orm/Orm/Linq/Translator.Expressions.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ protected override Expression VisitNew(NewExpression newExpression)
706706

707707
internal static bool FilterBindings(MemberInfo mi, string name, Type type)
708708
{
709-
var result = String.Equals(mi.Name, name, StringComparison.InvariantCultureIgnoreCase);
709+
var result = string.Equals(mi.Name, name, StringComparison.InvariantCultureIgnoreCase);
710710
if (!result)
711711
return false;
712712

@@ -725,7 +725,8 @@ internal static bool FilterBindings(MemberInfo mi, string name, Type type)
725725

726726
#region Private helper methods
727727

728-
private Dictionary<MemberInfo, Expression> GetBindingsForConstructor(ParameterInfo[] constructorParameters, IList<Expression> constructorArguments, Expression newExpression)
728+
private Dictionary<MemberInfo, Expression> GetBindingsForConstructor(
729+
ParameterInfo[] constructorParameters, IList<Expression> constructorArguments, Expression newExpression)
729730
{
730731
var bindings = new Dictionary<MemberInfo, Expression>();
731732
var duplicateMembers = new HashSet<MemberInfo>();

Orm/Xtensive.Orm/Orm/Linq/Translator.Materialization.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ internal TranslatedQuery Translate(ProjectionExpression projection,
4747
if (context.SessionTags != null)
4848
result = ApplySessionTags(result, context.SessionTags);
4949
var newItemProjector = result.ItemProjector.EnsureEntityIsJoined();
50-
result = result.Apply(newItemProjector);
50+
result = result.ApplyItemProjector(newItemProjector);
5151

5252
var optimized = Optimize(result);
5353

@@ -92,7 +92,7 @@ private static ProjectionExpression Optimize(ProjectionExpression origin)
9292
var usedColumnsArray = usedColumns.ToArray();
9393
var resultProvider = new SelectProvider(originProvider, usedColumnsArray);
9494
var itemProjector = origin.ItemProjector.Remap(resultProvider, usedColumnsArray);
95-
var result = origin.Apply(itemProjector);
95+
var result = origin.ApplyItemProjector(itemProjector);
9696
return result;
9797
}
9898
return origin;
@@ -115,7 +115,7 @@ private static ProjectionExpression ApplySessionTags(ProjectionExpression origin
115115
var projector = currentProjection.ItemProjector;
116116
var newDataSource = projector.DataSource.Tag(tag);
117117
var newItemProjector = new ItemProjectorExpression(projector.Item, newDataSource, projector.Context);
118-
currentProjection = currentProjection.Apply(newItemProjector);
118+
currentProjection = currentProjection.ApplyItemProjector(newItemProjector);
119119
}
120120
return currentProjection;
121121
}
@@ -208,7 +208,7 @@ private ProjectionExpression GetIndexBinding(LambdaExpression le, ref Projection
208208
var indexItemProjector = new ItemProjectorExpression(itemExpression, indexDataSource, context);
209209
var indexProjectionExpression = new ProjectionExpression(WellKnownTypes.Int64, indexItemProjector, sequence.TupleParameterBindings);
210210
var sequenceItemProjector = sequence.ItemProjector.Remap(indexDataSource, 0);
211-
sequence = sequence.Apply(sequenceItemProjector);
211+
sequence = sequence.ApplyItemProjector(sequenceItemProjector);
212212
return indexProjectionExpression;
213213
}
214214
return null;

Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs

+11-15
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ private Expression VisitLock(MethodCallExpression expression)
264264
var newDataSource = visitedSource.ItemProjector.DataSource.Lock(lockMode, lockBehavior);
265265
var newItemProjector = new ItemProjectorExpression(
266266
visitedSource.ItemProjector.Item, newDataSource, visitedSource.ItemProjector.Context);
267-
var projectionExpression = visitedSource.Apply(newItemProjector);
267+
var projectionExpression = visitedSource.ApplyItemProjector(newItemProjector);
268268
return projectionExpression;
269269
}
270270

@@ -290,11 +290,7 @@ private Expression VisitTag(MethodCallExpression expression)
290290
: visitedSource.ItemProjector.DataSource;
291291
var newItemProjector = new ItemProjectorExpression(
292292
visitedSource.ItemProjector.Item, newDataSource, visitedSource.ItemProjector.Context);
293-
var projectionExpression = new ProjectionExpression(
294-
visitedSource.Type,
295-
newItemProjector,
296-
visitedSource.TupleParameterBindings,
297-
visitedSource.ResultAccessMethod);
293+
var projectionExpression = visitedSource.ApplyItemProjector(newItemProjector);
298294
return projectionExpression;
299295
}
300296

@@ -349,7 +345,7 @@ private ProjectionExpression VisitCast(Expression source, Type targetType, Type
349345

350346
var visitedSource = VisitSequence(source);
351347
var itemProjector = visitedSource.ItemProjector.EnsureEntityIsJoined();
352-
var projection = visitedSource.Apply(itemProjector);
348+
var projection = visitedSource.ApplyItemProjector(itemProjector);
353349
if (targetType == sourceType) {
354350
return projection;
355351
}
@@ -772,14 +768,14 @@ private Expression VisitAggregate(Expression source, MethodInfo method, LambdaEx
772768
groupingDataSource.GroupColumnIndexes,
773769
(IReadOnlyList<AggregateColumnDescriptor>) aggregateDescriptors);
774770
var optimizedItemProjector = groupingProjection.ItemProjector.Remap(resultDataSource, 0);
775-
groupingProjection = groupingProjection.Apply(optimizedItemProjector);
771+
groupingProjection = groupingProjection.ApplyItemProjector(optimizedItemProjector);
776772
context.Bindings.ReplaceBound(groupingParameter, groupingProjection);
777773
var isSubqueryParameter = State.OuterParameters.Contains(groupingParameter);
778774
if (isSubqueryParameter) {
779775
var newApplyParameter = context.GetApplyParameter(resultDataSource);
780776
foreach (var innerParameter in State.Parameters) {
781777
var projectionExpression = context.Bindings[innerParameter];
782-
var newProjectionExpression = projectionExpression.Apply(projectionExpression.ItemProjector.RewriteApplyParameter(groupingFilterParameter, newApplyParameter));
778+
var newProjectionExpression = projectionExpression.ApplyItemProjector(projectionExpression.ItemProjector.RewriteApplyParameter(groupingFilterParameter, newApplyParameter));
783779
context.Bindings.ReplaceBound(innerParameter, newProjectionExpression);
784780
}
785781
}
@@ -1048,7 +1044,7 @@ private ProjectionExpression VisitGroupBy(Type returnType, Expression source, La
10481044
});
10491045

10501046
var filter = FastExpression.Lambda(filterBody, tupleParameter);
1051-
var subqueryProjection = sequence.Apply(new ItemProjectorExpression(
1047+
var subqueryProjection = sequence.ApplyItemProjector(new ItemProjectorExpression(
10521048
sequence.ItemProjector.Item,
10531049
groupingSourceProjection.ItemProjector.DataSource.Filter((Expression<Func<Tuple, bool>>) filter),
10541050
context));
@@ -1240,7 +1236,7 @@ private Expression VisitGroupJoin(Expression outerSource, Expression innerSource
12401236
newGroupingExpression,
12411237
innerGrouping.ItemProjector.DataSource,
12421238
innerGrouping.ItemProjector.Context);
1243-
innerGrouping = innerGrouping.Apply(newGroupingItemProjector);
1239+
innerGrouping = innerGrouping.ApplyItemProjector(newGroupingItemProjector);
12441240
}
12451241

12461242
var groupingKeyPropertyInfo = groupingType.GetProperty(WellKnown.KeyFieldName);
@@ -1328,7 +1324,7 @@ private ProjectionExpression VisitSelectMany(Expression source, LambdaExpression
13281324
innerItemProjector = innerItemProjector.SetDefaultIfEmpty();
13291325
}
13301326

1331-
innerProjection = projection.Apply(innerItemProjector);
1327+
innerProjection = projection.ApplyItemProjector(innerItemProjector);
13321328
}
13331329

13341330
var outerProjection = context.Bindings[outerParameter];
@@ -1348,7 +1344,7 @@ private ProjectionExpression VisitSelectMany(Expression source, LambdaExpression
13481344

13491345
var resultProjection = CombineProjections(outerProjection, innerProjection, recordSet, resultSelector);
13501346
var resultItemProjector = resultProjection.ItemProjector.RemoveOuterParameter();
1351-
resultProjection = resultProjection.Apply(resultItemProjector);
1347+
resultProjection = resultProjection.ApplyItemProjector(resultItemProjector);
13521348
return resultProjection;
13531349
}
13541350
}
@@ -1513,7 +1509,7 @@ private Expression VisitExistsAsInclude(Expression source, LambdaExpression pred
15131509
.Include(State.IncludeAlgorithm, true, rawProvider.Source, context.GetNextAlias(), filteredColumns);
15141510

15151511
var newItemProjector = outerResult.ItemProjector.Remap(newDataSource, 0);
1516-
var newOuterResult = outerResult.Apply(newItemProjector);
1512+
var newOuterResult = outerResult.ApplyItemProjector(newItemProjector);
15171513
context.Bindings.ReplaceBound(outerParameter, newOuterResult);
15181514
Expression resultExpression = ColumnExpression.Create(WellKnownTypes.Bool, columnIndex);
15191515
if (notExists) {
@@ -1698,7 +1694,7 @@ private ProjectionExpression VisitSequence(Expression sequenceExpression, Expres
16981694
if (result != null) {
16991695
var projectorExpression = result.ItemProjector.EnsureEntityIsJoined();
17001696
if (projectorExpression != result.ItemProjector) {
1701-
result = result.Apply(projectorExpression);
1697+
result = result.ApplyItemProjector(projectorExpression);
17021698
}
17031699

17041700
return result;

0 commit comments

Comments
 (0)