[commit: ghc] type-holes-branch: Add a flag to turn (unnamed) holes on. (03fb603)
Simon Peyton Jones
simonpj at microsoft.com
Mon Sep 17 13:03:59 CEST 2012
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : type-holes-branch
http://hackage.haskell.org/trac/ghc/changeset/03fb6039c4e57c9cf92bcb8f0c0682c49c9f0897
>---------------------------------------------------------------
commit 03fb6039c4e57c9cf92bcb8f0c0682c49c9f0897
Author: Thijs Alkemade <thijsalkemade at gmail.com>
Date: Wed Jul 11 15:52:43 2012 +0200
Add a flag to turn (unnamed) holes on.
This is now -XHoles or {-# LANGUAGE Holes #-}. Named holes should probably be completely removed or disabled in the parser.
>---------------------------------------------------------------
compiler/main/DynFlags.hs | 4 +++-
compiler/rename/RnExpr.lhs | 9 ++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index c04b474..4ae66e6 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -461,6 +461,7 @@ data ExtensionFlag
| Opt_NondecreasingIndentation
| Opt_RelaxedLayout
| Opt_TraditionalRecordSyntax
+ | Opt_Holes
deriving (Eq, Enum, Show)
-- | Contains not only a collection of 'DynFlag's but also a plethora of
@@ -2058,7 +2059,8 @@ xFlags = [
( "OverlappingInstances", Opt_OverlappingInstances, nop ),
( "UndecidableInstances", Opt_UndecidableInstances, nop ),
( "IncoherentInstances", Opt_IncoherentInstances, nop ),
- ( "PackageImports", Opt_PackageImports, nop )
+ ( "PackageImports", Opt_PackageImports, nop ),
+ ( "Holes", Opt_Holes, nop )
]
defaultFlags :: [DynFlag]
diff --git a/compiler/rename/RnExpr.lhs b/compiler/rename/RnExpr.lhs
index e7cc03b..d1719f2 100644
--- a/compiler/rename/RnExpr.lhs
+++ b/compiler/rename/RnExpr.lhs
@@ -305,9 +305,12 @@ Since all the symbols are reservedops we can simply reject them.
We return a (bogus) EWildPat in each case.
\begin{code}
-rnExpr e at EWildPat = do { srcspan <- getSrcSpanM
- ; name' <- rnHoleName srcspan Nothing
- ; return (HsHole name', emptyFVs)
+rnExpr e at EWildPat = do { holes <- xoptM Opt_Holes
+ ; if holes then do { srcspan <- getSrcSpanM
+ ; name' <- rnHoleName srcspan Nothing
+ ; return (HsHole name', emptyFVs)
+ }
+ else patSynErr e
}
-- rnExpr e at EWildPat = patSynErr e
rnExpr e@(EAsPat {}) = patSynErr e
More information about the Cvs-ghc
mailing list