#5665: Duplicate asm symbols for record fields when TH is used in the module
-----------------------------------+----------------------------------------
Reporter: mikhail.vorozhtsov | Owner: simonpj
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.3
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
-----------------------------------+----------------------------------------
Comment(by simonpj@…):
commit ac11b1f14c3d0d507cf11eade1855ffc440d3b7b
{{{
Author: Simon Peyton Jones <[email protected]>
Date: Tue Nov 29 15:49:24 2011 +0000
Refactor (again) the treatment of record-selector bindings
We were generating them from the tcg_tcs field of the TcGblEnv,
but that goes badly wrong when there are top-level Template
Haskell splices, because the tcg_tcs field grows successively.
If we generate record-selector binds for all the TyCons in the
accumulated list, we generate them multiple times for TyCons
earlier in the program. This what was happening in Trac #5665:
data T = T { x :: Int }
$(f 4) -- Top level splice
..more code..
Here the record selector bindings for T were being generated
twice.
Better instead to generate the record-selector bindings in
TcTyClsDecls, right where the new TyCons are being declared (as indeed
they were some time ago). This pushed me into doing some refactoring:
instead of returning the record bindings, tcTyAndClassDecls adds them
to the tcg_binds field of the TcGblEnv. I think the result is a bit
nicer, and it has the additional merit of working.
compiler/typecheck/TcBinds.lhs | 66
+++++++++++++++++++++--------------
compiler/typecheck/TcDeriv.lhs | 2 +-
compiler/typecheck/TcInstDcls.lhs | 20 ++++++-----
compiler/typecheck/TcRnDriver.lhs | 36 +++++--------------
compiler/typecheck/TcRnMonad.lhs | 15 +++++---
compiler/typecheck/TcTyClsDecls.lhs | 34 ++++++++++-------
6 files changed, 91 insertions(+), 82 deletions(-)
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5665#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs