Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : type-holes-branch
http://hackage.haskell.org/trac/ghc/changeset/44e134827d31987cf8b9e067d0de1288106f823e >--------------------------------------------------------------- commit 44e134827d31987cf8b9e067d0de1288106f823e Author: Thijs Alkemade <[email protected]> Date: Thu Feb 23 16:17:03 2012 +0100 Fix the parser to support named holes (as "_a"). My changes to the parser to support named holes were in the wrong file (Parser.y instead of Parser.y.pp), so they never got committed. >--------------------------------------------------------------- compiler/parser/Lexer.x | 2 -- compiler/parser/Parser.y.pp | 8 ++++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/parser/Lexer.x b/compiler/parser/Lexer.x index 219e5ac..2f22a3d 100644 --- a/compiler/parser/Lexer.x +++ b/compiler/parser/Lexer.x @@ -529,8 +529,6 @@ data Token | ITdoubleunderscore | ITbackquote | ITsimpleQuote -- ' - | IToparenunderscore - | ITcparenunderscore | ITvarid FastString -- identifiers | ITconid FastString diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp index 2ffce86..026adba 100644 --- a/compiler/parser/Parser.y.pp +++ b/compiler/parser/Parser.y.pp @@ -207,7 +207,6 @@ incorrect. %token '_' { L _ ITunderscore } -- Haskell keywords - '__' { L _ ITdoubleunderscore } 'as' { L _ ITas } 'case' { L _ ITcase } 'class' { L _ ITclass } @@ -324,6 +323,7 @@ incorrect. PREFIXQCONSYM { L _ (ITprefixqconsym _) } IPDUPVARID { L _ (ITdupipvarid _) } -- GHC extension + HOLEVARID { L _ (IThole _) } CHAR { L _ (ITchar _) } STRING { L _ (ITstring _) } @@ -1428,6 +1428,7 @@ aexp1 :: { LHsExpr RdrName } aexp2 :: { LHsExpr RdrName } : ipvar { L1 (HsIPVar $! unLoc $1) } + | hole { sL (getLoc $1) (HsHole $! unLoc $1) } | qcname { L1 (HsVar $! unLoc $1) } | literal { L1 (HsLit $! unLoc $1) } -- This will enable overloaded strings permanently. Normally the renamer turns HsString @@ -1449,7 +1450,6 @@ aexp2 :: { LHsExpr RdrName } | '[' list ']' { LL (unLoc $2) } | '[:' parr ':]' { LL (unLoc $2) } | '_' { L1 EWildPat } - | '__' { L1 (HsHole $! unLoc $1) } -- Template Haskell Extension | TH_ID_SPLICE { L1 $ HsSpliceE (mkHsSplice @@ -1743,6 +1743,9 @@ dbind : ipvar '=' exp { LL (IPBind (unLoc $1) $3) } ipvar :: { Located (IPName RdrName) } : IPDUPVARID { L1 (IPName (mkUnqual varName (getIPDUPVARID $1))) } +hole :: { Located RdrName } + : HOLEVARID { sL (getLoc $1) (mkUnqual varName $ getHOLEVARID $1) } + ----------------------------------------------------------------------------- -- Warnings and deprecations @@ -2062,6 +2065,7 @@ getQCONSYM (L _ (ITqconsym x)) = x getPREFIXQVARSYM (L _ (ITprefixqvarsym x)) = x getPREFIXQCONSYM (L _ (ITprefixqconsym x)) = x getIPDUPVARID (L _ (ITdupipvarid x)) = x +getHOLEVARID (L _ (IThole x)) = x getCHAR (L _ (ITchar x)) = x getSTRING (L _ (ITstring x)) = x getINTEGER (L _ (ITinteger x)) = x _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
