]> git.lizzy.rs Git - rust.git/commitdiff
Fix an ICE in BuildReducedGraphVisitor::visit_trait_item.
authorNicholas Nethercote <nnethercote@mozilla.com>
Tue, 4 Oct 2016 05:36:14 +0000 (16:36 +1100)
committerNicholas Nethercote <nnethercote@mozilla.com>
Tue, 4 Oct 2016 05:41:53 +0000 (16:41 +1100)
This ICE occurs in the futures-rs-test-all benchmark in
rustc-benchmarks.

src/librustc_resolve/build_reduced_graph.rs

index 2bf517600b73d693321e6487886a20167ab5a5e0..0a0d2e4347e075e1988fcc6f201b27cf742e8f22 100644 (file)
@@ -605,6 +605,10 @@ fn visit_trait_item(&mut self, item: &TraitItem) {
         let parent = self.resolver.current_module;
         let def_id = parent.def_id().unwrap();
 
+        if let TraitItemKind::Macro(_) = item.node {
+            return self.visit_invoc(item.id);
+        }
+
         // Add the item to the trait info.
         let item_def_id = self.resolver.definitions.local_def_id(item.id);
         let mut is_static_method = false;
@@ -615,7 +619,7 @@ fn visit_trait_item(&mut self, item: &TraitItem) {
                 (Def::Method(item_def_id), ValueNS)
             }
             TraitItemKind::Type(..) => (Def::AssociatedTy(item_def_id), TypeNS),
-            TraitItemKind::Macro(_) => return self.visit_invoc(item.id),
+            TraitItemKind::Macro(_) => bug!(),  // handled above
         };
 
         self.resolver.trait_item_map.insert((item.ident.name, def_id), is_static_method);