diff options
author | Jb Evain <jb@evain.net> | 2017-10-31 02:02:59 +0300 |
---|---|---|
committer | Jb Evain <jb@evain.net> | 2017-10-31 02:02:59 +0300 |
commit | e43e9daf52e966b60454cac99feb422f3980c88f (patch) | |
tree | 1e894b9ecde82ec08a4bc611208b6df823a1d6c2 | |
parent | cc45ea0ae670a278dc5de19bed093a1a76332671 (diff) |
Fix setting of known value types
-rw-r--r-- | Mono.Cecil/AssemblyReader.cs | 6 | ||||
-rw-r--r-- | Mono.Cecil/TypeSystem.cs | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/Mono.Cecil/AssemblyReader.cs b/Mono.Cecil/AssemblyReader.cs index 8bc4ef2..a3284e2 100644 --- a/Mono.Cecil/AssemblyReader.cs +++ b/Mono.Cecil/AssemblyReader.cs @@ -3348,7 +3348,7 @@ namespace Mono.Cecil { switch (etype) { case ElementType.ValueType: { var value_type = GetTypeDefOrRef (ReadTypeTokenSignature ()); - value_type.IsValueType = true; + value_type.KnownValueType (); return value_type; } case ElementType.Class: @@ -3388,8 +3388,8 @@ namespace Mono.Cecil { ReadGenericInstanceSignature (element_type, generic_instance); if (is_value_type) { - generic_instance.IsValueType = true; - element_type.GetElementType ().IsValueType = true; + generic_instance.KnownValueType (); + element_type.GetElementType ().KnownValueType (); } return generic_instance; diff --git a/Mono.Cecil/TypeSystem.cs b/Mono.Cecil/TypeSystem.cs index 3b5202c..e16ec6f 100644 --- a/Mono.Cecil/TypeSystem.cs +++ b/Mono.Cecil/TypeSystem.cs @@ -184,7 +184,7 @@ namespace Mono.Cecil { return typeRef; var type = LookupType ("System", name); type.etype = element_type; - type.IsValueType = true; + type.KnownValueType (); return typeRef = type; } } @@ -313,6 +313,12 @@ namespace Mono.Cecil { return true; } + public static void KnownValueType (this TypeReference type) + { + if (!type.IsDefinition) + type.IsValueType = true; + } + static bool IsCoreLibrary (AssemblyNameReference reference) { var name = reference.Name; |