Bladeren bron

do not recurse into TFunction when checking var init

also run the var init check in the -D analyzer case
Simon Krajewski 10 jaren geleden
bovenliggende
commit
5978d0afd5
2 gewijzigde bestanden met toevoegingen van 4 en 2 verwijderingen
  1. 4 0
      filters.ml
  2. 0 2
      tests/unit/src/unit/issues/Issue3861.hx

+ 4 - 0
filters.ml

@@ -299,6 +299,9 @@ let check_local_vars_init e =
 		| TThrow e | TReturn (Some e) ->
 			loop vars e;
 			vars := PMap.map (fun _ -> true) !vars
+		| TFunction _ ->
+			(* do not recurse into functions, their code is only relevant when executed *)
+			()
 		| _ ->
 			Type.iter (loop vars) e
 	in
@@ -1164,6 +1167,7 @@ let run com tctx main =
 		(* PASS 1: general expression filters *)
 		let filters = [
 			Codegen.AbstractCast.handle_abstract_casts tctx;
+			check_local_vars_init;
 			Optimizer.inline_constructors tctx;
 			Optimizer.reduce_expression tctx;
 			blockify_ast;

+ 0 - 2
tests/unit/src/unit/issues/Issue3861.hx

@@ -2,11 +2,9 @@ package unit.issues;
 
 class Issue3861 extends unit.Test {
 	function test() {
-		#if analyzer
 		var a;
 		var b = function() return a;
 		a = 2;
 		eq(2, b());
-		#end
 	}
 }