Browse Source

[analyzer] check "Void as value" earlier upon var decl
fixes #8972

Aleksandr Kuzmenko 5 years ago
parent
commit
ea23212561

+ 1 - 1
src/optimization/analyzerTexprTransformer.ml

@@ -243,6 +243,7 @@ let rec func ctx bb tf t p =
 		let e = List.fold_left (fun e f -> f e) e fl in
 		let e = List.fold_left (fun e f -> f e) e fl in
 		bb,e
 		bb,e
 	and declare_var_and_assign bb v e p =
 	and declare_var_and_assign bb v e p =
+		no_void v.v_type p;
 		(* TODO: this section shouldn't be here because it can be handled as part of the normal value processing *)
 		(* TODO: this section shouldn't be here because it can be handled as part of the normal value processing *)
 		let rec loop bb e = match e.eexpr with
 		let rec loop bb e = match e.eexpr with
 			| TParenthesis e1 ->
 			| TParenthesis e1 ->
@@ -264,7 +265,6 @@ let rec func ctx bb tf t p =
 				bb,e
 				bb,e
 		in
 		in
 		let generate bb e =
 		let generate bb e =
-			no_void v.v_type p;
 			let ev = mk (TLocal v) v.v_type p in
 			let ev = mk (TLocal v) v.v_type p in
 			let was_assigned = ref false in
 			let was_assigned = ref false in
 			let assign e =
 			let assign e =

+ 5 - 0
tests/misc/projects/Issue8972/Main.hx

@@ -0,0 +1,5 @@
+class Main {
+	static function main() {
+		trace([if(false) 1]);
+	}
+}

+ 2 - 0
tests/misc/projects/Issue8972/compile-fail.hxml

@@ -0,0 +1,2 @@
+-main Main
+-js bin/test.js

+ 1 - 0
tests/misc/projects/Issue8972/compile-fail.hxml.stderr

@@ -0,0 +1 @@
+Main.hx:3: characters 10-21 : Cannot use Void as value