Well, the problem isn't quite that the semicolon is expected before the second 
line -- it's that the semicolon is interpreted as separating let-definitions, 
not do-statements.

For example, the following works:

bar = do {let {x = 5};
          return x}

Looking quickly through the TH's pretty-printer code, there seem to be several 
places where problems like this might arise, due to lack of braces or too many 
of them.

What to do? If you're blocked by this issue, just edit the pretty-printer code. 
The code is actually quite straightforward. Get the sources 
(https://ghc.haskell.org/trac/ghc/wiki/Building/GettingTheSources),
prep your machine (https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation), 
and build. Given
that TH has changed since the 7.8 release, I recommend saying `sync-all 
checkout ghc-7.8` to
get the 7.8 branch before building.

After building, do some sanity checks to make sure your hand-built GHC is 
working.

Then, just edit libraries/template-haskell/Language/Haskell/TH/Ppr.hs until 
things work. In particular, I bet adding a call to `braces` on line 150 will go 
a long way here.

Even if we fixed the bug you reported, that bugfix would be in HEAD, where TH 
is different than in 7.8. It's possible it would be merged for 7.8.3, but my 
guess is that you don't want to wait that long.

I hope this helps!
Richard

On May 9, 2014, at 12:08 AM, George Roldugin <groldu...@cse.unsw.edu.au> wrote:

> Hi all,
> 
> I've hit a problem with GHC 7.8 where the code pretty printed by Template 
> Haskell fails to parse.
> 
> The problem is with the placement of explicit semicolons in place of 
> indentation.
> 
> The following code pretty printed by TH won't parse:
> 
> bar = do {let x = 5;
>          return x}
> 
> 
> GHC expects the following placement of semicolons:
> 
> bar = do {let x = 5
>         ; return x}
> 
> 
> I reported this bug and included sample TH code to reproduce the problem here:
> https://ghc.haskell.org/trac/ghc/ticket/9022
> 
> I rely on compiling code constructed with TH for my thesis project.
> 
> Is there a work around I could use besides going back to GHC 7.6?
> 
> Cheers,
> George 
> _______________________________________________
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to