]> git.lizzy.rs Git - rust.git/commitdiff
Rollup merge of #36951 - nnethercote:fix-ICE, r=eddyb
authorManish Goregaokar <manishsmail@gmail.com>
Tue, 4 Oct 2016 09:54:04 +0000 (15:24 +0530)
committerGitHub <noreply@github.com>
Tue, 4 Oct 2016 09:54:04 +0000 (15:24 +0530)
Fix an ICE in BuildReducedGraphVisitor::visit_trait_item.

This ICE occurs in the futures-rs-test-all benchmark in rustc-benchmarks (fixes #36950).

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);