diff options
author | Jeroen Frijters <jeroen@frijters.net> | 2013-09-20 15:35:15 +0400 |
---|---|---|
committer | Jeroen Frijters <jeroen@frijters.net> | 2013-09-20 15:35:15 +0400 |
commit | d87a33d82ae72daa61da54bb1dec2c62085fce0d (patch) | |
tree | e4b45e5e2aa5abde56671c2fc83dcc2d791e9200 | |
parent | 1b5ca90f6e8ada7108cd76e998370e42d4e47cb5 (diff) |
Bug fix. Handle CA attached to generic interface impl.
-rw-r--r-- | Disassembler.cs | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/Disassembler.cs b/Disassembler.cs index 56c9778..5ea4f6a 100644 --- a/Disassembler.cs +++ b/Disassembler.cs @@ -807,14 +807,7 @@ namespace Ildasm if (type.BaseType != null) { lw.Write(" extends "); - if (type.BaseType.__IsMissing || !type.BaseType.IsGenericType) - { - WriteTypeDefOrRef(lw, type.BaseType); - } - else - { - WriteSignatureType(lw, type.BaseType, TypeLocation.General); - } + WriteInterfaceOrBaseType(lw, type.BaseType); lw.WriteLine(); lw.GoToColumn(level); } @@ -831,14 +824,7 @@ namespace Ildasm lw.GoToColumn(level + 18); } first = false; - if (iface.__IsMissing || !iface.IsGenericType) - { - WriteTypeDefOrRef(lw, iface); - } - else - { - WriteSignatureType(lw, iface, TypeLocation.General); - } + WriteInterfaceOrBaseType(lw, iface); } lw.WriteLine(); lw.GoToColumn(level); @@ -865,7 +851,7 @@ namespace Ildasm { lw.GoToColumn(level + 2); lw.Write(".interfaceimpl type "); - WriteTypeDefOrRef(lw, iface); + WriteInterfaceOrBaseType(lw, iface); lw.WriteLine(); WriteCustomAttributes(lw, level + 2, cas); } @@ -908,6 +894,18 @@ namespace Ildasm lw.WriteLine(); } + void WriteInterfaceOrBaseType(LineWriter lw, Type type) + { + if (type.__IsMissing || !type.IsGenericType) + { + WriteTypeDefOrRef(lw, type); + } + else + { + WriteSignatureType(lw, type, TypeLocation.General); + } + } + void WriteGenericParameterCustomAttributes(LineWriter lw, int level, Type[] args) { foreach (var typeParam in args) |