+checkPrecMatch :: Bool -> RnName -> RenamedMatch -> RnM_Fixes s ()
+
+checkPrecMatch False fn match
+ = returnRn ()
+checkPrecMatch True op (PatMatch p1 (PatMatch p2 (GRHSMatch _)))
+ = checkPrec op p1 False `thenRn_`
+ checkPrec op p2 True
+checkPrecMatch True op _
+ = panic "checkPrecMatch"
+
+checkPrec op (ConOpPatIn _ op1 _) right
+ = lookupFixity op `thenRn` \ (op_fix, op_prec) ->
+ lookupFixity op1 `thenRn` \ (op1_fix, op1_prec) ->
+ getSrcLocRn `thenRn` \ src_loc ->
+ let
+ inf_ok = op1_prec > op_prec ||
+ (op1_prec == op_prec &&
+ (op1_fix == INFIXR && op_fix == INFIXR && right ||
+ op1_fix == INFIXL && op_fix == INFIXL && not right))
+
+ info = (op,op_fix,op_prec)
+ info1 = (op1,op1_fix,op1_prec)
+ (infol, infor) = if right then (info, info1) else (info1, info)
+ in
+ addErrIfRn (not inf_ok) (precParseErr infol infor src_loc)
+
+checkPrec op (NegPatIn _) right
+ = lookupFixity op `thenRn` \ (op_fix, op_prec) ->
+ getSrcLocRn `thenRn` \ src_loc ->
+ addErrIfRn (6 < op_prec) (precParseNegPatErr (op,op_fix,op_prec) src_loc)
+
+checkPrec op pat right
+ = returnRn ()
+\end{code}
+
+\begin{code}
+dupFieldErr str src_loc (dup:rest)
+ = addShortErrLocLine src_loc (\ sty ->
+ ppBesides [ppStr "duplicate field name `", ppr sty dup, ppStr "' in record ", ppStr str])
+