|
@@ -91,15 +91,19 @@ let keep_field dce cf =
|
|
|
|
|
|
(* mark a field as kept *)
|
|
|
let rec mark_field dce c cf stat =
|
|
|
+ let add () =
|
|
|
+ if not (has_meta ":used" cf.cf_meta) then begin
|
|
|
+ cf.cf_meta <- (":used",[],cf.cf_pos) :: cf.cf_meta;
|
|
|
+ dce.added_fields <- (c,cf,stat) :: dce.added_fields;
|
|
|
+ dce.marked_fields <- cf :: dce.marked_fields
|
|
|
+ end
|
|
|
+ in
|
|
|
if not (PMap.mem cf.cf_name (if stat then c.cl_statics else c.cl_fields)) then begin
|
|
|
match c.cl_super with
|
|
|
- | None -> (* error? *) ()
|
|
|
+ | None -> add()
|
|
|
| Some (c,_) -> mark_field dce c cf stat
|
|
|
- end else if not (has_meta ":used" cf.cf_meta) then begin
|
|
|
- cf.cf_meta <- (":used",[],cf.cf_pos) :: cf.cf_meta;
|
|
|
- dce.added_fields <- (c,cf,stat) :: dce.added_fields;
|
|
|
- dce.marked_fields <- cf :: dce.marked_fields
|
|
|
- end
|
|
|
+ end else
|
|
|
+ add()
|
|
|
|
|
|
let rec update_marked_class_fields dce c =
|
|
|
(* mark all :?used fields as surely :used now *)
|