[svn] r6511: nemerle/trunk/ncc: hierarchy/TypeBuilder.n testsuite/positive/iface.n

nazgul svnadmin at nemerle.org
Sat Aug 12 12:54:00 CEST 2006


Log:
Allow new modifier on interface members

Author: nazgul
Date: Sat Aug 12 12:53:54 2006
New Revision: 6511

Modified:
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/testsuite/positive/iface.n

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Sat Aug 12 12:53:54 2006
@@ -1622,10 +1622,10 @@
         class_member.Attributes |= NemerleAttributes.Static;      
         
       when (IsInterface) {
-        when (class_member.Attributes != NemerleAttributes.None)
+        when (class_member.Attributes %| NemerleAttributes.New != NemerleAttributes.New)
           Message.Error ("interface members are not allowed"
-                         " to have any attributes specified");
-        class_member.Attributes = NemerleAttributes.Virtual %|
+                         " to have any attributes specified, except 'new'");
+        class_member.Attributes = class_member.Attributes %| NemerleAttributes.Virtual %|
           NemerleAttributes.Abstract %| NemerleAttributes.Public;
       }
       

Modified: nemerle/trunk/ncc/testsuite/positive/iface.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/iface.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/iface.n	Sat Aug 12 12:53:54 2006
@@ -8,3 +8,14 @@
     set (_ : int) : void;
     set (_ : float) : void;
   }
+
+  
+interface A { foo () : void; 
+}
+interface B : A { new foo() : void; }
+
+class C : B {
+  public foo () : void { }
+  public foo1 () : void implements A.foo  {}
+}
+  
\ No newline at end of file



More information about the svn mailing list