]> git.lizzy.rs Git - rust.git/commitdiff
Inspect def locally instead of using a method
authorNick Cameron <ncameron@mozilla.com>
Wed, 23 Nov 2016 18:50:22 +0000 (07:50 +1300)
committerNick Cameron <ncameron@mozilla.com>
Wed, 23 Nov 2016 18:50:22 +0000 (07:50 +1300)
src/librustc/hir/def.rs
src/librustc_save_analysis/lib.rs

index ce04a7c897a18fcac20d556d97a815765abde2c8..feefc43f4013e682af3628f86cb1353ae81f0397 100644 (file)
@@ -85,15 +85,10 @@ pub fn new(def: Def) -> PathResolution {
 
     /// Get the definition, if fully resolved, otherwise panic.
     pub fn full_def(&self) -> Def {
-        self.maybe_full_def().unwrap_or_else(|| bug!("path not fully resolved: {:?}", self))
-    }
-
-    pub fn maybe_full_def(&self) -> Option<Def> {
-        if self.depth == 0 {
-            Some(self.base_def)
-        } else {
-            None
+        if self.depth != 0 {
+            bug!("path not fully resolved: {:?}", self);
         }
+        self.base_def
     }
 
     pub fn kind_name(&self) -> &'static str {
index 4c59f5e8a83cbc22a166e0d39134b3a4f95730ad..a82a51a2e17599aa7d5f91096072f3694f6ad436 100644 (file)
@@ -497,7 +497,12 @@ pub fn get_expr_data(&self, expr: &ast::Expr) -> Option<Data> {
     }
 
     pub fn get_path_data(&self, id: NodeId, path: &ast::Path) -> Option<Data> {
-        let def = option_try!(self.tcx.expect_resolution(id).maybe_full_def());
+        let resolution = self.tcx.expect_resolution(id);
+        if resolution.depth != 0 {
+            return None;
+        }
+        let def = resolution.base_def;
+
         let sub_span = self.span_utils.span_for_last_ident(path.span);
         filter!(self.span_utils, sub_span, path.span, None);
         match def {