X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fparser%2FRdrHsSyn.lhs;h=746f3d623b95cde27b346db569f2075aaba9804c;hp=f230187983d1b07e407b9d6bdd6c493c9762e4e9;hb=e87df67d6467653567482f25910de95077924555;hpb=7854ec4b11e117f8514553890851d14a66690fbb diff --git a/compiler/parser/RdrHsSyn.lhs b/compiler/parser/RdrHsSyn.lhs index f230187..746f3d6 100644 --- a/compiler/parser/RdrHsSyn.lhs +++ b/compiler/parser/RdrHsSyn.lhs @@ -549,12 +549,14 @@ checkInstType (L l t) checkDictTy :: LHsType RdrName -> P (LHsType RdrName) checkDictTy (L spn ty) = check ty [] where - check (HsTyVar t) args | not (isRdrTyVar t) - = return (L spn (HsPredTy (HsClassP t args))) + check (HsTyVar tc) args | isRdrTc tc = done tc args + check (HsOpTy t1 (L _ tc) t2) args | isRdrTc tc = done tc (t1:t2:args) check (HsAppTy l r) args = check (unLoc l) (r:args) check (HsParTy t) args = check (unLoc t) args check _ _ = parseError spn "Malformed instance header" + done tc args = return (L spn (HsPredTy (HsClassP tc args))) + checkTParams :: Bool -- Type/data family -> [LHsType RdrName] -> P ([LHsTyVarBndr RdrName], Maybe [LHsType RdrName]) @@ -985,7 +987,7 @@ mkImport :: CCallConv -> P (HsDecl RdrName) mkImport cconv safety (L loc entity, v, ty) | cconv == PrimCallConv = do - let funcTarget = CFunction (PackageTarget entity Nothing) + let funcTarget = CFunction (StaticTarget entity Nothing) importSpec = CImport PrimCallConv safety nilFS funcTarget return (ForD (ForeignImport v ty importSpec)) @@ -1023,7 +1025,7 @@ parseCImport cconv safety nm str = id_char c = isAlphaNum c || c == '_' cimp nm = (ReadP.char '&' >> skipSpaces >> CLabel <$> cid) - +++ ((\c -> CFunction (PackageTarget c Nothing)) <$> cid) + +++ ((\c -> CFunction (StaticTarget c Nothing)) <$> cid) where cid = return nm +++ (do c <- satisfy (\c -> isAlpha c || c == '_')