diff --git a/combinatorial_LR_parser.py b/combinatorial_LR_parser.py
index 30a1b9c1c79264e235601784608e3c78810b2dbe..4c4359b97bab9fbcef6ea3125018acef85c661df 100644
--- a/combinatorial_LR_parser.py
+++ b/combinatorial_LR_parser.py
@@ -359,13 +359,16 @@ class HitOrMiss(Elaboratable):
                 stack_predicates.append(predicate_status)
             m.d.comb += stack_as_described.eq(reduce(lambda x, y: x & y, stack_predicates))
 
-            if(stack_as_described == 1):
+            with m.If(stack_as_described == 1):
                 m.d.comb += matching_reduce_rules_onehot[rule_number].eq(1)
 
 
         # We now have:
         # 1) a single-bit signal whether the new item is a valid new item or not
-        
+        # 2) a single-bit signal whether the new item must be shifted
+        # 3) a one-hot signal that tells us which reduce rules match
+
+        with m.If
         match_index_out_bits = [] # these are the components of the one-hot match_index_out signal
         return m