]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/lexicon/lexiconEngine.ml
Simplest typing for status records.
[helm.git] / helm / software / components / lexicon / lexiconEngine.ml
index 4662ca6bd7c2da39820a12f7d881ed078dfdbd9f..0bf40e234f68ee2fc54fd1b2956fb952c74f6a88 100644 (file)
@@ -47,12 +47,19 @@ let initial_status = {
   notation_ids = [];
 }
 
+class type g_status =
+ object
+  method lstatus: lexicon_status
+ end
+
 class status =
  object
   val lstatus = initial_status
   method lstatus = lstatus
   method set_lstatus v = {< lstatus = v >}
-  method set_lexicon_engine_status (o : status) = {< lstatus = o#lstatus >}
+  method set_lexicon_engine_status
+   : 'status. #g_status as 'status -> 'self
+   = fun o -> {< lstatus = o#lstatus >}
  end
 
 let dump_aliases out msg status =
@@ -140,7 +147,9 @@ let rec eval_command ?(mode=L.WithPreferences) sstatus cmd =
               prerr_endline ("LexiconEngine.eval_command: domain item not found: " ^ 
                (DisambiguateTypes.string_of_domain_item item));
              dump_aliases prerr_endline "" sstatus;
-              assert false
+              raise (Failure (
+                      (DisambiguateTypes.string_of_domain_item item) ^ 
+                      " not found"));
            end
        | p -> p
      in