|
@@ -3627,15 +3627,21 @@ let all_virtual_functions clazz =
|
|
List.rev (all_virtual_functions_rev clazz)
|
|
List.rev (all_virtual_functions_rev clazz)
|
|
;;
|
|
;;
|
|
|
|
|
|
|
|
+
|
|
|
|
+let rec unreflective_type t =
|
|
|
|
+ match follow t with
|
|
|
|
+ | TInst (klass,_) -> Meta.has Meta.Unreflective klass.cl_meta
|
|
|
|
+ | TFun (args,ret) ->
|
|
|
|
+ List.fold_left (fun result (_,_,t) -> result || (unreflective_type t)) (unreflective_type ret) args;
|
|
|
|
+ | _ -> false
|
|
|
|
+;;
|
|
|
|
+
|
|
let reflective class_def field = not (
|
|
let reflective class_def field = not (
|
|
(Meta.has Meta.NativeGen class_def.cl_meta) ||
|
|
(Meta.has Meta.NativeGen class_def.cl_meta) ||
|
|
(Meta.has Meta.Unreflective class_def.cl_meta) ||
|
|
(Meta.has Meta.Unreflective class_def.cl_meta) ||
|
|
(Meta.has Meta.Unreflective field.cf_meta) ||
|
|
(Meta.has Meta.Unreflective field.cf_meta) ||
|
|
- (match field.cf_type with
|
|
|
|
- | TInst (klass,_) -> Meta.has Meta.Unreflective klass.cl_meta
|
|
|
|
- | _ -> false
|
|
|
|
- )
|
|
|
|
-)
|
|
|
|
|
|
+ unreflective_type field.cf_type
|
|
|
|
+ )
|
|
;;
|
|
;;
|
|
|
|
|
|
|
|
|