Don't assume the system.object does not have any fields
authorMarek Safar <marek.safar@gmail.com>
Fri, 8 Oct 2010 17:37:08 +0000 (18:37 +0100)
committerMarek Safar <marek.safar@gmail.com>
Fri, 8 Oct 2010 17:37:08 +0000 (18:37 +0100)
mcs/mcs/membercache.cs
mcs/tests/test-616.cs

index 0dabf85b80f696ca392f8a65fb6d88001c0e8292..8321d29d09bc13f7565bc0600cb4f5d6d4e27b96 100644 (file)
@@ -486,9 +486,14 @@ namespace Mono.CSharp {
                {
                        bestCandidate = null;
                        var container = member.Parent.PartialContainer.Definition;
-                       if (!container.IsInterface)
+                       if (!container.IsInterface) {
                                container = container.BaseType;
 
+                               // It can happen for a user definition of System.Object
+                               if (container == null)
+                                       return null;
+                       }
+
                        string name = GetLookupName (member);
                        IList<MemberSpec> applicable;
                        var member_param = member is IParametersMember ? ((IParametersMember) member).Parameters : null;
index a2804a9c1c7d82f7f872aa0dcb7ef8e4337094f7..00fe6db9023cb86e3980e5d52cb923db6e84a2c6 100644 (file)
@@ -6,7 +6,10 @@
 
 namespace System
 {
-       public class Object {}
+       public class Object
+       {
+               object value_with_no_base;
+       }
                
        public struct Byte {}
        public struct Int16 {}