|
@@ -18,37 +18,37 @@ let find_enum_field_by_position sc p =
|
|
if pos eff.ec_name = p then true else false
|
|
if pos eff.ec_name = p then true else false
|
|
) sc.d_data
|
|
) sc.d_data
|
|
|
|
|
|
-let find_class_by_position cfile p =
|
|
|
|
|
|
+let find_class_by_position decls p =
|
|
let rec loop dl = match dl with
|
|
let rec loop dl = match dl with
|
|
| (EClass c,_) :: dl when pos c.d_name = p -> c
|
|
| (EClass c,_) :: dl when pos c.d_name = p -> c
|
|
| _ :: dl -> loop dl
|
|
| _ :: dl -> loop dl
|
|
| [] -> raise Not_found
|
|
| [] -> raise Not_found
|
|
in
|
|
in
|
|
- loop cfile.c_decls
|
|
|
|
|
|
+ loop decls
|
|
|
|
|
|
-let find_enum_by_position cfile p =
|
|
|
|
|
|
+let find_enum_by_position decls p =
|
|
let rec loop dl = match dl with
|
|
let rec loop dl = match dl with
|
|
| (EEnum en,_) :: dl when pos en.d_name = p -> en
|
|
| (EEnum en,_) :: dl when pos en.d_name = p -> en
|
|
| _ :: dl -> loop dl
|
|
| _ :: dl -> loop dl
|
|
| [] -> raise Not_found
|
|
| [] -> raise Not_found
|
|
in
|
|
in
|
|
- loop cfile.c_decls
|
|
|
|
|
|
+ loop decls
|
|
|
|
|
|
-let find_typedef_by_position cfile p =
|
|
|
|
|
|
+let find_typedef_by_position decls p =
|
|
let rec loop dl = match dl with
|
|
let rec loop dl = match dl with
|
|
| (ETypedef td,_) :: dl when pos td.d_name = p -> td
|
|
| (ETypedef td,_) :: dl when pos td.d_name = p -> td
|
|
| _ :: dl -> loop dl
|
|
| _ :: dl -> loop dl
|
|
| [] -> raise Not_found
|
|
| [] -> raise Not_found
|
|
in
|
|
in
|
|
- loop cfile.c_decls
|
|
|
|
|
|
+ loop decls
|
|
|
|
|
|
-let find_abstract_by_position cfile p =
|
|
|
|
|
|
+let find_abstract_by_position decls p =
|
|
let rec loop dl = match dl with
|
|
let rec loop dl = match dl with
|
|
| (EAbstract a,_) :: dl when pos a.d_name = p -> a
|
|
| (EAbstract a,_) :: dl when pos a.d_name = p -> a
|
|
| _ :: dl -> loop dl
|
|
| _ :: dl -> loop dl
|
|
| [] -> raise Not_found
|
|
| [] -> raise Not_found
|
|
in
|
|
in
|
|
- loop cfile.c_decls
|
|
|
|
|
|
+ loop decls
|
|
|
|
|
|
let check_display_field ctx sc c cf =
|
|
let check_display_field ctx sc c cf =
|
|
let cff = find_field_by_position sc cf.cf_name_pos in
|
|
let cff = find_field_by_position sc cf.cf_name_pos in
|
|
@@ -60,7 +60,7 @@ let check_display_field ctx sc c cf =
|
|
flush_pass ctx PTypeField "check_display_field";
|
|
flush_pass ctx PTypeField "check_display_field";
|
|
ignore(follow cf.cf_type)
|
|
ignore(follow cf.cf_type)
|
|
|
|
|
|
-let check_display_class ctx cc cfile c =
|
|
|
|
|
|
+let check_display_class ctx decls c =
|
|
let check_field sc cf =
|
|
let check_field sc cf =
|
|
if display_position#enclosed_in cf.cf_pos then
|
|
if display_position#enclosed_in cf.cf_pos then
|
|
check_display_field ctx sc c cf;
|
|
check_display_field ctx sc c cf;
|
|
@@ -72,11 +72,11 @@ let check_display_class ctx cc cfile c =
|
|
in
|
|
in
|
|
match c.cl_kind with
|
|
match c.cl_kind with
|
|
| KAbstractImpl a ->
|
|
| KAbstractImpl a ->
|
|
- let sa = find_abstract_by_position cfile c.cl_name_pos in
|
|
|
|
|
|
+ let sa = find_abstract_by_position decls c.cl_name_pos in
|
|
let check_field = check_field sa in
|
|
let check_field = check_field sa in
|
|
List.iter check_field c.cl_ordered_statics;
|
|
List.iter check_field c.cl_ordered_statics;
|
|
| _ ->
|
|
| _ ->
|
|
- let sc = find_class_by_position cfile c.cl_name_pos in
|
|
|
|
|
|
+ let sc = find_class_by_position decls c.cl_name_pos in
|
|
ignore(Typeload.type_type_params ctx TPHType c.cl_path (fun() -> c.cl_params) null_pos sc.d_params);
|
|
ignore(Typeload.type_type_params ctx TPHType c.cl_path (fun() -> c.cl_params) null_pos sc.d_params);
|
|
List.iter (function
|
|
List.iter (function
|
|
| (HExtends(ct,p) | HImplements(ct,p)) when display_position#enclosed_in p ->
|
|
| (HExtends(ct,p) | HImplements(ct,p)) when display_position#enclosed_in p ->
|
|
@@ -89,8 +89,8 @@ let check_display_class ctx cc cfile c =
|
|
List.iter check_field c.cl_ordered_fields;
|
|
List.iter check_field c.cl_ordered_fields;
|
|
Option.may check_field c.cl_constructor
|
|
Option.may check_field c.cl_constructor
|
|
|
|
|
|
-let check_display_enum ctx cc cfile en =
|
|
|
|
- let se = find_enum_by_position cfile en.e_name_pos in
|
|
|
|
|
|
+let check_display_enum ctx decls en =
|
|
|
|
+ let se = find_enum_by_position decls en.e_name_pos in
|
|
ignore(Typeload.type_type_params ctx TPHType en.e_path (fun() -> en.e_params) null_pos se.d_params);
|
|
ignore(Typeload.type_type_params ctx TPHType en.e_path (fun() -> en.e_params) null_pos se.d_params);
|
|
PMap.iter (fun _ ef ->
|
|
PMap.iter (fun _ ef ->
|
|
if display_position#enclosed_in ef.ef_pos then begin
|
|
if display_position#enclosed_in ef.ef_pos then begin
|
|
@@ -99,13 +99,13 @@ let check_display_enum ctx cc cfile en =
|
|
end
|
|
end
|
|
) en.e_constrs
|
|
) en.e_constrs
|
|
|
|
|
|
-let check_display_typedef ctx cc cfile td =
|
|
|
|
- let st = find_typedef_by_position cfile td.t_name_pos in
|
|
|
|
|
|
+let check_display_typedef ctx decls td =
|
|
|
|
+ let st = find_typedef_by_position decls td.t_name_pos in
|
|
ignore(Typeload.type_type_params ctx TPHType td.t_path (fun() -> td.t_params) null_pos st.d_params);
|
|
ignore(Typeload.type_type_params ctx TPHType td.t_path (fun() -> td.t_params) null_pos st.d_params);
|
|
ignore(Typeload.load_complex_type ctx true st.d_data)
|
|
ignore(Typeload.load_complex_type ctx true st.d_data)
|
|
|
|
|
|
-let check_display_abstract ctx cc cfile a =
|
|
|
|
- let sa = find_abstract_by_position cfile a.a_name_pos in
|
|
|
|
|
|
+let check_display_abstract ctx decls a =
|
|
|
|
+ let sa = find_abstract_by_position decls a.a_name_pos in
|
|
ignore(Typeload.type_type_params ctx TPHType a.a_path (fun() -> a.a_params) null_pos sa.d_params);
|
|
ignore(Typeload.type_type_params ctx TPHType a.a_path (fun() -> a.a_params) null_pos sa.d_params);
|
|
List.iter (function
|
|
List.iter (function
|
|
| (AbOver(ct,p) | AbFrom(ct,p) | AbTo(ct,p)) when display_position#enclosed_in p ->
|
|
| (AbOver(ct,p) | AbFrom(ct,p) | AbTo(ct,p)) when display_position#enclosed_in p ->
|
|
@@ -114,9 +114,9 @@ let check_display_abstract ctx cc cfile a =
|
|
()
|
|
()
|
|
) sa.d_flags
|
|
) sa.d_flags
|
|
|
|
|
|
-let check_display_module_fields ctx cfile m =
|
|
|
|
|
|
+let check_display_module_fields ctx decls m =
|
|
Option.may (fun c ->
|
|
Option.may (fun c ->
|
|
- let sc = find_class_by_position cfile c.cl_name_pos in
|
|
|
|
|
|
+ let sc = find_class_by_position decls c.cl_name_pos in
|
|
List.iter (fun cf ->
|
|
List.iter (fun cf ->
|
|
if display_position#enclosed_in cf.cf_pos then
|
|
if display_position#enclosed_in cf.cf_pos then
|
|
check_display_field ctx sc c cf;
|
|
check_display_field ctx sc c cf;
|
|
@@ -124,11 +124,12 @@ let check_display_module_fields ctx cfile m =
|
|
) c.cl_ordered_statics
|
|
) c.cl_ordered_statics
|
|
) m.m_statics
|
|
) m.m_statics
|
|
|
|
|
|
-let check_display_module ctx cc cfile m =
|
|
|
|
|
|
+let check_display_module ctx decls m =
|
|
|
|
+ print_endline ("check_display_module " ^ (s_type_path m.m_path));
|
|
let imports = List.filter (function
|
|
let imports = List.filter (function
|
|
| (EImport _ | EUsing _),_ -> true
|
|
| (EImport _ | EUsing _),_ -> true
|
|
| _ -> false
|
|
| _ -> false
|
|
- ) cfile.c_decls in
|
|
|
|
|
|
+ ) decls in
|
|
let imports = TypeloadModule.handle_import_hx ctx m imports null_pos in
|
|
let imports = TypeloadModule.handle_import_hx ctx m imports null_pos in
|
|
let ctx = TypeloadModule.type_types_into_module ctx m imports null_pos in
|
|
let ctx = TypeloadModule.type_types_into_module ctx m imports null_pos in
|
|
List.iter (fun md ->
|
|
List.iter (fun md ->
|
|
@@ -137,17 +138,17 @@ let check_display_module ctx cc cfile m =
|
|
DisplayEmitter.display_module_type ctx md infos.mt_name_pos;
|
|
DisplayEmitter.display_module_type ctx md infos.mt_name_pos;
|
|
begin if display_position#enclosed_in infos.mt_pos then match md with
|
|
begin if display_position#enclosed_in infos.mt_pos then match md with
|
|
| TClassDecl c ->
|
|
| TClassDecl c ->
|
|
- check_display_class ctx cc cfile c
|
|
|
|
|
|
+ check_display_class ctx decls c
|
|
| TEnumDecl en ->
|
|
| TEnumDecl en ->
|
|
- check_display_enum ctx cc cfile en
|
|
|
|
|
|
+ check_display_enum ctx decls en
|
|
| TTypeDecl td ->
|
|
| TTypeDecl td ->
|
|
- check_display_typedef ctx cc cfile td
|
|
|
|
|
|
+ check_display_typedef ctx decls td
|
|
| TAbstractDecl a ->
|
|
| TAbstractDecl a ->
|
|
- check_display_abstract ctx cc cfile a
|
|
|
|
|
|
+ check_display_abstract ctx decls a
|
|
end;
|
|
end;
|
|
DisplayEmitter.check_display_metadata ctx infos.mt_meta
|
|
DisplayEmitter.check_display_metadata ctx infos.mt_meta
|
|
) m.m_types;
|
|
) m.m_types;
|
|
- check_display_module_fields ctx cfile m
|
|
|
|
|
|
+ check_display_module_fields ctx decls m
|
|
|
|
|
|
let check_display_file ctx cs =
|
|
let check_display_file ctx cs =
|
|
match ctx.com.cache with
|
|
match ctx.com.cache with
|
|
@@ -161,7 +162,7 @@ let check_display_file ctx cs =
|
|
invalid (issue #8991). *)
|
|
invalid (issue #8991). *)
|
|
begin match !TypeloadModule.type_module_hook ctx path null_pos with
|
|
begin match !TypeloadModule.type_module_hook ctx path null_pos with
|
|
| None -> raise Not_found
|
|
| None -> raise Not_found
|
|
- | Some m -> check_display_module ctx cc cfile m
|
|
|
|
|
|
+ | Some m -> check_display_module ctx cfile.c_decls m
|
|
end
|
|
end
|
|
with Not_found ->
|
|
with Not_found ->
|
|
let fkey = DisplayPosition.display_position#get_file_key in
|
|
let fkey = DisplayPosition.display_position#get_file_key in
|