about summary refs log tree commit diff
path: root/src/librustc/traits
diff options
context:
space:
mode:
authorGianni Ciccarelli <gianni.ciccarelli@gmail.com>2017-04-26 03:17:48 +0000
committerGianni Ciccarelli <gianni.ciccarelli@gmail.com>2017-04-26 14:43:09 +0000
commitb48eb5e0be2a6e06d9629f770288c46f7bcb326c (patch)
tree788c9f27af9f780a3765dbdd80e9981274698265 /src/librustc/traits
parent715811d0be05dcdc55b44f97d9fd2cd1eb7eee05 (diff)
downloadrust-b48eb5e0be2a6e06d9629f770288c46f7bcb326c.tar.gz
rust-b48eb5e0be2a6e06d9629f770288c46f7bcb326c.zip
support `default impl` for specialization
    `[default] [unsafe] impl` and typecheck
Diffstat (limited to 'src/librustc/traits')
-rw-r--r--src/librustc/traits/util.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/librustc/traits/util.rs b/src/librustc/traits/util.rs
index 4aa7950de8f..e7c61dde768 100644
--- a/src/librustc/traits/util.rs
+++ b/src/librustc/traits/util.rs
@@ -14,6 +14,7 @@ use ty::{self, Ty, TyCtxt, ToPredicate, ToPolyTraitRef};
 use ty::outlives::Component;
 use util::nodemap::FxHashSet;
 use hir::{self};
+use traits::specialize::specialization_graph::NodeItem;
 
 use super::{Obligation, ObligationCause, PredicateObligation, SelectionContext, Normalized};
 
@@ -525,6 +526,10 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
             }
         }
     }
+
+    pub fn impl_item_is_final(self, node_item: &NodeItem<hir::Defaultness>) -> bool {
+        node_item.item.is_final() && !self.impl_is_default(node_item.node.def_id())
+    }
 }
 
 pub enum TupleArgumentsFlag { Yes, No }