[commit: ghc] master: Remove unnecessary isTyVar tests in TcType (a0899b2)
git at git.haskell.org
git at git.haskell.org
Tue Mar 1 17:28:02 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/a0899b2f66a4102a7cf21569889381446ce63833/ghc
>---------------------------------------------------------------
commit a0899b2f66a4102a7cf21569889381446ce63833
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Tue Mar 1 17:05:56 2016 +0000
Remove unnecessary isTyVar tests in TcType
These extra tests were added by Richard when he had CoVars floating
around in places where previously only TyVars had been. But
fortunately those days are gone, so these tests are unnecessary,
and are slowing GHC down.
Let's remove them.
>---------------------------------------------------------------
a0899b2f66a4102a7cf21569889381446ce63833
compiler/typecheck/TcType.hs | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/compiler/typecheck/TcType.hs b/compiler/typecheck/TcType.hs
index 73a46ae..40821e5 100644
--- a/compiler/typecheck/TcType.hs
+++ b/compiler/typecheck/TcType.hs
@@ -860,7 +860,6 @@ isTouchableOrFmv ctxt_tclvl tv
isTouchableMetaTyVar :: TcLevel -> TcTyVar -> Bool
isTouchableMetaTyVar ctxt_tclvl tv
- | isTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
case tcTyVarDetails tv of
MetaTv { mtv_tclvl = tv_tclvl }
@@ -868,16 +867,13 @@ isTouchableMetaTyVar ctxt_tclvl tv
ppr tv $$ ppr tv_tclvl $$ ppr ctxt_tclvl )
tv_tclvl `sameDepthAs` ctxt_tclvl
_ -> False
- | otherwise = False
isFloatedTouchableMetaTyVar :: TcLevel -> TcTyVar -> Bool
isFloatedTouchableMetaTyVar ctxt_tclvl tv
- | isTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
case tcTyVarDetails tv of
MetaTv { mtv_tclvl = tv_tclvl } -> tv_tclvl `strictlyDeeperThan` ctxt_tclvl
_ -> False
- | otherwise = False
isImmutableTyVar :: TyVar -> Bool
isImmutableTyVar tv
@@ -892,12 +888,10 @@ isTyConableTyVar tv
-- True of a meta-type variable that can be filled in
-- with a type constructor application; in particular,
-- not a SigTv
- | isTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
case tcTyVarDetails tv of
MetaTv { mtv_info = SigTv } -> False
_ -> True
- | otherwise = True
isFmvTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
@@ -927,20 +921,16 @@ isSkolemTyVar tv
_other -> True
isOverlappableTyVar tv
- | isTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
case tcTyVarDetails tv of
SkolemTv overlappable -> overlappable
_ -> False
- | otherwise = False
isMetaTyVar tv
- | isTyVar tv
= ASSERT2( isTcTyVar tv, ppr tv )
case tcTyVarDetails tv of
MetaTv {} -> True
_ -> False
- | otherwise = False
-- isAmbiguousTyVar is used only when reporting type errors
-- It picks out variables that are unbound, namely meta
@@ -948,12 +938,10 @@ isMetaTyVar tv
-- RtClosureInspect.zonkRTTIType. These are "ambiguous" in
-- the sense that they stand for an as-yet-unknown type
isAmbiguousTyVar tv
- | isTyVar tv
= case tcTyVarDetails tv of
MetaTv {} -> True
RuntimeUnk {} -> True
_ -> False
- | otherwise = False
isMetaTyVarTy :: TcType -> Bool
isMetaTyVarTy (TyVarTy tv) = isMetaTyVar tv
More information about the ghc-commits
mailing list