-- Check the statement list ends in an expression
case last stmts' of {
ResultStmt _ _ -> returnM () ;
- _ -> addErr (doStmtListErr (binder_name do_or_lc) e)
+ _ -> addErr (doStmtListErr do_or_lc e)
} `thenM_`
-- Generate the rebindable syntax for the monad
syntax_names MDoExpr = monadNames ++ [mfixName]
syntax_names other = []
- binder_name MDoExpr = "mdo"
- binder_name other = "do"
-
rnExpr (ExplicitList _ exps)
= rnExprs exps `thenM` \ (exps', fvs) ->
returnM (ExplicitList placeHolderType exps', fvs `addOneFV` listTyCon_name)
= sep [ptext SLIT("Pattern syntax in expression context:"),
nest 4 (ppr e)]
-doStmtListErr name e
- = sep [quotes (text name) <+> ptext SLIT("statements must end in expression:"),
+doStmtListErr do_or_lc e
+ = sep [quotes (text binder_name) <+> ptext SLIT("statements must end in expression:"),
nest 4 (ppr e)]
+ where
+ binder_name = case do_or_lc of
+ MDoExpr -> "mdo"
+ other -> "do"
thErr what
= ptext SLIT("Template Haskell") <+> text what <+>