diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2016-09-19 03:45:38 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2016-09-20 20:08:07 +0300 |
| commit | 521d3ea19323c4c3ba18effbfee58c10b2aaf28b (patch) | |
| tree | a36f54509717238c7500dee5d2285c25c36f7bd4 /src/librustc_resolve | |
| parent | 564f2ee33c479c74f68fd9ae33b179de0b8537c9 (diff) | |
| download | rust-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.rs | 6 |
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(..) | |
