Browse Source

[display] random cleanup

Simon Krajewski 3 years ago
parent
commit
2c51fa404f

+ 28 - 27
src/context/display/displayTexpr.ml

@@ -18,37 +18,37 @@ let find_enum_field_by_position sc p =
 		if pos eff.ec_name = p then true else false
 	) sc.d_data
 
-let find_class_by_position cfile p =
+let find_class_by_position decls p =
 	let rec loop dl = match dl with
 		| (EClass c,_) :: dl when pos c.d_name = p -> c
 		| _ :: dl -> loop dl
 		| [] -> raise Not_found
 	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
 		| (EEnum en,_) :: dl when pos en.d_name = p -> en
 		| _ :: dl -> loop dl
 		| [] -> raise Not_found
 	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
 		| (ETypedef td,_) :: dl when pos td.d_name = p -> td
 		| _ :: dl -> loop dl
 		| [] -> raise Not_found
 	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
 		| (EAbstract a,_) :: dl when pos a.d_name = p -> a
 		| _ :: dl -> loop dl
 		| [] -> raise Not_found
 	in
-	loop cfile.c_decls
+	loop decls
 
 let check_display_field ctx sc c cf =
 	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";
 	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 =
 		if display_position#enclosed_in cf.cf_pos then
 			check_display_field ctx sc c cf;
@@ -72,11 +72,11 @@ let check_display_class ctx cc cfile c =
 	in
 	match c.cl_kind with
 	| 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
 		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);
 		List.iter (function
 			| (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;
 		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);
 	PMap.iter (fun _ ef ->
 		if display_position#enclosed_in ef.ef_pos then begin
@@ -99,13 +99,13 @@ let check_display_enum ctx cc cfile en =
 		end
 	) 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.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);
 	List.iter (function
 		| (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
 
-let check_display_module_fields ctx cfile m =
+let check_display_module_fields ctx decls m =
 	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 ->
 			if display_position#enclosed_in cf.cf_pos then
 				check_display_field ctx sc c cf;
@@ -124,11 +124,12 @@ let check_display_module_fields ctx cfile m =
 		) c.cl_ordered_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
 		| (EImport _ | EUsing _),_ -> true
 		| _ -> false
-	) cfile.c_decls in
+	) decls 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
 	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;
 		begin if display_position#enclosed_in infos.mt_pos then match md with
 		| TClassDecl c ->
-			check_display_class ctx cc cfile c
+			check_display_class ctx decls c
 		| TEnumDecl en ->
-			check_display_enum ctx cc cfile en
+			check_display_enum ctx decls en
 		| TTypeDecl td ->
-			check_display_typedef ctx cc cfile td
+			check_display_typedef ctx decls td
 		| TAbstractDecl a ->
-			check_display_abstract ctx cc cfile a
+			check_display_abstract ctx decls a
 		end;
 		DisplayEmitter.check_display_metadata ctx infos.mt_meta
 	) m.m_types;
-	check_display_module_fields ctx cfile m
+	check_display_module_fields ctx decls m
 
 let check_display_file ctx cs =
 	match ctx.com.cache with
@@ -161,7 +162,7 @@ let check_display_file ctx cs =
 			   invalid (issue #8991). *)
 			begin match !TypeloadModule.type_module_hook ctx path null_pos with
 			| None -> raise Not_found
-			| Some m -> check_display_module ctx cc cfile m
+			| Some m -> check_display_module ctx cfile.c_decls m
 			end
 		with Not_found ->
 			let fkey = DisplayPosition.display_position#get_file_key in

+ 1 - 1
src/core/tType.ml

@@ -206,7 +206,7 @@ and tclass_field = {
 	mutable cf_kind : field_kind;
 	mutable cf_params : type_params;
 	mutable cf_expr : texpr option;
-	mutable cf_expr_unoptimized : tfunc option;
+	mutable cf_expr_unoptimized : texpr option;
 	mutable cf_overloads : tclass_field list;
 	mutable cf_flags : int;
 }

+ 2 - 3
src/filters/filters.ml

@@ -784,9 +784,8 @@ let run com tctx main =
 				(* Save cf_expr_unoptimized early: We want to inline with the original expression
 				   on the next compilation. *)
 				if not cached then begin
-					let field cf = match cf.cf_expr with
-						| Some {eexpr = TFunction tf} -> cf.cf_expr_unoptimized <- Some tf
-						| _ -> ()
+					let field cf =
+						cf.cf_expr_unoptimized <- cf.cf_expr
 					in
 					List.iter field cls.cl_ordered_fields;
 					List.iter field cls.cl_ordered_statics;

+ 1 - 1
src/typing/calls.ml

@@ -69,7 +69,7 @@ let make_call ctx e params t ?(force_inline=false) p =
 		let params = List.map (ctx.g.do_optimize ctx) params in
 		let force_inline = is_forced_inline cl f in
 		(match f.cf_expr_unoptimized,f.cf_expr with
-		| Some fd,_
+		| Some {eexpr = TFunction fd},_
 		| None,Some { eexpr = TFunction fd } ->
 			(match Inline.type_inline ctx f fd ethis params t config p force_inline with
 			| None ->

+ 2 - 2
src/typing/typeloadModule.ml

@@ -792,10 +792,10 @@ let module_pass_2 ctx m decls tdecls p =
 (*
 	Creates a module context for [m] and types [tdecls] using it.
 *)
-let type_types_into_module ctx m tdecls p =
+let type_types_into_module ?(check=true) ctx m tdecls p =
 	let decls, tdecls = module_pass_1 ctx m tdecls p in
 	let types = List.map fst decls in
-	List.iter (TypeloadCheck.check_module_types ctx m p) types;
+	if check then List.iter (TypeloadCheck.check_module_types ctx m p) types;
 	m.m_types <- m.m_types @ types;
 	(* define the per-module context for the next pass *)
 	let ctx = {