|
@@ -1334,16 +1334,14 @@ let decode_cfield v =
|
|
cf
|
|
cf
|
|
|
|
|
|
let decode_efield v =
|
|
let decode_efield v =
|
|
- {
|
|
|
|
- ef_name = decode_string (field v "name");
|
|
|
|
- ef_type = decode_type (field v "type");
|
|
|
|
- ef_pos = decode_pos (field v "pos");
|
|
|
|
- ef_name_pos = decode_pos (field v "namePos");
|
|
|
|
- ef_index = decode_int (field v "index");
|
|
|
|
- ef_meta = []; (* TODO *)
|
|
|
|
- ef_doc = decode_doc (field v "doc");
|
|
|
|
- ef_params = decode_type_params (field v "params")
|
|
|
|
- }
|
|
|
|
|
|
+ let name = decode_string (field v "name")
|
|
|
|
+ and t = decode_type (field v "type") in
|
|
|
|
+ match t with
|
|
|
|
+ | TEnum (enm,_) ->
|
|
|
|
+ (try PMap.find name enm.e_constrs
|
|
|
|
+ with Not_found -> raise Invalid_expr)
|
|
|
|
+ | _ ->
|
|
|
|
+ raise Invalid_expr
|
|
|
|
|
|
let decode_field_access v =
|
|
let decode_field_access v =
|
|
match decode_enum v with
|
|
match decode_enum v with
|