Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/rocks
diff options
context:
space:
mode:
authorJb Evain <jbevain@gmail.com>2014-11-02 14:08:25 +0300
committerJb Evain <jbevain@gmail.com>2014-11-02 14:08:25 +0300
commit41f3bc703931e782ac87576062ec3938aa8a01c2 (patch)
tree1ac20e5cf27c0f3c6618b9ff21689f285fe913e1 /rocks
parent38c11b39a021013e971d6b2ab1da536bd0f99121 (diff)
Properly handle newslot in GetBaseMethod
Diffstat (limited to 'rocks')
-rw-r--r--rocks/Mono.Cecil.Rocks/MethodDefinitionRocks.cs2
-rw-r--r--rocks/Test/Mono.Cecil.Tests/MethodDefinitionRocksTests.cs13
2 files changed, 15 insertions, 0 deletions
diff --git a/rocks/Mono.Cecil.Rocks/MethodDefinitionRocks.cs b/rocks/Mono.Cecil.Rocks/MethodDefinitionRocks.cs
index c2f758d..39a2d90 100644
--- a/rocks/Mono.Cecil.Rocks/MethodDefinitionRocks.cs
+++ b/rocks/Mono.Cecil.Rocks/MethodDefinitionRocks.cs
@@ -41,6 +41,8 @@ namespace Mono.Cecil.Rocks {
throw new ArgumentNullException ("self");
if (!self.IsVirtual)
return self;
+ if (self.IsNewSlot)
+ return self;
var base_type = ResolveBaseType (self.DeclaringType);
while (base_type != null) {
diff --git a/rocks/Test/Mono.Cecil.Tests/MethodDefinitionRocksTests.cs b/rocks/Test/Mono.Cecil.Tests/MethodDefinitionRocksTests.cs
index 2cfe014..4c6e3fb 100644
--- a/rocks/Test/Mono.Cecil.Tests/MethodDefinitionRocksTests.cs
+++ b/rocks/Test/Mono.Cecil.Tests/MethodDefinitionRocksTests.cs
@@ -11,18 +11,27 @@ namespace Mono.Cecil.Tests {
abstract class Foo {
public abstract void DoFoo ();
+ public abstract void DoBar ();
}
class Bar : Foo {
public override void DoFoo ()
{
}
+
+ public override void DoBar ()
+ {
+ }
}
class Baz : Bar {
public override void DoFoo ()
{
}
+
+ public virtual new void DoBar ()
+ {
+ }
}
[Test]
@@ -38,6 +47,10 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual ("Foo", @base.DeclaringType.Name);
Assert.AreEqual (@base, @base.GetBaseMethod ());
+
+ var new_dobar = baz.GetMethod ("DoBar");
+ @base = new_dobar.GetBaseMethod();
+ Assert.AreEqual("Baz", @base.DeclaringType.Name);
}
[Test]