[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