about summary refs log tree commit diff
path: root/src/librustc_resolve
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2016-09-19 03:45:38 +0300
committerEduard Burtescu <edy.burt@gmail.com>2016-09-20 20:08:07 +0300
commit521d3ea19323c4c3ba18effbfee58c10b2aaf28b (patch)
treea36f54509717238c7500dee5d2285c25c36f7bd4 /src/librustc_resolve
parent564f2ee33c479c74f68fd9ae33b179de0b8537c9 (diff)
downloadrust-521d3ea19323c4c3ba18effbfee58c10b2aaf28b.tar.gz
rust-521d3ea19323c4c3ba18effbfee58c10b2aaf28b.zip
rustc_resolve: bring back "struct called like a function" cross-crate.
Diffstat (limited to 'src/librustc_resolve')
-rw-r--r--src/librustc_resolve/build_reduced_graph.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs
index 3c5e9e6cd3a..c9591c31831 100644
--- a/src/librustc_resolve/build_reduced_graph.rs
+++ b/src/librustc_resolve/build_reduced_graph.rs
@@ -411,12 +411,16 @@ impl<'b> Resolver<'b> {
                 let module = self.new_module(parent_link, Some(def), None);
                 let _ = self.try_define(parent, name, TypeNS, (module, DUMMY_SP, vis));
             }
-            Def::Variant(..) => {
+            Def::Variant(variant_id) => {
                 debug!("(building reduced graph for external crate) building variant {}", name);
                 // Variants are always treated as importable to allow them to be glob used.
                 // All variants are defined in both type and value namespaces as future-proofing.
                 let _ = self.try_define(parent, name, TypeNS, (def, DUMMY_SP, vis));
                 let _ = self.try_define(parent, name, ValueNS, (def, DUMMY_SP, vis));
+                if self.session.cstore.variant_kind(variant_id) == Some(ty::VariantKind::Struct) {
+                    // Not adding fields for variants as they are not accessed with a self receiver
+                    self.structs.insert(variant_id, Vec::new());
+                }
             }
             Def::Fn(..) |
             Def::Static(..) |