]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/matitaEngine.ml
matitacLib: bugfix in .moo generation
[helm.git] / helm / software / matita / matitaEngine.ml
index 75c3ebafc5d946b3540157992874b14853c14283..e2bb6feb9349316eb1ec5b0ef29d2e73e5da1622 100644 (file)
@@ -81,7 +81,7 @@ let eval_ast ?do_heavy_checks lexicon_status
    ~disambiguate_command:(wrap (disambiguate_command lexicon_status_ref))
    ~disambiguate_macro:(wrap (disambiguate_macro lexicon_status_ref))
    ?do_heavy_checks grafite_status (text,prefix_len,ast) in
- let lexicon_status =
+ let new_lexicon_status =
   if !changed_lexicon then
    !lexicon_status_ref
   else
@@ -90,7 +90,7 @@ let eval_ast ?do_heavy_checks lexicon_status
    | GrafiteTypes.ProofMode s -> s.NTacStatus.istatus.NTacStatus.lstatus
  in
  let new_lexicon_status =
-  LexiconSync.add_aliases_for_objs lexicon_status new_objs in
+  LexiconSync.add_aliases_for_objs new_lexicon_status new_objs in
  let new_aliases =
   LexiconSync.alias_diff ~from:lexicon_status new_lexicon_status in
  let _,intermediate_states = 
@@ -103,7 +103,15 @@ let eval_ast ?do_heavy_checks lexicon_status
        UriManager.buri_of_uri (UriManager.uri_of_string v) = 
        baseuri
       with
-       UriManager.IllFormedUri _ -> false (* v is a description, not a URI *)
+       UriManager.IllFormedUri _ ->
+        try
+         (* this too! *)
+         let NReference.Ref (uri,_) = NReference.reference_of_string v in
+         let ouri = NCic2OCic.ouri_of_nuri uri in
+          UriManager.buri_of_uri ouri = baseuri
+        with
+         NReference.IllFormedReference _ ->
+          false (* v is a description, not a URI *)
      in
       if b then 
        lexicon_status,acc
@@ -119,11 +127,7 @@ let eval_ast ?do_heavy_checks lexicon_status
   ((new_grafite_status,new_lexicon_status),None)::intermediate_states
 
 exception TryingToAdd of string
-exception EnrichedWithLexiconStatus of exn * LexiconEngine.status
-
-let out = ref ignore 
-
-let set_callback f = out := f
+exception EnrichedWithStatus of exn * LexiconEngine.status * GrafiteTypes.status
 
 let eval_from_stream ~first_statement_only ~include_paths 
  ?do_heavy_checks ?(enforce_no_new_aliases=true)
@@ -152,7 +156,6 @@ let eval_from_stream ~first_statement_only ~include_paths
             false, lexicon_status, grafite_status,
              (((grafite_status,lexicon_status),None)::statuses)
          | GrafiteParser.LSome ast ->
-            !out ast;
             cb grafite_status ast;
             let new_statuses =
              eval_ast ?do_heavy_checks lexicon_status
@@ -173,7 +176,7 @@ let eval_from_stream ~first_statement_only ~include_paths
              watch_statuses lexicon_status grafite_status ;
              false, lexicon_status, grafite_status, (new_statuses @ statuses))
    with exn when not matita_debug ->
-     raise (EnrichedWithLexiconStatus (exn, lexicon_status))
+     raise (EnrichedWithStatus (exn, lexicon_status, grafite_status))
   in
   if stop then s else loop l g s
  in