diff --git a/ghc/compiler/typecheck/TcBinds.lhs b/ghc/compiler/typecheck/TcBinds.lhs
index ba0fa38e7adf2b385d8ca0b9e5e3b14c60ecc04f..6f62328f3861bcd9eca4050b6ece428f6a2f6fd7 100644
--- a/ghc/compiler/typecheck/TcBinds.lhs
+++ b/ghc/compiler/typecheck/TcBinds.lhs
@@ -954,7 +954,8 @@ sigContextsCtxt s1 s2
 mainContextsErr id
   | getName id == main_NAME = ptext SLIT("Main.main cannot be overloaded")
   | otherwise
-  = quotes (ppr id) <+> ptext SLIT("cannot be overloaded, because it is mutually recursive with Main.main")
+  = quotes (ppr id) <+> ptext SLIT("cannot be overloaded") <> char ',' <> -- sigh; workaround for cpp's inability to deal
+    ptext SLIT("because it is mutually recursive with Main.main")         -- with commas inside SLIT strings.
 
 mainTyCheckCtxt
   = hsep [ptext SLIT("When checking that"), ppr main_NAME, ptext SLIT("has the required type")]