]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_cache/cicCache.ml
Bug fixed: when an axiom was asked, an exception was raised (since the
[helm.git] / helm / ocaml / cic_cache / cicCache.ml
index 394f9db77bcc158d467fd8db7fa4e86d40bb49d4..29d6a9a2fb445fd3a34164c7645a854773e8ac56 100644 (file)
@@ -45,12 +45,21 @@ let get_annobj uri =
          Unix.unlink cicfilename ;
          annobj
     | Some bodyuri ->
-       let cicbodyfilename = G.getxml (U.cicuri_of_uri bodyuri) in
+       let cicbodyfilename =
+        try
+         ignore (Getter.resolve bodyuri) ;
+         (* The body exists ==> it is not an axiom *)
+         Some (Getter.getxml bodyuri)
+        with
+         Getter.Unresolved ->
+          (* The body does not exist ==> we consider it an axiom *)
+          None
+       in
         let annobj =
-         CicParser.annobj_of_xml cicfilename (Some cicbodyfilename)
+         CicParser.annobj_of_xml cicfilename cicbodyfilename
         in
          Unix.unlink cicfilename ;
-         Unix.unlink cicbodyfilename ;
+         (match cicbodyfilename with None -> () | Some f -> Unix.unlink f) ;
          annobj
 ;;
 
@@ -64,9 +73,18 @@ let get_obj uri =
          Unix.unlink cicfilename ;
          obj
     | Some bodyuri ->
-       let cicbodyfilename = G.getxml (U.cicuri_of_uri bodyuri) in
-       let obj = CicParser.obj_of_xml cicfilename (Some cicbodyfilename) in
+       let cicbodyfilename =
+        try
+         ignore (Getter.resolve bodyuri) ;
+         (* The body exists ==> it is not an axiom *)
+         Some (Getter.getxml bodyuri)
+        with
+         Getter.Unresolved ->
+          (* The body does not exist ==> we consider it an axiom *)
+          None
+       in
+       let obj = CicParser.obj_of_xml cicfilename cicbodyfilename in
         Unix.unlink cicfilename ;
-        Unix.unlink cicbodyfilename ;
+        (match cicbodyfilename with None -> () | Some f -> Unix.unlink f) ;
         obj
 ;;