X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Fgrafite_parser%2FgrafiteDisambiguator.ml;h=2c38dd8a9adb24904afcb86c60a5746f3026fb52;hb=ff6a35c50aace7c20d4f68a1ac4a0d751cfc72e3;hp=05c988ac16c98b349fed54a0a4c7268e3bcdb2de;hpb=2128fab91157cc06157cede44f8aa95a1acd453d;p=helm.git diff --git a/components/grafite_parser/grafiteDisambiguator.ml b/components/grafite_parser/grafiteDisambiguator.ml index 05c988ac1..2c38dd8a9 100644 --- a/components/grafite_parser/grafiteDisambiguator.ml +++ b/components/grafite_parser/grafiteDisambiguator.ml @@ -30,7 +30,10 @@ open Printf exception Ambiguous_input (* the integer is an offset to be added to each location *) exception DisambiguationError of - int * (Token.flocation option * string Lazy.t) list list + int * + ((Token.flocation list * string * string) list * + (DisambiguateTypes.domain_item * DisambiguateTypes.codomain_item) list * + Token.flocation option * string Lazy.t) list list (** parameters are: option name, error message *) exception Unbound_identifier of string @@ -92,11 +95,9 @@ let disambiguate_thing ~aliases ~universe let mono_aliases = true, aliases, Some DisambiguateTypes.Environment.empty in let passes = (* *) if !only_one_pass then - [ (false, mono_aliases, false) ] + [ (true, mono_aliases, false) ] else - [ (false, mono_aliases, false); - (false, multi_aliases, false); - (true, mono_aliases, false); + [ (true, mono_aliases, false); (true, multi_aliases, false); (true, mono_aliases, true); (true, multi_aliases, true); @@ -110,16 +111,17 @@ let disambiguate_thing ~aliases ~universe f ~fresh_instances ~aliases ~universe thing in let set_aliases (instances,(use_mono_aliases,_,_),_) (_, user_asked as res) = - if use_mono_aliases && not instances then - drop_aliases res + if use_mono_aliases then + drop_aliases ~minimize_instances:true res (* one shot aliases *) else if user_asked then drop_aliases ~minimize_instances:true res (* one shot aliases *) else drop_aliases_and_clear_diff res in - let rec aux errors = - function - | [ pass ] -> + let rec aux i errors passes = +(*prerr_endline ("Pass: " ^ string_of_int i);*) + match passes with + [ pass ] -> (try set_aliases pass (try_pass pass) with Disambiguate.NoWellTypedInterpretation (offset,newerrors) -> @@ -128,12 +130,12 @@ let disambiguate_thing ~aliases ~universe (try set_aliases hd (try_pass hd) with Disambiguate.NoWellTypedInterpretation (_offset,newerrors) -> - aux (errors @ [newerrors]) tl) + aux (i+1) (errors @ [newerrors]) tl) | [] -> assert false in let saved_insert_coercions = !CicRefine.insert_coercions in try - let res = aux [] passes in + let res = aux 1 [] passes in CicRefine.insert_coercions := saved_insert_coercions; res with exn ->