summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types/should_compile/T19336.hs
blob: dfc7409fa36d57eb64b881744e8a9689365ce43f (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
33
34
35
36
37
38
39
40
41
42
43
{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts, FlexibleInstances
           , DataKinds, NoMonomorphismRestriction, UndecidableInstances
           , TypeFamilies #-}

{-# OPTIONS_GHC -Wall #-}

module T19336 where

import GHC.TypeLits

class X a b where
  convert :: a -> b

instance X Int String where
  convert = show

instance X String String where
  convert = id

instance {-# OVERLAPPABLE #-} TypeError ('Text "Oops") => X a b where
  convert = error "unreachable"

type family F a where
  F String = String
  F Int    = String

convert_f :: X a (F a) => a -> a -> F a
convert_f _ = convert

----------

class Poly a where
  poly :: a

instance Poly String where
  poly = "hi"

instance Poly Int where
  poly = 2

----------

oops = convert_f poly