Skip to content

Commit

Permalink
remove unused code and renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
lbargaoanu committed Aug 21, 2017
1 parent 4d45846 commit a6e1427
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 31 deletions.
12 changes: 5 additions & 7 deletions src/AutoMapper/Execution/TypeMapPlanBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,7 @@ private Expression CreateMapperFunc(Expression assignmentFunc)
Default(_typeMap.DestinationTypeToUse));

if (_typeMap.Profile.AllowNullDestinationValues && !_typeMap.SourceType.IsValueType())
mapperFunc =
Condition(Equal(Source, Default(_typeMap.SourceType)),
Default(_typeMap.DestinationTypeToUse), mapperFunc.RemoveIfNotNull(Source));
mapperFunc = Source.IfNullElse(Default(_typeMap.DestinationTypeToUse), mapperFunc);

if (_typeMap.PreserveReferences)
{
Expand Down Expand Up @@ -325,7 +323,7 @@ private Expression ResolveSource(ConstructorParameterMap ctorParamMap)
{
if (ctorParamMap.CustomExpression != null)
return ctorParamMap.CustomExpression.ConvertReplaceParameters(Source)
.IfNotNull(ctorParamMap.DestinationType);
.NullCheck(ctorParamMap.DestinationType);
if (ctorParamMap.CustomValueResolver != null)
return ctorParamMap.CustomValueResolver.ConvertReplaceParameters(Source, Context);
if (ctorParamMap.Parameter.IsOptional)
Expand All @@ -339,7 +337,7 @@ private Expression ResolveSource(ConstructorParameterMap ctorParamMap)
? Call(getter.IsStatic() ? null : inner, (MethodInfo) getter)
: (Expression) MakeMemberAccess(getter.IsStatic() ? null : inner, getter)
)
.IfNotNull(ctorParamMap.DestinationType);
.NullCheck(ctorParamMap.DestinationType);
}

private Expression TryPropertyMap(PropertyMap propertyMap)
Expand Down Expand Up @@ -468,7 +466,7 @@ private Expression BuildValueResolverFunc(PropertyMap propertyMap, Expression de
else if (propertyMap.CustomExpression != null)
{
var nullCheckedExpression = propertyMap.CustomExpression.ReplaceParameters(Source)
.IfNotNull(destinationPropertyType);
.NullCheck(destinationPropertyType);
var destinationNullable = destinationPropertyType.IsNullableType();
var returnType = destinationNullable && destinationPropertyType.GetTypeOfNullable() ==
nullCheckedExpression.Type
Expand Down Expand Up @@ -500,7 +498,7 @@ private Expression BuildValueResolverFunc(PropertyMap propertyMap, Expression de
: (Expression) Call(inner, (MethodInfo) getter)
: MakeMemberAccess(getter.IsStatic() ? null : inner, getter)
);
valueResolverFunc = valueResolverFunc.IfNotNull(destinationPropertyType);
valueResolverFunc = valueResolverFunc.NullCheck(destinationPropertyType);
}
}
else if (propertyMap.SourceMember != null)
Expand Down
7 changes: 2 additions & 5 deletions src/AutoMapper/ExpressionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,8 @@ public static Expression Replace(this Expression exp, Expression old, Expression
public static LambdaExpression Concat(this LambdaExpression expr, LambdaExpression concat)
=> ExpressionFactory.Concat(expr, concat);

public static Expression IfNotNull(this Expression expression, Type destinationType)
=> ExpressionFactory.IfNotNull(expression, destinationType);

public static Expression RemoveIfNotNull(this Expression expression, params Expression[] expressions)
=> ExpressionFactory.RemoveIfNotNull(expression, expressions);
public static Expression NullCheck(this Expression expression, Type destinationType)
=> ExpressionFactory.NullCheck(expression, destinationType);

public static Expression IfNullElse(this Expression expression, Expression then, Expression @else = null)
=> ExpressionFactory.IfNullElse(expression, then, @else);
Expand Down
20 changes: 1 addition & 19 deletions src/AutoMapper/Internal/ExpressionFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public static Expression ConvertReplaceParameters(LambdaExpression exp, params E

public static LambdaExpression Concat(LambdaExpression expr, LambdaExpression concat) => (LambdaExpression)new ExpressionConcatVisitor(expr).Visit(concat);

public static Expression IfNotNull(Expression expression, Type destinationType)
public static Expression NullCheck(Expression expression, Type destinationType)
{
var target = expression;
Expression nullConditions = Constant(false);
Expand Down Expand Up @@ -151,30 +151,12 @@ void NullCheck()
}
}

public static Expression RemoveIfNotNull(Expression expression, params Expression[] expressions) => new RemoveIfNotNullVisitor(expressions).Visit(expression);

public static Expression IfNullElse(Expression expression, Expression then, Expression @else = null)
{
var isNull = expression.Type.IsValueType() && !expression.Type.IsNullableType() ? (Expression) Constant(false) : Equal(expression, Constant(null));
return Condition(isNull, then, ToType(@else ?? Default(then.Type), then.Type));
}

internal class RemoveIfNotNullVisitor : ExpressionVisitor
{
private readonly Expression[] _expressions;

public RemoveIfNotNullVisitor(params Expression[] expressions) => _expressions = expressions;

protected override Expression VisitConditional(ConditionalExpression node)
{
var member = node.IfFalse as MemberExpression;
var binary = node.Test as BinaryExpression;
if(member == null || binary == null || !_expressions.Contains(binary.Left) || !(binary.Right is DefaultExpression))
return base.VisitConditional(node);
return node.IfFalse;
}
}

internal class ConvertingVisitor : ExpressionVisitor
{
private readonly Expression _newParam;
Expand Down

0 comments on commit a6e1427

Please sign in to comment.