From 0a5613f40b0e32cf59966e6b56b807cdbe80aa7b Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Thu, 4 Mar 2010 12:41:13 +0000 Subject: [PATCH] Minor refactoring of placeHolderPunRhs --- compiler/parser/Parser.y.pp | 9 ++++----- compiler/parser/RdrHsSyn.lhs | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp index 3b51e58..42cb96f 100644 --- a/compiler/parser/Parser.y.pp +++ b/compiler/parser/Parser.y.pp @@ -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 diff --git a/compiler/parser/RdrHsSyn.lhs b/compiler/parser/RdrHsSyn.lhs index b83bcd9..ae4a15a 100644 --- a/compiler/parser/RdrHsSyn.lhs +++ b/compiler/parser/RdrHsSyn.lhs @@ -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 -- 1.7.10.4