Skip to content

Commit

Permalink
break more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Sholtee committed Jan 17, 2020
1 parent 5219b4d commit ee1fd4a
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 26 deletions.
8 changes: 4 additions & 4 deletions SRC/Private/SyntaxFactories/DuckSyntaxFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ internal MethodDeclarationSyntax GenerateDuckMethod(MethodInfo ifaceMethod)
(
targetMethod,
TARGET,
castTarget: true,
castTargetTo: ifaceMethod.DeclaringType,
ifaceMethod
.GetParameters()
.Select(para => para.Name)
Expand Down Expand Up @@ -105,7 +105,7 @@ internal MemberDeclarationSyntax GenerateDuckProperty(PropertyInfo ifaceProperty
// maskepp vannak elnvezve a parameterei.
//

ExpressionSyntax propertyAccess = PropertyAccess(ifaceProperty, TARGET, castTarget: true);
ExpressionSyntax propertyAccess = PropertyAccess(ifaceProperty, TARGET, castTargetTo: ifaceProperty.DeclaringType);

//
// Nem gond ha mondjuk az interface property-nek nincs gettere, akkor a "getBody"
Expand Down Expand Up @@ -168,11 +168,11 @@ internal EventDeclarationSyntax GenerateDuckEvent(EventInfo ifaceEvent)
ifaceEvent,
addBody: ArrowExpressionClause
(
expression: RegisterEvent(targetEvent, TARGET, add: true, castTarget: true)
expression: RegisterEvent(targetEvent, TARGET, add: true, castTargetTo: ifaceEvent.DeclaringType)
),
removeBody: ArrowExpressionClause
(
expression: RegisterEvent(targetEvent, TARGET, add: false, castTarget: true)
expression: RegisterEvent(targetEvent, TARGET, add: false, castTargetTo: ifaceEvent.DeclaringType)
),
forceInlining: true
);
Expand Down
8 changes: 4 additions & 4 deletions SRC/Private/SyntaxFactories/ProxySyntaxFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ internal static IEnumerable<LocalDeclarationStatementSyntax> AcquireMethodInfo(M
(
METHOD_ACCESS,
target: null,
castTarget: false,
castTargetTo: null,
Argument
(
expression: ParenthesizedLambdaExpression
Expand All @@ -206,7 +206,7 @@ internal static IEnumerable<LocalDeclarationStatementSyntax> AcquireMethodInfo(M
(
method,
TARGET,
castTarget: false,
castTargetTo: null,

//
// GetDummyName() azert kell mert ByRef parameterek nem szerepelhetnek kifejezesekben.
Expand All @@ -233,7 +233,7 @@ internal static LocalDeclarationStatementSyntax CallInvoke(params ExpressionSynt
(
INVOKE,
target: null,
castTarget: false,
castTargetTo: null,
arguments: arguments.Select(Argument).ToArray()
));

Expand All @@ -258,7 +258,7 @@ internal static StatementSyntax CallTargetAndReturn(MethodInfo method)
InvocationExpressionSyntax invocation = InvokeMethod(
method,
TARGET,
castTarget: false,
castTargetTo: null,
arguments: method
.GetParameters()
.Select(p => p.Name)
Expand Down
32 changes: 16 additions & 16 deletions SRC/Private/SyntaxFactories/ProxySyntaxFactoryBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,20 +85,20 @@ private static AccessorDeclarationSyntax DeclareAccessor(SyntaxKind kind, CSharp
return declaration;
}

private static ExpressionSyntax AmendTarget(ExpressionSyntax target, MemberInfo member, bool castTarget)
private static ExpressionSyntax AmendTarget(ExpressionSyntax target, MemberInfo member, Type castTargetTo)
{
if (target == null)
{
target = member.IsStatic() ? CreateType(member.DeclaringType) : (ExpressionSyntax) ThisExpression();
}

if (castTarget)
if (castTargetTo != null)
{
Debug.Assert(!member.IsStatic());

target = ParenthesizedExpression
(
CastExpression(CreateType(member.DeclaringType), target)
CastExpression(CreateType(castTargetTo), target)
);
}

Expand All @@ -110,18 +110,18 @@ private static ExpressionSyntax AmendTarget(ExpressionSyntax target, MemberInfo
/// <summary>
/// [[(Type)] target | [(Type)] this | Namespace.Type].Member
/// </summary>
protected internal static MemberAccessExpressionSyntax MemberAccess(ExpressionSyntax target, MemberInfo member, bool castTarget = false) =>
protected internal static MemberAccessExpressionSyntax MemberAccess(ExpressionSyntax target, MemberInfo member, Type castTargetTo = null) =>
MemberAccessExpression
(
SyntaxKind.SimpleMemberAccessExpression,
AmendTarget(target, member, castTarget),
AmendTarget(target, member, castTargetTo),
IdentifierName(member.StrippedName())
);

/// <summary>
/// [[(Type)] target | [(Type)] this | Namespace.Type].Method[...](...)
/// </summary>
protected internal static MemberAccessExpressionSyntax MethodAccess(ExpressionSyntax target, MethodInfo method, bool castTarget = false)
protected internal static MemberAccessExpressionSyntax MethodAccess(ExpressionSyntax target, MethodInfo method, Type castTargetTo = null)
{
string methodName = method.StrippedName();

Expand All @@ -138,7 +138,7 @@ protected internal static MemberAccessExpressionSyntax MethodAccess(ExpressionSy
return MemberAccessExpression
(
SyntaxKind.SimpleMemberAccessExpression,
AmendTarget(target, method, castTarget),
AmendTarget(target, method, castTargetTo),
name
);
}
Expand Down Expand Up @@ -473,14 +473,14 @@ protected internal static EventDeclarationSyntax DeclareEvent(EventInfo @event,
/// <summary>
/// target.Event [+|-]= value;
/// </summary>
protected internal static AssignmentExpressionSyntax RegisterEvent(EventInfo @event, ExpressionSyntax target, bool add, bool castTarget = false) => AssignmentExpression
protected internal static AssignmentExpressionSyntax RegisterEvent(EventInfo @event, ExpressionSyntax target, bool add, Type castTargetTo = null) => AssignmentExpression
(
kind: add ? SyntaxKind.AddAssignmentExpression : SyntaxKind.SubtractAssignmentExpression,
left: MemberAccess
(
target,
@event,
castTarget
castTargetTo
),
right: IdentifierName(Value)
);
Expand All @@ -492,16 +492,16 @@ protected internal static AssignmentExpressionSyntax RegisterEvent(EventInfo @ev
/// <br/>
/// target.Propery[index]
/// </summary>
protected internal static ExpressionSyntax PropertyAccess(PropertyInfo property, ExpressionSyntax target, bool castTarget = false) => !property.IsIndexer()
protected internal static ExpressionSyntax PropertyAccess(PropertyInfo property, ExpressionSyntax target, Type castTargetTo = null) => !property.IsIndexer()
? MemberAccess
(
target,
property,
castTarget
castTargetTo
)
: (ExpressionSyntax) ElementAccessExpression
(
AmendTarget(target, property, castTarget),
AmendTarget(target, property, castTargetTo),
BracketedArgumentList
(
arguments: CreateList(property.GetIndexParameters(), param => Argument(IdentifierName(param.Name)))
Expand Down Expand Up @@ -663,7 +663,7 @@ protected internal static NameSyntax Qualify(params NameSyntax[] parts) => parts
/// <summary>
/// target.Foo(..., ..., ...)
/// </summary>
protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo method, ExpressionSyntax target, bool castTarget = false, params ArgumentSyntax[] arguments)
protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo method, ExpressionSyntax target, Type castTargetTo = null, params ArgumentSyntax[] arguments)
{
Debug.Assert(arguments.Length == method.GetParameters().Length);

Expand All @@ -673,7 +673,7 @@ protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo met
(
target,
method,
castTarget
castTargetTo
)
)
.WithArgumentList
Expand All @@ -685,7 +685,7 @@ protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo met
/// <summary>
/// target.Foo(ref a, b, c)
/// </summary>
protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo method, ExpressionSyntax target, bool castTarget = false, params string[] arguments)
protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo method, ExpressionSyntax target, Type castTargetTo = null, params string[] arguments)
{
IReadOnlyList<ParameterInfo> paramz = method.GetParameters();

Expand All @@ -695,7 +695,7 @@ protected internal static InvocationExpressionSyntax InvokeMethod(MethodInfo met
(
method,
target,
castTarget,
castTargetTo,
arguments: paramz
.Select((param, i) =>
{
Expand Down
4 changes: 2 additions & 2 deletions TEST/SyntaxFactories/ProxySyntaxFactoryBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void DeclareMethod_ShouldSupportRefKeywords() =>

[Test]
public void InvokeMethod_ShouldSupportRefKeywords() =>
Assert.That(InvokeMethod(typeof(IRefInterface).GetMethod(nameof(IRefInterface.RefMethod), BindingFlags.Instance | BindingFlags.Public), IdentifierName("target"), false, "a", "b", "c").NormalizeWhitespace().ToString(), Is.EqualTo("target.RefMethod(in a, out b, ref c)"));
Assert.That(InvokeMethod(typeof(IRefInterface).GetMethod(nameof(IRefInterface.RefMethod), BindingFlags.Instance | BindingFlags.Public), IdentifierName("target"), null, "a", "b", "c").NormalizeWhitespace().ToString(), Is.EqualTo("target.RefMethod(in a, out b, ref c)"));

private static void GenericMethod<T>(T a) { }

Expand All @@ -105,7 +105,7 @@ public static (MethodInfo Method, string Expected)[] GenericMethods = new[]

[TestCaseSource(nameof(GenericMethods))]
public void InvokeMethod_ShouldSupportGenerics((MethodInfo Method, string Expected) param) =>
Assert.That(InvokeMethod(param.Method, null, false, "a").NormalizeWhitespace().ToFullString(), Is.EqualTo(param.Expected));
Assert.That(InvokeMethod(param.Method, null, null, "a").NormalizeWhitespace().ToFullString(), Is.EqualTo(param.Expected));

private interface IRefInterface
{
Expand Down

0 comments on commit ee1fd4a

Please sign in to comment.