Commit 0a5613f4 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Minor refactoring of placeHolderPunRhs

parent c0524abb
......@@ -1633,11 +1633,10 @@ fbinds1 :: { ([HsRecField RdrName (LHsExpr RdrName)], Bool) }
| '..' { ([], True) }
fbind :: { HsRecField RdrName (LHsExpr RdrName) }
: qvar '=' exp { HsRecField $1 $3 False }
| qvar { HsRecField $1 (L (getLoc $1) placeHolderPunRhs) True }
-- Here's where we say that plain 'x'
-- means exactly 'x = x'. The pun-flag boolean is
-- there so we can still print it right
: qvar '=' exp { HsRecField $1 $3 False }
| qvar { HsRecField $1 placeHolderPunRhs True }
-- In the punning case, use a place-holder
-- The renamer fills in the final value
-----------------------------------------------------------------------------
-- Implicit Parameter Bindings
......
......@@ -717,10 +717,10 @@ checkAPat dynflags loc e = case e of
HsType ty -> return (TypePat ty)
_ -> patFail loc
placeHolderPunRhs :: HsExpr RdrName
placeHolderPunRhs :: LHsExpr RdrName
-- The RHS of a punned record field will be filled in by the renamer
-- It's better not to make it an error, in case we want to print it when debugging
placeHolderPunRhs = HsVar pun_RDR
placeHolderPunRhs = noLoc (HsVar pun_RDR)
plus_RDR, bang_RDR, pun_RDR :: RdrName
plus_RDR = mkUnqual varName (fsLit "+") -- Hack
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment