about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-12-09 16:31:53 +0100
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-12-09 16:31:53 +0100
commit910c369c9297b7e6a508bcc84b38fada8d5f4d7b (patch)
treeb4e0f016c4db91210d7f60450aed7415cbd1e1da
parentacfb06fd593ed803a3da056c9d5acb399697d0e8 (diff)
downloadrust-910c369c9297b7e6a508bcc84b38fada8d5f4d7b.tar.gz
rust-910c369c9297b7e6a508bcc84b38fada8d5f4d7b.zip
enable checking for const fn without needing to go through `entry`
-rw-r--r--src/librustc_metadata/decoder.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 2a6063cc4bd..e0786887728 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -504,6 +504,14 @@ impl<'tcx> EntryKind<'tcx> {
             EntryKind::Closure(_) => return None,
         })
     }
+    fn is_const_fn(&self, meta: &CrateMetadata) -> bool {
+        let constness = match *self {
+            EntryKind::Method(data) => data.decode(meta).fn_data.constness,
+            EntryKind::Fn(data) => data.decode(meta).constness,
+            _ => hir::Constness::NotConst,
+        };
+        constness == hir::Constness::Const
+    }
 }
 
 impl<'a, 'tcx> CrateMetadata {
@@ -1051,12 +1059,7 @@ impl<'a, 'tcx> CrateMetadata {
     }
 
     pub fn is_const_fn(&self, id: DefIndex) -> bool {
-        let constness = match self.entry(id).kind {
-            EntryKind::Method(data) => data.decode(self).fn_data.constness,
-            EntryKind::Fn(data) => data.decode(self).constness,
-            _ => hir::Constness::NotConst,
-        };
-        constness == hir::Constness::Const
+        self.entry(id).kind.is_const_fn(self)
     }
 
     pub fn is_foreign_item(&self, id: DefIndex) -> bool {