X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Frename%2FRnExpr.lhs;h=10aef2e765bab5c86e3461fc5d5d4e486dc83cdd;hb=e7498a3ee1d0484d02a9e86633cc179c76ebf36e;hp=805a1dc813c8bdcf54e832d37321c3257e9e9a5a;hpb=f01a8e8c9c53bfb5ab3393ed3457ebf25390efa1;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/RnExpr.lhs b/ghc/compiler/rename/RnExpr.lhs index 805a1dc..10aef2e 100644 --- a/ghc/compiler/rename/RnExpr.lhs +++ b/ghc/compiler/rename/RnExpr.lhs @@ -17,8 +17,8 @@ module RnExpr ( checkPrecMatch ) where -import Ubiq -import RnLoop -- break the RnPass/RnExpr/RnBinds loops +IMP_Ubiq() +IMPORT_DELOOPER(RnLoop) -- break the RnPass/RnExpr/RnBinds loops import HsSyn import RdrHsSyn @@ -28,10 +28,11 @@ import RnMonad import ErrUtils ( addErrLoc, addShortErrLocLine ) import Name ( isLocallyDefinedName, pprSym, Name, RdrName ) import Pretty -import UniqFM ( lookupUFM ) +import UniqFM ( lookupUFM, ufmToList{-ToDo:rm-} ) import UniqSet ( emptyUniqSet, unitUniqSet, unionUniqSets, unionManyUniqSets, - UniqSet(..) ) + UniqSet(..) + ) import Util ( Ord3(..), removeDups, panic ) \end{code} @@ -227,8 +228,8 @@ rnExpr (OpApp e1 op e2) rnExpr (NegApp e n) = rnExpr e `thenRn` \ (e', fvs_e) -> - lookupValue n `thenRn` \ nname -> - returnRn (NegApp e' nname, fvs_e `unionUniqSets` fv_set nname) + rnExpr n `thenRn` \ (n', fvs_n) -> + returnRn (NegApp e' n', fvs_e `unionUniqSets` fvs_n) rnExpr (HsPar e) = rnExpr e `thenRn` \ (e', fvs_e) -> @@ -485,7 +486,8 @@ precParseExpr exp@(OpApp (NegApp e1 n) (HsVar op) e2) precParseExpr exp@(OpApp (OpApp e11 (HsVar op1) e12) (HsVar op) e2) = lookupFixity op `thenRn` \ (op_fix, op_prec) -> lookupFixity op1 `thenRn` \ (op1_fix, op1_prec) -> - case cmp op1_prec op_prec of + -- pprTrace "precParse:" (ppCat [ppr PprDebug op, ppInt op_prec, ppr PprDebug op1, ppInt op1_prec]) $ + case (op1_prec `cmp` op_prec) of LT_ -> rearrange EQ_ -> case (op1_fix, op_fix) of (INFIXR, INFIXR) -> rearrange @@ -513,7 +515,7 @@ precParsePat pat@(ConOpPatIn (NegPatIn e1) op e2) precParsePat pat@(ConOpPatIn (ConOpPatIn p11 op1 p12) op p2) = lookupFixity op `thenRn` \ (op_fix, op_prec) -> lookupFixity op1 `thenRn` \ (op1_fix, op1_prec) -> - case cmp op1_prec op_prec of + case (op1_prec `cmp` op_prec) of LT_ -> rearrange EQ_ -> case (op1_fix, op_fix) of (INFIXR, INFIXR) -> rearrange @@ -534,6 +536,7 @@ data INFIX = INFIXL | INFIXR | INFIXN deriving Eq lookupFixity :: RnName -> RnM_Fixes s (INFIX, Int) lookupFixity op = getExtraRn `thenRn` \ fixity_fm -> + -- pprTrace "lookupFixity:" (ppAboves [ppCat [pprUnique u, ppr PprDebug i_f] | (u,i_f) <- ufmToList fixity_fm]) $ case lookupUFM fixity_fm op of Nothing -> returnRn (INFIXL, 9) Just (InfixL _ n) -> returnRn (INFIXL, n)