diff --git a/bundle/regal/rules/style/pointless_reassignment.rego b/bundle/regal/rules/style/pointless_reassignment.rego index 12006257..8f7e112c 100644 --- a/bundle/regal/rules/style/pointless_reassignment.rego +++ b/bundle/regal/rules/style/pointless_reassignment.rego @@ -21,19 +21,14 @@ report contains violation if { # pointless reassignment in rule body report contains violation if { - some call in ast.all_refs + some rule in input.rules + some expr in rule.body - call[0].value[0].type == "var" - call[0].value[0].value == "assign" + not expr["with"] - call[2].type == "var" + expr.terms[0].value[0].type == "var" + expr.terms[0].value[0].value == "assign" + expr.terms[2].type == "var" - violation := result.fail(rego.metadata.chain(), result.location(call)) -} - -assign_calls contains call if { - some call in ast.all_refs - - call[0].value[0].type == "var" - call[0].value[0].value == "assign" + violation := result.fail(rego.metadata.chain(), result.location(expr.terms)) } diff --git a/bundle/regal/rules/style/pointless_reassignment_test.rego b/bundle/regal/rules/style/pointless_reassignment_test.rego index 16f5dfa3..57469afa 100644 --- a/bundle/regal/rules/style/pointless_reassignment_test.rego +++ b/bundle/regal/rules/style/pointless_reassignment_test.rego @@ -50,3 +50,18 @@ test_pointless_reassignment_in_rule_body if { "title": "pointless-reassignment", }} } + +test_pointless_reassignment_in_rule_body_using_with if { + module := ast.with_rego_v1(` + foo := input + + rule if { + bar := foo with input as "wow" + + bar == true + } + `) + + r := rule.report with input as module + r == set() +}