summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types/should_compile/T4494.hs
blob: ec04943d6be20c790f941be433f9d541425d6332 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{-# LANGUAGE TypeFamilies, RankNTypes, FlexibleContexts,  ScopedTypeVariables #-}

module T4494 where

type family H s
type family F v

bar :: (forall t. Maybe t -> a) -> H a -> Int
bar = error "urk"

call :: F Bool -> Int
call x = bar (\_ -> x) (undefined :: H (F Bool))

{-
  [W] H (F Bool) ~ H alpha
  [W] alpha ~ F Bool
-->
  F Bool  ~ fuv0
  H fuv0  ~ fuv1
  H alpha ~ fuv2

  fuv1 ~ fuv2
  alpha ~ fuv0

flatten
~~~~~~~
fuv0 := alpha
fuv1 := fuv2

alpha := F Bool
-}