From 938f825c4c3aac524459a801816db10718dff9de Mon Sep 17 00:00:00 2001 From: simonpj Date: Mon, 26 Jul 1999 15:37:41 +0000 Subject: [PATCH] [project @ 1999-07-26 15:37:41 by simonpj] Make Type.isUnLiftedType return True for forall'd unlifted types: e.g. x :: forall a. Int# I found bindings like these were getting floated to the top level. They are pretty bogus types, mind you. It would be better never to construct them. (George Russell tripped over this one.) --- ghc/compiler/types/Type.lhs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ghc/compiler/types/Type.lhs b/ghc/compiler/types/Type.lhs index bd502b5..8271ce3 100644 --- a/ghc/compiler/types/Type.lhs +++ b/ghc/compiler/types/Type.lhs @@ -835,9 +835,16 @@ isUnboxedType :: Type -> Bool isUnboxedType ty = not (isFollowableRep (typePrimRep ty)) isUnLiftedType :: Type -> Bool -isUnLiftedType ty = case splitTyConApp_maybe ty of - Just (tc, ty_args) -> isUnLiftedTyCon tc - other -> False + -- isUnLiftedType returns True for forall'd unlifted types: + -- x :: forall a. Int# + -- I found bindings like these were getting floated to the top level. + -- They are pretty bogus types, mind you. It would be better never to + -- construct them + +isUnLiftedType (ForAllTy tv ty) = isUnLiftedType ty +isUnLiftedType (NoteTy _ ty) = isUnLiftedType ty +isUnLiftedType (TyConApp tc _) = isUnLiftedTyCon tc +isUnLiftedType other = False isUnboxedTupleType :: Type -> Bool isUnboxedTupleType ty = case splitTyConApp_maybe ty of -- 1.7.10.4