Fix an outright error in competesWith
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 29 Jul 2015 15:43:29 +0000 (16:43 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 30 Jul 2015 10:03:11 +0000 (11:03 +0100)
competesWith is a very recent function, introduced in:

  commit 2d88a531b7e4dbf4016dca4b1ba3b5dc34256cf4
  Author: Simon Peyton Jones <simonpj@microsoft.com>
  Date:   Fri Jul 24 12:50:42 2015 +0100

      Improve warnings for rules that might not fire

compiler/basicTypes/BasicTypes.hs

index 8bcb0d9..a256ac1 100644 (file)
@@ -1091,7 +1091,7 @@ competesWith AlwaysActive      _                = True
 
 competesWith (ActiveBefore {}) AlwaysActive      = True
 competesWith (ActiveBefore {}) (ActiveBefore {}) = True
-competesWith (ActiveBefore a)  (ActiveAfter b)   = a > b
+competesWith (ActiveBefore a)  (ActiveAfter b)   = a < b
 
 competesWith (ActiveAfter {})  AlwaysActive      = False
 competesWith (ActiveAfter {})  (ActiveBefore {}) = False
@@ -1104,6 +1104,7 @@ See Note [Rules and inlining/other rules] in Desugar.
 
 We say that act1 "competes with" act2 iff
    act1 is active in the phase when act2 *becomes* active
+NB: remember that phases count *down*: 2, 1, 0!
 
 It's too conservative to ensure that the two are never simultaneously
 active.  For example, a rule might be always active, and an inlining