about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLuqman Aden <laden@csclub.uwaterloo.ca>2013-06-20 19:14:57 -0400
committerLuqman Aden <laden@csclub.uwaterloo.ca>2013-06-20 19:14:57 -0400
commit31b4b53797337a3750bcb63b19b78642816f76de (patch)
tree510e5c634b40fe8fc0aa9136ddb0869e87a6681e
parentf348465283d6cd85b69bcdc1711d14985d154c39 (diff)
downloadrust-31b4b53797337a3750bcb63b19b78642816f76de.tar.gz
rust-31b4b53797337a3750bcb63b19b78642816f76de.zip
librustc: Don't allow enum struct variants to shadow structs.
-rw-r--r--src/librustc/middle/resolve.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index 3e656b3e594..a91ee34f298 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -1415,24 +1415,26 @@ impl Resolver {
                                            (ReducedGraphParent,
                                             vt<ReducedGraphParent>)) {
         let ident = variant.node.name;
-        let (child, _) = self.add_child(ident, parent, ForbidDuplicateValues,
-                                        variant.span);
-
-        let privacy;
-        match variant.node.vis {
-            public => privacy = Public,
-            private => privacy = Private,
-            inherited => privacy = parent_privacy
-        }
+
+        let privacy =
+            match variant.node.vis {
+                public    => Public,
+                private   => Private,
+                inherited => parent_privacy
+            };
 
         match variant.node.kind {
             tuple_variant_kind(_) => {
+                let (child, _) = self.add_child(ident, parent, ForbidDuplicateValues,
+                                                variant.span);
                 child.define_value(privacy,
                                    def_variant(item_id,
                                                local_def(variant.node.id)),
                                    variant.span);
             }
             struct_variant_kind(_) => {
+                let (child, _) = self.add_child(ident, parent, ForbidDuplicateTypesAndValues,
+                                                variant.span);
                 child.define_type(privacy,
                                   def_variant(item_id,
                                               local_def(variant.node.id)),