TypeAna.hs revision eee1316a9384b10682c998bd4b62b4a5ca2ce820
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa Authors: Christian Maeder
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa analyse given classes and types
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksaimport qualified Common.Lib.Map as Map
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksaimport qualified Common.Lib.Set as Set
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksadata ApplMode = OnlyArg | TopLevel
649fdc0d0502d62d160c150684356fef2c273484Eugen KuksamkTypeConstrAppls :: ApplMode -> Type -> ReadR TypeMap Type
649fdc0d0502d62d160c150684356fef2c273484Eugen KuksamkTypeConstrAppls _ t@(TypeName _ _ _) =
649fdc0d0502d62d160c150684356fef2c273484Eugen KuksamkTypeConstrAppls m (TypeAppl t1 t2) =
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa do t3 <- mkTypeConstrAppls m t1
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa t4 <- mkTypeConstrAppls OnlyArg t2
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa return $ TypeAppl t3 t4
649fdc0d0502d62d160c150684356fef2c273484Eugen KuksamkTypeConstrAppls _ (TypeToken t) =
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa do let i = simpleIdToId t
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa let m = getKind tk i
649fdc0d0502d62d160c150684356fef2c273484Eugen Kuksa c = if isTypeVar tk i then 1 else 0
Intersection s _ -> if Set.isEmpty s then return star else
do k <- anaClassId $ Set.findMin s
case Map.lookup i tk of
case Map.lookup i tk of