-- we don't exploit it yet, so don't bother
Just (tycon,_,data_con,cmpnt_tys) -- Single constructor case
+ | isRecursiveTyCon tycon -- Recursive data type; don't unpack
+ -> wwStrict -- (this applies to newtypes too:
+ -- e.g. data Void = MkVoid Void)
+
| isNewTyCon tycon -- A newtype!
-> ASSERT( null (tail cmpnt_tys) )
let
wwUnpackNew demand
| null compt_strict_infos -- A nullary data type
- || isRecursiveTyCon tycon -- Recursive data type; don't unpack
-> wwStrict
| otherwise -- Some other data type