|
Re: [GHC] #481: Recompilation check fails for TH: msg#00190lang.haskell.glasgow.bugs
#481: Recompilation check fails for TH ------------------------------+--------------------------------------------- Reporter: simonpj | Owner: simonpj Type: bug | Status: assigned Priority: low | Milestone: _|_ Component: Template Haskell | Version: 6.4.1 Severity: normal | Resolution: None Keywords: | Difficulty: Unknown Testcase: TH_recompile | Architecture: Unknown Os: Unknown | ------------------------------+--------------------------------------------- Changes (by igloo): * milestone: => _|_ * testcase: => TH_recompile Old description: > {{{ > The recompilation check only recompiles a module when > the *interface* of a module it imports changes. But > with Template Haskell, it may need to be recompiled > when the *implementation* changes. > > Concrete example below. It's quite awkward to fix. > > * Perhaps a module that contains any splices should be > recompiled always. > * Perhaps a module that exports any TH stuff (how > would we tell?) should be flagged as changed if > anything about it changes. > > Simon > > The following scenario reproduces this error > (thanks to Bulat Ziganshin bulatz@xxxxxxxxxx): > > 1) create Main.hs containing code > > module Main where > import Sub > main = print $x > > and Sub.hs containing code > > module Sub where > x = [| 1 |] > > > 2) compile them with --make: > > C:\!\Haskell\!>ghc --make -fth Main.hs > Chasing modules from: Main.hs > Compiling Sub ( ./Sub.hs, ./Sub.o ) > Compiling Main ( Main.hs, Main.o ) > Loading package base-1.0 ... linking ... done. > Loading package haskell98-1.0 ... linking ... done. > Loading package template-haskell-1.0 ... linking ... > done. > Linking ... > > C:\!\Haskell\!>main.exe > 1 > > 3) now change Sub.hs to the following code: > > module Sub where > x = [| 2 |] > > > 4) and recompile program: > > C:\!\Haskell\!>ghc --make -fth Main.hs > Chasing modules from: Main.hs > Compiling Sub ( ./Sub.hs, ./Sub.o ) > Skipping Main ( Main.hs, Main.o ) > Linking ... > > C:\!\Haskell\!>main.exe > 1 > > As you see, Main.hs is not recompiled despite the fact > that definition > of x is changed and now program must print "2" > > }}} New description: The recompilation check only recompiles a module when the *interface* of a module it imports changes. But with Template Haskell, it may need to be recompiled when the *implementation* changes. Concrete example below. It's quite awkward to fix. * Perhaps a module that contains any splices should be recompiled always. * Perhaps a module that exports any TH stuff (how would we tell?) should be flagged as changed if anything about it changes. Simon The following scenario reproduces this error (thanks to Bulat Ziganshin bulatz@xxxxxxxxxx): 1) create Main.hs containing code {{{ module Main where import Sub main = print $x }}} and Sub.hs containing code {{{ module Sub where x = [| 1 |] }}} 2) compile them with --make: {{{ C:\!\Haskell\!>ghc --make -fth Main.hs Chasing modules from: Main.hs Compiling Sub ( ./Sub.hs, ./Sub.o ) Compiling Main ( Main.hs, Main.o ) Loading package base-1.0 ... linking ... done. Loading package haskell98-1.0 ... linking ... done. Loading package template-haskell-1.0 ... linking ... done. Linking ... C:\!\Haskell\!>main.exe 1 }}} 3) now change Sub.hs to the following code: {{{ module Sub where x = [| 2 |] }}} 4) and recompile program: {{{ C:\!\Haskell\!>ghc --make -fth Main.hs Chasing modules from: Main.hs Compiling Sub ( ./Sub.hs, ./Sub.o ) Skipping Main ( Main.hs, Main.o ) Linking ... C:\!\Haskell\!>main.exe 1 }}} As you see, Main.hs is not recompiled despite the fact that definition of x is changed and now program must print "2" -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/481> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler_______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@xxxxxxxxxxx http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: [GHC] #477: Compiling multiple executables with -make, GHC |
|---|---|
| Next by Date: | Re: [GHC] #482: 'Bug' when installing GHC 6.4.1, GHC |
| Previous by Thread: | Re: [GHC] #477: Compiling multiple executables with -make, GHC |
| Next by Thread: | Re: [GHC] #482: 'Bug' when installing GHC 6.4.1, GHC |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |