You've already forked linux-packaging-mono
Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
This commit is contained in:
parent
ee1447783b
commit
94b2861243
92
external/cecil-legacy/Test/Mono.Cecil.Tests/Extensions.cs
vendored
Normal file
92
external/cecil-legacy/Test/Mono.Cecil.Tests/Extensions.cs
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using SR = System.Reflection;
|
||||
|
||||
using Mono.Cecil;
|
||||
|
||||
namespace Mono.Cecil.Tests {
|
||||
|
||||
public static class Extensions {
|
||||
|
||||
public static MethodDefinition GetMethod (this TypeDefinition self, string name)
|
||||
{
|
||||
return self.Methods.Where (m => m.Name == name).First ();
|
||||
}
|
||||
|
||||
public static FieldDefinition GetField (this TypeDefinition self, string name)
|
||||
{
|
||||
return self.Fields.Where (f => f.Name == name).First ();
|
||||
}
|
||||
|
||||
public static TypeDefinition ToDefinition (this Type self)
|
||||
{
|
||||
var module = ModuleDefinition.ReadModule (self.Module.FullyQualifiedName);
|
||||
return (TypeDefinition) module.LookupToken (self.MetadataToken);
|
||||
}
|
||||
|
||||
public static MethodDefinition ToDefinition (this SR.MethodBase method)
|
||||
{
|
||||
var declaring_type = method.DeclaringType.ToDefinition ();
|
||||
return (MethodDefinition) declaring_type.Module.LookupToken (method.MetadataToken);
|
||||
}
|
||||
|
||||
public static FieldDefinition ToDefinition (this SR.FieldInfo field)
|
||||
{
|
||||
var declaring_type = field.DeclaringType.ToDefinition ();
|
||||
return (FieldDefinition) declaring_type.Module.LookupToken (field.MetadataToken);
|
||||
}
|
||||
|
||||
public static TypeReference MakeGenericType (this TypeReference self, params TypeReference [] arguments)
|
||||
{
|
||||
if (self.GenericParameters.Count != arguments.Length)
|
||||
throw new ArgumentException ();
|
||||
|
||||
var instance = new GenericInstanceType (self);
|
||||
foreach (var argument in arguments)
|
||||
instance.GenericArguments.Add (argument);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static MethodReference MakeGenericMethod (this MethodReference self, params TypeReference [] arguments)
|
||||
{
|
||||
if (self.GenericParameters.Count != arguments.Length)
|
||||
throw new ArgumentException ();
|
||||
|
||||
var instance = new GenericInstanceMethod (self);
|
||||
foreach (var argument in arguments)
|
||||
instance.GenericArguments.Add (argument);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static MethodReference MakeGeneric (this MethodReference self, params TypeReference [] arguments)
|
||||
{
|
||||
var reference = new MethodReference {
|
||||
Name = self.Name,
|
||||
DeclaringType = self.DeclaringType.MakeGenericType (arguments),
|
||||
HasThis = self.HasThis,
|
||||
ExplicitThis = self.ExplicitThis,
|
||||
ReturnType = self.ReturnType,
|
||||
CallingConvention = self.CallingConvention,
|
||||
};
|
||||
|
||||
foreach (var parameter in self.Parameters)
|
||||
reference.Parameters.Add (new ParameterDefinition (parameter.ParameterType));
|
||||
|
||||
foreach (var generic_parameter in self.GenericParameters)
|
||||
reference.GenericParameters.Add (new GenericParameter (generic_parameter.Name, reference));
|
||||
|
||||
return reference;
|
||||
}
|
||||
|
||||
public static FieldReference MakeGeneric (this FieldReference self, params TypeReference [] arguments)
|
||||
{
|
||||
return new FieldReference {
|
||||
Name = self.Name,
|
||||
DeclaringType = self.DeclaringType.MakeGenericType (arguments),
|
||||
FieldType = self.FieldType,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user