From fa73c9bda634770b07bbd1a84dc034c885abddaf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 10 Dec 2016 12:13:41 -0400 Subject: better fix --- Build/EvilSplicer.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Build/EvilSplicer.hs b/Build/EvilSplicer.hs index a24f265e2..425971723 100644 --- a/Build/EvilSplicer.hs +++ b/Build/EvilSplicer.hs @@ -491,12 +491,13 @@ mangleCode = flip_colon - a line: - - forall foo => - - Foo -> + - Foo -> - - - To detect and avoid these, note that ghc puts 2 spaces - - before the "->" + - To avoid breaking these, look for the => on the previous line. -} case_layout = parsecAndReplace $ do + void newline + lastline <- restOfLine void newline indent1 <- many1 $ char ' ' prefix <- manyTill (noneOf "\n") (try (string "-> ")) @@ -506,7 +507,7 @@ mangleCode = flip_colon then unexpected "lambda expression" else if null prefix then unexpected "second line of lambda" - else if " " `isSuffixOf` prefix + else if "=>" `isSuffixOf` lastline then unexpected "probably type signature" else return $ "\n" ++ indent1 ++ "; " ++ prefix ++ " -> " {- Sometimes cases themselves span multiple lines: -- cgit v1.2.3