Skip to content
Snippets Groups Projects
Commit 0a5dcb93 authored by Allan Blanchard's avatar Allan Blanchard
Browse files

Merge branch 'feature/kernel/syntactic-search' into 'master'

use Kernel functions for symbol lookup

See merge request frama-c/meta!78
parents fb6dc5ae 295c7a78
No related branches found
No related tags found
No related merge requests found
...@@ -172,7 +172,7 @@ let add_ghost_code flags = ...@@ -172,7 +172,7 @@ let add_ghost_code flags =
Ast.mark_as_changed () Ast.mark_as_changed ()
end end
let search_global_var name = Globals.Vars.find_from_astinfo name VGlobal let search_global_var name = Globals.Vars.find_from_astinfo name Global
(* Replace \binds by code adequately modifying _set and _size *) (* Replace \binds by code adequately modifying _set and _size *)
let make_static_modif_code name lvar = let make_static_modif_code name lvar =
......
...@@ -139,14 +139,11 @@ let meta_type_term termassoc quantifiers kf loc orig_ctxt meta_ctxt env expr = ...@@ -139,14 +139,11 @@ let meta_type_term termassoc quantifiers kf loc orig_ctxt meta_ctxt env expr =
let label = FormalLabel l in let label = FormalLabel l in
Logic_const.tat (e_t, label) Logic_const.tat (e_t, label)
| PLapp ("\\formal", _, [{lexpr_node = PLvar param}]) -> | PLapp ("\\formal", _, [{lexpr_node = PLvar param}]) ->
let formals = Kernel_function.get_formals kf in (match Globals.Syntactic_search.find_in_scope param (Formal kf) with
begin try | Some vi -> vi |> Cil.cvar_to_lvar |> Logic_const.tvar
let vi = List.find (fun vi -> vi.vname = param) formals in | None ->
let lv = Cil.cvar_to_lvar vi in meta_ctxt.error loc "%s is not a formal in %a"
Logic_const.tvar lv param Kernel_function.pretty kf)
with Not_found -> meta_ctxt.error loc "%s is not a formal in %a"
param Kernel_function.pretty kf
end
| PLapp ("\\bound", _, [bound]) -> | PLapp ("\\bound", _, [bound]) ->
Meta_bindings.parse_bound meta_ctxt loc quantifiers bound Meta_bindings.parse_bound meta_ctxt loc quantifiers bound
| PLapp (app_name, _, [{lexpr_node = PLvar arg}]) | PLapp (app_name, _, [{lexpr_node = PLvar arg}])
...@@ -256,7 +253,7 @@ let delay_prop tc name lexpr kf aslist = ...@@ -256,7 +253,7 @@ let delay_prop tc name lexpr kf aslist =
(* Tweak find_var so it can find things after link *) (* Tweak find_var so it can find things after link *)
try tc.find_var var try tc.find_var var
with Not_found -> try with Not_found -> try
let vi = Globals.Vars.find_from_astinfo var VGlobal in let vi = Globals.Vars.find_from_astinfo var Global in
Cil.cvar_to_lvar vi Cil.cvar_to_lvar vi
with Not_found -> with Not_found ->
let kf = Globals.Functions.find_by_name var in let kf = Globals.Functions.find_by_name var in
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment