let find_in_env env counter s =
let current, stack =
match env with
| current::stack -> current, stack
| [] -> Aorai_option.fatal "Empty type-checking environment"
in
match check_one true current counter s with
Some lv -> lv
| None ->
let module M = struct exception Found of term end in
(try
List.iter
(fun x ->
match check_one false x counter s with
None -> ()
| Some lv -> raise (M.Found lv))
stack;
let vi = Globals.Vars.find_from_astinfo s VGlobal in
Logic_const.tvar (Cil.cvar_to_lvar vi)
with
M.Found lv -> lv
| Not_found -> Aorai_option.abort "Unknown variable %s" s)