let reference_of_array ty =
let rec reftype ty =
if isArrayType ty then
let elty = reftype (direct_element_type ty) in
(* if array_size ty > 0L then *)
let size = constant_expr (direct_array_size ty) in
mkTRefArray(elty,size,[])
(* else *)
(* (\* Array of zero size, e.g. in struct array hack. *\) *)
(* TPtr(elty,[]) *)
else ty
in
assert (isArrayType ty);
reftype ty