[svn] r6165: nemerle/trunk/ncc: hierarchy/ScanTypeHierarchy.n testsuite/positive/variant-subtype.n

nazgul svnadmin at nemerle.org
Sun Mar 26 15:21:24 CEST 2006


Log:
Handle types nested in variants

Author: nazgul
Date: Sun Mar 26 15:21:22 2006
New Revision: 6165

Modified:
   nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n
   nemerle/trunk/ncc/testsuite/positive/variant-subtype.n

Modified: nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	Sun Mar 26 15:21:22 2006
@@ -62,28 +62,26 @@
             def node_of_type = tb.NamespaceNode;
 
             match (t) {
-              | TopDeclaration.VariantOption (ds)
               | TopDeclaration.Interface (methods = ds)
               | TopDeclaration.Class (decls = ds) =>
                 foreach (ClassMember.TypeDeclaration (t) in ds)
                   handle_type (tb, node_of_type, t)
 
-              | TopDeclaration.Variant as td_v =>
-                foreach (x in td_v.decls) {
-                  match (x) {
-                    | ClassMember.TypeDeclaration (TopDeclaration.VariantOption as d) =>
+              | TopDeclaration.Variant (decls = decls) =>
+                foreach (x in decls) {
+                  | ClassMember.TypeDeclaration (d) =>
                       handle_type (tb, node_of_type, d)
 
                     | ClassMember.EnumOption =>
-                      Message.Error (t.Location, "variant options cannot have value, they are not enums")
+                    Message.Error (x.Location, "variant options cannot have value, they are not enums")
+
                     | _ => ()
                   }
-                }
 
-              | TopDeclaration.Enum => ()
+              | TopDeclaration.VariantOption
+              | TopDeclaration.Enum 
               | TopDeclaration.Alias => ()
-              | TopDeclaration.Macro => assert (false)
-              | TopDeclaration.Delegate => assert (false)
+              | _ => assert (false)
             };
             // they are added in reversed order, so bring them to source order
             tb.ReverseChildren ();

Modified: nemerle/trunk/ncc/testsuite/positive/variant-subtype.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/variant-subtype.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/variant-subtype.n	Sun Mar 26 15:21:22 2006
@@ -14,6 +14,16 @@
   static Main () : void {
     T.f (X.Y());
     assert (ImmutableCovariance.Func () == true);
+    def _ = Top.Child.Inner ();
+  }
+}
+
+public module Top {
+  public variant Child {
+    | X
+    | Y
+    
+    public class Inner {}
   }
 }
 



More information about the svn mailing list