Skip to content

Commit 72ea288

Browse files
authored
Merge pull request #7 from brandhuf/bugfix/MissingDependenciesToGenericStaticMethods
fixed wrong assignment of MethodCallDependencies to generic static methods
2 parents 892595c + b6b82cf commit 72ea288

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

ArchUnitNET/Core/LoadTasks/AddMethodDependencies.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,16 +167,24 @@ private void HandlePropertyBackingFieldDependencies(MethodBody methodBody)
167167
private IEnumerable<MethodCallDependency> CreateMethodCallDependenciesFromBody(MethodMember methodMember,
168168
MethodBody methodBody)
169169
{
170-
return methodBody.Instructions
171-
.Select(instruction => instruction.Operand)
172-
.OfType<MethodReference>()
170+
var operands = methodBody.Instructions
171+
.Select(instruction => instruction.Operand).ToList();
172+
173+
return operands.OfType<MethodReference>()
173174
.Select(methodReference =>
174175
{
175176
var calledType =
176177
_typeFactory.GetOrCreateStubTypeFromTypeReference(methodReference.DeclaringType);
177178

178179
return calledType.GetMethodMemberWithFullName(methodReference.FullName);
179180
})
181+
.Concat(operands.OfType<GenericInstanceMethod>()
182+
.Select(genericMethod =>
183+
{
184+
var calledType = _typeFactory.GetOrCreateStubTypeFromTypeReference(genericMethod.DeclaringType);
185+
186+
return calledType.GetMethodMemberWithFullName(genericMethod.GetFullName());
187+
}))
180188
.Where(calledMethodMember => calledMethodMember != null)
181189
.Select(calledMethodMember => new MethodCallDependency(methodMember, calledMethodMember));
182190
}

ArchUnitNET/Fluent/Extensions/MonoCecilMemberExtensions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,5 +208,12 @@ public static string GetFullName(this MethodDefinition methodDefinition)
208208
return methodDefinition.FullName + methodDefinition.GenericParameters.Aggregate(string.Empty,
209209
(current, newElement) => current + "<" + newElement.Name + ">");
210210
}
211+
212+
public static string GetFullName(this GenericInstanceMethod genericInstanceMethod)
213+
{
214+
return genericInstanceMethod.GetElementMethod().FullName + genericInstanceMethod.GetElementMethod()
215+
.GenericParameters.Aggregate(string.Empty,
216+
(current, newElement) => current + "<" + newElement.Name + ">");
217+
}
211218
}
212219
}

0 commit comments

Comments
 (0)