[svn] r6225: nemerle/trunk/ncc: hierarchy/ClassMembers.n testsuite/positive/access-checks.n

nazgul svnadmin at nemerle.org
Thu May 4 22:47:11 CEST 2006


Log:
Fix protected accessibility from nested type

Author: nazgul
Date: Thu May  4 22:46:59 2006
New Revision: 6225

Modified:
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/testsuite/positive/access-checks.n

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Thu May  4 22:46:59 2006
@@ -104,15 +104,15 @@
       name == "value__"
   }
 
+  // does current member can be accessed from inside given type
   public CanAccess (source : TypeInfo) : bool
   {
     IsPublic
     || IsInternal && source is TypeBuilder
-    || IsProtected && Option.IsSome (source.SuperType (declaring_type))
     || ({
       mutable result = false;
       for (mutable tc = source; tc != null && !result; tc = tc.DeclaringType)
-        result = tc.Equals (declaring_type);
+        result = tc.Equals (declaring_type) || IsProtected && Option.IsSome (tc.SuperType (declaring_type));
       result
     })
   }

Modified: nemerle/trunk/ncc/testsuite/positive/access-checks.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/access-checks.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/access-checks.n	Thu May  4 22:46:59 2006
@@ -47,6 +47,17 @@
 }
 }
 
+namespace Bug595 {
+  class Ax {
+    protected x : int = 6;
+  }
+  class Bx:Ax {
+    class Cx {
+      public foo(b : Bx) : void { _ = b.x; }
+    }
+  }
+}
+
 namespace UninitializedSubtyping {
   public class Test
   {



More information about the svn mailing list