method vbehavior b =
let lval lv = expand lv (typeOfLval lv) locUnknown in
let term t = match t.term_node with
| TLval tlv ->
let lv,env =
!Db.Properties.Interp.force_term_lval_to_lval tlv
in
let lvlist = lval lv in
let tslvlist =
List.map (!Db.Properties.Interp.force_back_lval_to_term_lval env)
lvlist
in
List.map (fun
tslv ->
Logic_const.term ~loc:t.term_loc (TLval tslv)
t.term_type
) tslvlist
| Tempty_set -> [ t ]
| TStartOf _
| TConst _
| TCastE _
| Tat _
| TAddrOf _
| Tapp _
| Trange _
| Tunion _
| Tinter _
| Tcomprehension _
| Told _
| Tif _
| Tnull -> [ t ]
| TSizeOf _ | TSizeOfE _ | TSizeOfStr _ | TAlignOf _ | TAlignOfE _
| Tlambda _ | TDataCons _ | Tbase_addr _ | TBinOp _ | TUnOp _
| Tblock_length _ | TCoerce _ | TCoerceE _ | TUpdate _
| Ttypeof _ | Ttype _ -> assert false
in
let zone = function
| Location idts ->
List.map (fun ts -> Location { idts with it_content = ts })
(term idts.it_content)
| Nothing -> [ Nothing ]
in
let assign (z,froms) =
let zl = zone z in
let froms = List.flatten (List.map zone froms) in
List.map (fun z -> z, froms) zl
in
b.b_assigns <- List.flatten (List.map assign b.b_assigns);
DoChildren