2
0
Эх сурвалжийг харах

[analyzer] fix check for inlined purity meta

Simon Krajewski 1 жил өмнө
parent
commit
dd28b83951

+ 1 - 1
src/optimization/analyzerTexpr.ml

@@ -732,7 +732,7 @@ module Fusion = struct
 			(* no-side-effect *)
 			(* no-side-effect *)
 			| {eexpr = TFunction _ | TConst _ | TTypeExpr _} :: el ->
 			| {eexpr = TFunction _ | TConst _ | TTypeExpr _} :: el ->
 				loop acc el
 				loop acc el
-			| {eexpr = TMeta((Meta.Pure,_,_),_)} :: el ->
+			| {eexpr = TMeta((Meta.Pure,_,_) as meta,_)} :: el when PurityState.get_purity_from_meta [meta] = Pure ->
 				loop acc el
 				loop acc el
 			| {eexpr = TCall({eexpr = TField(e1,fa)},el1)} :: el2 when PurityState.is_pure_field_access fa && config.local_dce ->
 			| {eexpr = TCall({eexpr = TField(e1,fa)},el1)} :: el2 when PurityState.is_pure_field_access fa && config.local_dce ->
 				loop acc (e1 :: el1 @ el2)
 				loop acc (e1 :: el1 @ el2)

+ 4 - 4
tests/optimization/src/TestAnalyzer.hx

@@ -697,13 +697,13 @@ class TestAnalyzer extends TestBase {
 	}
 	}
 
 
 	function testIssue3869() {
 	function testIssue3869() {
-        var v1:Vec2 = {x: 1., y: 2.};
-        var r = v1 * 2;
+		var v1:Vec2 = {x: 1., y: 2.};
+		var r = v1 * 2;
 		assertEqualsConst(2., r.x);
 		assertEqualsConst(2., r.x);
 		assertEqualsConst(4., r.y);
 		assertEqualsConst(4., r.y);
 
 
-        var v2:Vec2 = {x: 1., y: 2.};
-        var r2 = 2 * v2;
+		var v2:Vec2 = {x: 1., y: 2.};
+		var r2 = 2 * v2;
 		assertEqualsConst(2., r2.x);
 		assertEqualsConst(2., r2.x);
 		assertEqualsConst(4., r2.y);
 		assertEqualsConst(4., r2.y);
 	}
 	}