Jelajahi Sumber

make renameVars officially safe too

Simon Krajewski 5 bulan lalu
induk
melakukan
c305658e11
3 mengubah file dengan 10 tambahan dan 10 penghapusan
  1. 1 1
      src/filters/filters.ml
  2. 8 8
      src/filters/renameVars.ml
  3. 1 1
      src/typing/macroContext.ml

+ 1 - 1
src/filters/filters.ml

@@ -480,7 +480,7 @@ let run tctx ectx main before_destruction =
 		enter_stage com CAnalyzerStart;
 		if com.platform <> Cross then Analyzer.Run.run_on_types com pool new_types;
 		enter_stage com CAnalyzerDone;
-		let locals = RenameVars.init com in
+		let locals = RenameVars.init scom.platform_config com.types in
 		let filters = [
 			"sanitize",(fun scom e -> Sanitize.sanitize scom.SafeCom.platform_config e);
 			"add_final_return",(fun _ -> if com.config.pf_add_final_return then AddFinalReturn.add_final_return else (fun e -> e));

+ 8 - 8
src/filters/renameVars.ml

@@ -1,6 +1,6 @@
 open Globals
 open Type
-open Common
+open SafeCom
 open Ast
 open PlatformConfig
 
@@ -26,7 +26,7 @@ let reserve_init ri name =
 	Make all module-level names reserved.
 	No local variable will have a name matching a module-level declaration.
 *)
-let reserve_all_types ri com path_to_name =
+let reserve_all_types ri types path_to_name =
 	List.iter (fun mt ->
 		let tinfos = t_infos mt in
 		let native_name = try fst (Native.get_native_name tinfos.mt_meta) with Not_found -> path_to_name tinfos.mt_path in
@@ -44,14 +44,14 @@ let reserve_all_types ri com path_to_name =
 			) fl
 		| _ ->
 			reserve_init ri native_name
-	) com.types
+	) types
 
 (**
 	Initialize the context for local variables renaming
 *)
-let init com =
+let init config types =
 	let ri = {
-		ri_scope = com.config.pf_scoping.vs_scope;
+		ri_scope = config.pf_scoping.vs_scope;
 		ri_reserved = StringMap.empty;
 		ri_hoisting = false;
 		ri_no_shadowing = false;
@@ -73,11 +73,11 @@ let init com =
 		| ReserveNames names ->
 			List.iter (reserve_init ri) names
 		| ReserveAllTopLevelSymbols ->
-			reserve_all_types ri com (fun (pack,name) -> if pack = [] then name else List.hd pack)
+			reserve_all_types ri types (fun (pack,name) -> if pack = [] then name else List.hd pack)
 		| ReserveAllTypesFlat ->
-			reserve_all_types ri com Path.flat_path
+			reserve_all_types ri types Path.flat_path
 		| ReserveCurrentTopLevelSymbol -> ri.ri_reserve_current_top_level_symbol <- true
-	) com.config.pf_scoping.vs_flags;
+	) config.pf_scoping.vs_flags;
 	ri
 
 module Overlaps = struct

+ 1 - 1
src/typing/macroContext.ml

@@ -666,7 +666,7 @@ and flush_macro_context mint mctx =
 		let type_filters = [
 			FiltersCommon.remove_generic_base;
 			Exceptions.patch_constructors mctx ectx;
-			(fun mt -> AddFieldInits.add_field_inits mctx.c.curclass.cl_path (RenameVars.init mctx.com) mctx.com mt);
+			(fun mt -> AddFieldInits.add_field_inits mctx.c.curclass.cl_path (RenameVars.init mctx.com.config mctx.com.types) mctx.com mt);
 			Filters.update_cache_dependencies ~close_monomorphs:false mctx.com;
 			minimal_restore;
 			maybe_apply_native_paths