]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/matitaExcPp.ml
...
[helm.git] / helm / software / matita / matitaExcPp.ml
index 076a5d763e6fccd1cb4fe0ae4055eca99399e713..24f25c5029d1c0941cd4aaae836ada8dda72bc75 100644 (file)
@@ -33,8 +33,9 @@ let compact_disambiguation_errors all_passes errorll =
     (List.map
       (fun (pass,l) ->
         List.map
-         (fun (env,diff,offset,msg,significant) ->
-           offset, [[pass], [[pass], env, diff], msg, significant]) l
+         (fun (env,diff,offset_msg,significant) ->
+           let offset, msg = Lazy.force offset_msg in
+           offset, [[pass], [[pass], env, diff], lazy msg, significant]) l
       ) errorll) in
   (* Here we are doing a stable sort and list_uniq returns the latter
      "equal" element. I.e. we are showing the error corresponding to the
@@ -139,6 +140,27 @@ let rec to_string =
   | CicRefine.RefineFailure msg
   | CicRefine.AssertFailure msg ->
      None, "Refiner error: " ^ Lazy.force msg
+  | NCicRefiner.RefineFailure msg ->
+     None, "NRefiner failure: " ^ snd (Lazy.force msg)
+  | NCicRefiner.Uncertain msg ->
+     None, "NRefiner uncertain: " ^ snd (Lazy.force msg)
+  | NCicMetaSubst.Uncertain msg ->
+     None, "NCicMetaSubst uncertain: " ^ Lazy.force msg
+  | NCicTypeChecker.TypeCheckerFailure msg ->
+     None, "NTypeChecker failure: " ^ Lazy.force msg
+  | NCicTypeChecker.AssertFailure msg ->
+     None, "NTypeChecker assert failure: " ^ Lazy.force msg
+  | NCicEnvironment.ObjectNotFound msg ->
+     None, "NCicEnvironment object not found: " ^ Lazy.force msg
+  | NCicRefiner.AssertFailure msg ->
+     None, "NRefiner assert failure: " ^ Lazy.force msg
+  | NCicEnvironment.BadDependency (msg,e) ->
+     None, "NCicEnvironment bad dependency: " ^ Lazy.force msg ^ 
+     snd (to_string e)
+  | NCicEnvironment.BadConstraint msg ->
+     None, "NCicEnvironment bad constraint: " ^ Lazy.force msg
+  | NCicUnification.UnificationFailure msg ->
+     None, "NCicUnification failure: " ^ Lazy.force msg
   | CicTypeChecker.TypeCheckerFailure msg ->
      None, "Type checking error: " ^ Lazy.force msg
   | CicTypeChecker.AssertFailure msg ->
@@ -147,18 +169,25 @@ let rec to_string =
      None, "Already defined: " ^ UriManager.string_of_uri s
   | DisambiguateChoices.Choice_not_found msg ->
      None, ("Disambiguation choice not found: " ^ Lazy.force msg)
-  | MatitaEngine.EnrichedWithLexiconStatus (exn,_) ->
-     None, "EnrichedWithLexiconStatus "^snd(to_string exn)
-  | GrafiteDisambiguator.DisambiguationError (offset,errorll) ->
+  | MatitaEngine.EnrichedWithStatus (exn,_) ->
+     None, "EnrichedWithStatus "^snd(to_string exn)
+  | NTacStatus.Error (msg,None) ->
+     None, "NTactic error: " ^ Lazy.force msg 
+  | NTacStatus.Error (msg,Some exn) ->
+     None, "NTactic error: " ^ Lazy.force msg ^ "\n" ^ snd(to_string exn)
+  | MultiPassDisambiguator.DisambiguationError (offset,errorll) ->
      let loc =
       match errorll with
-         ((_,_,Some floc,_,_)::_)::_ ->
-          let (x, y) = HExtlib.loc_of_floc floc in
-          let x = x + offset in
-          let y = y + offset in
-          let floc = HExtlib.floc_of_loc (x,y) in
-           Some floc
-       | _ -> None in
+        | ((_,_,loc_msg,_)::_)::_ ->
+          let floc, _ = Lazy.force loc_msg in
+          if floc = Stdpp.dummy_loc then None else
+            let (x, y) = HExtlib.loc_of_floc floc in
+            let x = x + offset in
+            let y = y + offset in
+            let floc = HExtlib.floc_of_loc (x,y) in
+             Some floc
+        | _ -> assert false
+     in
      let annotated_errorll =
       List.rev
        (snd
@@ -182,11 +211,10 @@ let rec to_string =
           let msg =
             (List.map (fun (passes,_,_,floc,msg,significant) ->
               let loc_descr =
-               match floc with
-                  None -> ""
-                | Some floc ->
-                   let (x, y) = HExtlib.loc_of_floc floc in
-                    sprintf " at %d-%d" (x+offset) (y+offset)
+                if floc = HExtlib.dummy_floc then "" 
+                else 
+                  let (x, y) = HExtlib.loc_of_floc floc in
+                  sprintf " at %d-%d" (x+offset) (y+offset)
               in
                "*" ^ (if not significant then "(Spurious?) " else "")
                ^ "Error" ^ loc_descr ^ ": " ^ Lazy.force msg,