X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcType.lhs;h=4ebeeb726cc0bcd2037676722d34bdb948a715cb;hp=081843755f37b2acfd4aeb66ca0001f463b7c9e6;hb=ae08a1e6d7b2ed19d312f035fa69c4297dd1756a;hpb=189c20034325cb4006231d46d8d4080975754957 diff --git a/compiler/typecheck/TcType.lhs b/compiler/typecheck/TcType.lhs index 0818437..4ebeeb7 100644 --- a/compiler/typecheck/TcType.lhs +++ b/compiler/typecheck/TcType.lhs @@ -1083,8 +1083,7 @@ isFFILabelTy = checkRepTyConKey [ptrTyConKey, funPtrTyConKey, addrTyConKey] isFFIDotnetTy :: DynFlags -> Type -> Bool isFFIDotnetTy dflags ty - = checkRepTyCon (\ tc -> not (isByteArrayLikeTyCon tc) && - (legalFIResultTyCon dflags tc || + = checkRepTyCon (\ tc -> (legalFIResultTyCon dflags tc || isFFIDotnetObjTy ty || isStringTy ty)) ty -- Support String as an argument or result from a .NET FFI call. @@ -1160,35 +1159,24 @@ These chaps do the work; they are not exported \begin{code} legalFEArgTyCon :: TyCon -> Bool --- It's illegal to return foreign objects and (mutable) --- bytearrays from a _ccall_ / foreign declaration --- (or be passed them as arguments in foreign exported functions). legalFEArgTyCon tc - | isByteArrayLikeTyCon tc - = False - -- It's also illegal to make foreign exports that take unboxed + -- It's illegal to make foreign exports that take unboxed -- arguments. The RTS API currently can't invoke such things. --SDM 7/2000 - | otherwise = boxedMarshalableTyCon tc legalFIResultTyCon :: DynFlags -> TyCon -> Bool legalFIResultTyCon dflags tc - | isByteArrayLikeTyCon tc = False | tc == unitTyCon = True | otherwise = marshalableTyCon dflags tc legalFEResultTyCon :: TyCon -> Bool legalFEResultTyCon tc - | isByteArrayLikeTyCon tc = False | tc == unitTyCon = True | otherwise = boxedMarshalableTyCon tc legalOutgoingTyCon :: DynFlags -> Safety -> TyCon -> Bool -- Checks validity of types going from Haskell -> external world legalOutgoingTyCon dflags safety tc - | playSafe safety && isByteArrayLikeTyCon tc - = False - | otherwise = marshalableTyCon dflags tc legalFFITyCon :: TyCon -> Bool @@ -1209,11 +1197,6 @@ boxedMarshalableTyCon tc , addrTyConKey, ptrTyConKey, funPtrTyConKey , charTyConKey , stablePtrTyConKey - , byteArrayTyConKey, mutableByteArrayTyConKey , boolTyConKey ] - -isByteArrayLikeTyCon :: TyCon -> Bool -isByteArrayLikeTyCon tc = - getUnique tc `elem` [byteArrayTyConKey, mutableByteArrayTyConKey] \end{code}