diff options
author | David Karlaš <david.karlas@xamarin.com> | 2017-06-16 09:16:05 +0300 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2017-06-16 09:23:28 +0300 |
commit | 866ad511fe42a74179e3078ea0d321dce1ad8ce4 (patch) | |
tree | 0349ab4bfd490f70fe60e43b167fa998bcd25ab8 /mcs/class/Mono.Debugger.Soft | |
parent | 86f8dd621a0d746557516b0e0cd70f8e5589ae10 (diff) |
Bug 36053 - Broken enum values conversion
plus moved some code to correct location
https://github.com/mono/debugger-libs/commit/d65261617baddb5b41f665b0eb717cd1f81873b6
Diffstat (limited to 'mcs/class/Mono.Debugger.Soft')
-rw-r--r-- | mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs index 8a2a3ef939c..4c2b33ee99e 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs @@ -30,6 +30,11 @@ namespace Mono.Debugger.Soft if (args != null && args.Length != 0) throw new NotSupportedException (); + //If method is virtual we can't optimize(execute IL) because it's maybe + //overriden... call runtime to invoke overriden version... + if (method.IsVirtual) + throw new NotSupportedException (); + if (method.IsStatic || method.DeclaringType.IsValueType || this_val == null || !(this_val is ObjectMirror)) throw new NotSupportedException (); @@ -350,6 +355,12 @@ namespace Mono.Debugger.Soft } catch { throw new NotSupportedException (); } + } else if (method.ReturnType.IsEnum && primitive != null) { + try { + res = method.VirtualMachine.CreateEnumMirror (method.ReturnType, primitive); + } catch { + throw new NotSupportedException (); + } } return res; |