Fix Trac #3066: checking argument types in foreign calls
authorsimonpj@microsoft.com <unknown>
Tue, 3 Mar 2009 17:42:58 +0000 (17:42 +0000)
committersimonpj@microsoft.com <unknown>
Tue, 3 Mar 2009 17:42:58 +0000 (17:42 +0000)
When checking argument types in a foreign call we were stupidly
looking through foralls.  The fix is easy.

Merge to 6.10.2

compiler/typecheck/TcType.lhs

index e0e7649..d6dbf1c 100644 (file)
@@ -1268,8 +1268,9 @@ checkRepTyCon :: (TyCon -> Bool) -> Type -> Bool
        --      newtype T = MkT (Ptr T)
        -- and wanted it to work...
 checkRepTyCon check_tc ty 
-  | Just (tc,_) <- splitTyConApp_maybe (repType ty) = check_tc tc
-  | otherwise                                      = False
+  | Just (ty', _) <- splitNewTypeRepCo_maybe ty = checkRepTyCon check_tc ty'
+  | Just (tc,_)   <- splitTyConApp_maybe ty     = check_tc tc
+  | otherwise                                  = False
 
 checkRepTyConKey :: [Unique] -> Type -> Bool
 -- Like checkRepTyCon, but just looks at the TyCon key