Fixity resolution not performed inside tuple sections
ndmitchell opened this issue · 0 comments
ndmitchell commented
The code for leafFix misses a case for TupleSection, see
haskell-src-exts/src/Language/Haskell/Exts/Fixity.hs
Lines 382 to 426 in eee7427
| leafFix :: Monad m => [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo) | |
| leafFix fixs e' = case e' of | |
| InfixApp l e1 op e2 -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2) | |
| App l e1 e2 -> liftM2 (App l) (fix e1) (fix e2) | |
| NegApp l e -> liftM (NegApp l) $ fix e | |
| Lambda l pats e -> liftM2 (Lambda l) (mapM fix pats) $ fix e | |
| Let l bs e -> | |
| let extraFix x = applyFixities (fixs ++ getBindFixities bs) x | |
| in liftM2 (Let l) (extraFix bs) $ extraFix e | |
| If l e a b -> liftM3 (If l) (fix e) (fix a) (fix b) | |
| MultiIf l alts -> liftM (MultiIf l) (mapM fix alts) | |
| Case l e alts -> liftM2 (Case l) (fix e) $ mapM fix alts | |
| Do l stmts -> liftM (Do l) $ mapM fix stmts | |
| MDo l stmts -> liftM (MDo l) $ mapM fix stmts | |
| Tuple l bx exps -> liftM (Tuple l bx) $ mapM fix exps | |
| List l exps -> liftM (List l) $ mapM fix exps | |
| Paren l e -> liftM (Paren l) $ fix e | |
| LeftSection l e op -> liftM (flip (LeftSection l) op) (fix e) | |
| RightSection l op e -> liftM (RightSection l op) $ fix e | |
| RecConstr l n fups -> liftM (RecConstr l n) $ mapM fix fups | |
| RecUpdate l e fups -> liftM2 (RecUpdate l) (fix e) $ mapM fix fups | |
| EnumFrom l e -> liftM (EnumFrom l) $ fix e | |
| EnumFromTo l e1 e2 -> liftM2 (EnumFromTo l) (fix e1) (fix e2) | |
| EnumFromThen l e1 e2 -> liftM2 (EnumFromThen l) (fix e1) (fix e2) | |
| EnumFromThenTo l e1 e2 e3 -> liftM3 (EnumFromThenTo l) (fix e1) (fix e2) (fix e3) | |
| ListComp l e quals -> liftM2 (ListComp l) (fix e) $ mapM fix quals | |
| ParComp l e qualss -> liftM2 (ParComp l) (fix e) $ mapM (mapM fix) qualss | |
| ExpTypeSig l e t -> liftM (flip (ExpTypeSig l) t) (fix e) | |
| BracketExp l b -> liftM (BracketExp l) $ fix b | |
| SpliceExp l s -> liftM (SpliceExp l) $ fix s | |
| XTag l n ats mexp cs -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs) | |
| XETag l n ats mexp -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp) | |
| XExpTag l e -> liftM (XExpTag l) $ fix e | |
| XChildTag l cs -> liftM (XChildTag l) $ mapM fix cs | |
| Proc l p e -> liftM2 (Proc l) (fix p) (fix e) | |
| LeftArrApp l e1 e2 -> liftM2 (LeftArrApp l) (fix e1) (fix e2) | |
| RightArrApp l e1 e2 -> liftM2 (RightArrApp l) (fix e1) (fix e2) | |
| LeftArrHighApp l e1 e2 -> liftM2 (LeftArrHighApp l) (fix e1) (fix e2) | |
| RightArrHighApp l e1 e2 -> liftM2 (RightArrHighApp l) (fix e1) (fix e2) | |
| CorePragma l s e -> liftM (CorePragma l s) (fix e) | |
| SCCPragma l s e -> liftM (SCCPragma l s) (fix e) | |
| GenPragma l s ab cd e -> liftM (GenPragma l s ab cd) (fix e) | |
| LCase l alts -> liftM (LCase l) $ mapM fix alts | |
| _ -> return e' |