diff --git a/ghc/compiler/basicTypes/DataCon.lhs b/ghc/compiler/basicTypes/DataCon.lhs
index ffa98ea621269f3a73e48c5ab27970fcc247649e..d8c0935cb57cfa9e4f2e9f988c91d6514a9fa189 100644
--- a/ghc/compiler/basicTypes/DataCon.lhs
+++ b/ghc/compiler/basicTypes/DataCon.lhs
@@ -265,8 +265,8 @@ maybe_unpack_field set ty strict
 
 maybe_unpack_fields :: UniqSet TyCon -> [(Type,StrictnessMark)] -> Maybe [Type]
 maybe_unpack_fields set tys
-  | any isNothing unpacked_fields = Nothing
-  | otherwise = Just (concat (catMaybes unpacked_fields))
+  | all isJust unpacked_fields = Just (concat (catMaybes unpacked_fields))
+  | otherwise = Nothing
   where unpacked_fields = map (\(ty,str) -> maybe_unpack_field set ty str) tys
 \end{code}