[svn] r7373: nemerle/trunk/ncc: hierarchy/TypeBuilder.n parsing/MainParser.n testsuite/negative/tyvars.n

nazgul svnadmin at nemerle.org
Sat Feb 3 11:53:11 CET 2007


Log:
Error on generic enums

Author: nazgul
Date: Sat Feb  3 11:53:08 2007
New Revision: 7373

Modified:
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/testsuite/negative/tyvars.n

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Sat Feb  3 11:53:08 2007
@@ -995,6 +995,8 @@
           mem.Attributes |= NemerleAttributes.Public;
         
       | PT.TopDeclaration.Variant =>  attributes |= NemerleAttributes.Abstract
+      | PT.TopDeclaration.Enum when !this.typarms.IsEmpty =>
+        Message.Error ("enums cannot have generic type parameters");
       | _ => ()
     };
 

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Sat Feb  3 11:53:08 2007
@@ -678,7 +678,7 @@
 
                     | "interface" => TopDeclaration.Interface (typarms, t_extends, members)
                     | "variant" => TopDeclaration.Variant (typarms, t_extends, members)
-                    | "enum" => TopDeclaration.Enum (t_extends, members)
+                    | "enum" => TopDeclaration.Enum (typarms, t_extends, members)
 
                     | _ => Util.ice ()
                   };

Modified: nemerle/trunk/ncc/testsuite/negative/tyvars.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/negative/tyvars.n	(original)
+++ nemerle/trunk/ncc/testsuite/negative/tyvars.n	Sat Feb  3 11:53:08 2007
@@ -4,3 +4,7 @@
   class C [x] { // E: type parameter `x' has the same name as type parameter from the outer type `B'
   }
 }
+
+enum E [X] { // E: enums cannot have generic type parameters
+   | A | B   
+}
\ No newline at end of file



More information about the svn mailing list