]> git.lizzy.rs Git - rust.git/commitdiff
save-analysis: return an Option from get_path_data
authorNick Cameron <ncameron@mozilla.com>
Sat, 25 Jul 2015 05:47:26 +0000 (17:47 +1200)
committerNick Cameron <ncameron@mozilla.com>
Sat, 25 Jul 2015 05:47:26 +0000 (17:47 +1200)
src/librustc_trans/save/dump_csv.rs
src/librustc_trans/save/mod.rs

index f291413cedc7ede8ab25fdb8277f70409164ed7a..d1204c7a0a3eda9c6c76f8c1a943ce54485d0dc9 100644 (file)
@@ -671,6 +671,15 @@ fn process_path(&mut self,
         }
 
         let path_data = self.save_ctxt.get_path_data(id, path);
+        let path_data = match path_data {
+            Some(pd) => pd,
+            None => {
+                self.tcx.sess.span_bug(path.span,
+                                       &format!("Unexpected def kind while looking \
+                                                 up path in `{}`",
+                                                self.span.snippet(path.span)))
+            }
+        };
         match path_data {
             Data::VariableRefData(ref vrd) => {
                 self.fmt.ref_str(ref_kind.unwrap_or(recorder::VarRef),
index 077284a7c4223667ceb88760d02db0d62b960725..e812725e398dafcc1024874e283892d1b5499f9c 100644 (file)
@@ -508,7 +508,7 @@ pub fn get_expr_data(&self, expr: &ast::Expr) -> Option<Data> {
                 }))
             }
             ast::ExprPath(_, ref path) => {
-                Some(self.get_path_data(expr.id, path))
+                self.get_path_data(expr.id, path)
             }
             _ => {
                 // FIXME
@@ -520,7 +520,7 @@ pub fn get_expr_data(&self, expr: &ast::Expr) -> Option<Data> {
     pub fn get_path_data(&self,
                          id: NodeId,
                          path: &ast::Path)
-                         -> Data {
+                         -> Option<Data> {
         let def_map = self.tcx.def_map.borrow();
         if !def_map.contains_key(&id) {
             self.tcx.sess.span_bug(path.span,
@@ -535,22 +535,22 @@ pub fn get_path_data(&self,
             def::DefConst(..) |
             def::DefAssociatedConst(..) |
             def::DefVariant(..) => {
-                Data::VariableRefData(VariableRefData {
+                Some(Data::VariableRefData(VariableRefData {
                     name: self.span_utils.snippet(sub_span.unwrap()),
                     span: sub_span.unwrap(),
                     scope: self.enclosing_scope(id),
                     ref_id: def.def_id(),
-                })
+                }))
             }
             def::DefStruct(def_id) |
             def::DefTy(def_id, _) |
             def::DefTrait(def_id) |
             def::DefTyParam(_, _, def_id, _) => {
-                Data::TypeRefData(TypeRefData {
+                Some(Data::TypeRefData(TypeRefData {
                     span: sub_span.unwrap(),
                     ref_id: def_id,
                     scope: self.enclosing_scope(id),
-                })
+                }))
             }
             def::DefMethod(decl_id, provenence) => {
                 let sub_span = self.span_utils.sub_span_for_meth_name(path.span);
@@ -581,32 +581,28 @@ pub fn get_path_data(&self,
                 } else {
                     None
                 };
-                Data::MethodCallData(MethodCallData {
+                Some(Data::MethodCallData(MethodCallData {
                     span: sub_span.unwrap(),
                     scope: self.enclosing_scope(id),
                     ref_id: def_id,
                     decl_id: Some(decl_id),
-                })
+                }))
             },
             def::DefFn(def_id, _) => {
-                Data::FunctionCallData(FunctionCallData {
+                Some(Data::FunctionCallData(FunctionCallData {
                     ref_id: def_id,
                     span: sub_span.unwrap(),
                     scope: self.enclosing_scope(id),
-                })
+                }))
             }
             def::DefMod(def_id) => {
-                Data::ModRefData(ModRefData {
+                Some(Data::ModRefData(ModRefData {
                     ref_id: def_id,
                     span: sub_span.unwrap(),
                     scope: self.enclosing_scope(id),
-                })
+                }))
             }
-            _ => self.tcx.sess.span_bug(path.span,
-                                        &format!("Unexpected def kind while looking \
-                                                  up path in `{}`: `{:?}`",
-                                                 self.span_utils.snippet(path.span),
-                                                 def)),
+            _ => None,
         }
     }