Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
GHC
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
3,929
Issues
3,929
List
Boards
Labels
Service Desk
Milestones
Merge Requests
310
Merge Requests
310
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Analytics
CI / CD Analytics
Code Review
Insights
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
c30744cc
Commit
c30744cc
authored
Jun 21, 2013
by
eir@cis.upenn.edu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updates to support closed type families.
parent
a26bf928
Changes
52
Hide whitespace changes
Inline
Sidebyside
Showing
52 changed files
with
240 additions
and
303 deletions
+240
303
testsuite/tests/ghci/scripts/T4175.hs
testsuite/tests/ghci/scripts/T4175.hs
+1
3
testsuite/tests/ghci/scripts/T4175.stdout
testsuite/tests/ghci/scripts/T4175.stdout
+46
52
testsuite/tests/indexedtypes/should_compile/Overlap1.hs
testsuite/tests/indexedtypes/should_compile/Overlap1.hs
+1
2
testsuite/tests/indexedtypes/should_compile/Overlap12.hs
testsuite/tests/indexedtypes/should_compile/Overlap12.hs
+15
4
testsuite/tests/indexedtypes/should_compile/Overlap13.hs
testsuite/tests/indexedtypes/should_compile/Overlap13.hs
+15
0
testsuite/tests/indexedtypes/should_compile/Overlap14.hs
testsuite/tests/indexedtypes/should_compile/Overlap14.hs
+12
0
testsuite/tests/indexedtypes/should_compile/Overlap2.hs
testsuite/tests/indexedtypes/should_compile/Overlap2.hs
+1
2
testsuite/tests/indexedtypes/should_compile/T3017.stderr
testsuite/tests/indexedtypes/should_compile/T3017.stderr
+24
24
testsuite/tests/indexedtypes/should_compile/T7585.hs
testsuite/tests/indexedtypes/should_compile/T7585.hs
+1
2
testsuite/tests/indexedtypes/should_compile/all.T
testsuite/tests/indexedtypes/should_compile/all.T
+2
0
testsuite/tests/indexedtypes/should_fail/NoGood.hs
testsuite/tests/indexedtypes/should_fail/NoGood.hs
+5
0
testsuite/tests/indexedtypes/should_fail/NoGood.stderr
testsuite/tests/indexedtypes/should_fail/NoGood.stderr
+5
0
testsuite/tests/indexedtypes/should_fail/Overlap10.hs
testsuite/tests/indexedtypes/should_fail/Overlap10.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap10.stderr
testsuite/tests/indexedtypes/should_fail/Overlap10.stderr
+3
3
testsuite/tests/indexedtypes/should_fail/Overlap11.hs
testsuite/tests/indexedtypes/should_fail/Overlap11.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap11.stderr
testsuite/tests/indexedtypes/should_fail/Overlap11.stderr
+3
3
testsuite/tests/indexedtypes/should_fail/Overlap3.hs
testsuite/tests/indexedtypes/should_fail/Overlap3.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap3.stderr
testsuite/tests/indexedtypes/should_fail/Overlap3.stderr
+3
9
testsuite/tests/indexedtypes/should_fail/Overlap4.hs
testsuite/tests/indexedtypes/should_fail/Overlap4.hs
+3
11
testsuite/tests/indexedtypes/should_fail/Overlap4.stderr
testsuite/tests/indexedtypes/should_fail/Overlap4.stderr
+4
4
testsuite/tests/indexedtypes/should_fail/Overlap5.hs
testsuite/tests/indexedtypes/should_fail/Overlap5.hs
+6
19
testsuite/tests/indexedtypes/should_fail/Overlap5.stderr
testsuite/tests/indexedtypes/should_fail/Overlap5.stderr
+4
28
testsuite/tests/indexedtypes/should_fail/Overlap6.hs
testsuite/tests/indexedtypes/should_fail/Overlap6.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap6.stderr
testsuite/tests/indexedtypes/should_fail/Overlap6.stderr
+4
4
testsuite/tests/indexedtypes/should_fail/Overlap7.hs
testsuite/tests/indexedtypes/should_fail/Overlap7.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap7.stderr
testsuite/tests/indexedtypes/should_fail/Overlap7.stderr
+3
9
testsuite/tests/indexedtypes/should_fail/Overlap8.stderr
testsuite/tests/indexedtypes/should_fail/Overlap8.stderr
+0
5
testsuite/tests/indexedtypes/should_fail/Overlap9.hs
testsuite/tests/indexedtypes/should_fail/Overlap9.hs
+1
2
testsuite/tests/indexedtypes/should_fail/Overlap9.stderr
testsuite/tests/indexedtypes/should_fail/Overlap9.stderr
+4
4
testsuite/tests/indexedtypes/should_fail/SimpleFail1a.stderr
...suite/tests/indexedtypes/should_fail/SimpleFail1a.stderr
+1
1
testsuite/tests/indexedtypes/should_fail/SimpleFail1b.stderr
...suite/tests/indexedtypes/should_fail/SimpleFail1b.stderr
+1
1
testsuite/tests/indexedtypes/should_fail/T5515.stderr
testsuite/tests/indexedtypes/should_fail/T5515.stderr
+2
2
testsuite/tests/indexedtypes/should_fail/T7560.hs
testsuite/tests/indexedtypes/should_fail/T7560.hs
+0
13
testsuite/tests/indexedtypes/should_fail/T7786.hs
testsuite/tests/indexedtypes/should_fail/T7786.hs
+3
6
testsuite/tests/indexedtypes/should_fail/T7786.stderr
testsuite/tests/indexedtypes/should_fail/T7786.stderr
+1
1
testsuite/tests/indexedtypes/should_fail/all.T
testsuite/tests/indexedtypes/should_fail/all.T
+3
2
testsuite/tests/th/ClosedFam1.hs
testsuite/tests/th/ClosedFam1.hs
+13
0
testsuite/tests/th/ClosedFam1.stderr
testsuite/tests/th/ClosedFam1.stderr
+6
0
testsuite/tests/th/ClosedFam2.hs
testsuite/tests/th/ClosedFam2.hs
+22
0
testsuite/tests/th/T5886a.hs
testsuite/tests/th/T5886a.hs
+1
1
testsuite/tests/th/TH_TyInstWhere1.hs
testsuite/tests/th/TH_TyInstWhere1.hs
+1
3
testsuite/tests/th/TH_TyInstWhere1.stderr
testsuite/tests/th/TH_TyInstWhere1.stderr
+3
3
testsuite/tests/th/TH_TyInstWhere2.hs
testsuite/tests/th/TH_TyInstWhere2.hs
+1
3
testsuite/tests/th/TH_TyInstWhere2.stderr
testsuite/tests/th/TH_TyInstWhere2.stderr
+4
4
testsuite/tests/th/TH_TyInstWhere3.hs
testsuite/tests/th/TH_TyInstWhere3.hs
+0
18
testsuite/tests/th/TH_TyInstWhere3.stderr
testsuite/tests/th/TH_TyInstWhere3.stderr
+0
3
testsuite/tests/th/TH_TyInstWhere4.hs
testsuite/tests/th/TH_TyInstWhere4.hs
+0
20
testsuite/tests/th/TH_TyInstWhere4.stderr
testsuite/tests/th/TH_TyInstWhere4.stderr
+0
16
testsuite/tests/th/all.T
testsuite/tests/th/all.T
+3
2
testsuite/tests/typecheck/should_compile/T5481.stderr
testsuite/tests/typecheck/should_compile/T5481.stderr
+2
2
testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr
testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr
+1
1
testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr
testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr
+1
1
No files found.
testsuite/tests/ghci/scripts/T4175.hs
View file @
c30744cc
...
...
@@ 17,8 +17,6 @@ instance C Int where
instance
C
()
where
type
D
()
()
=
Bool
type
family
E
a
type
instance
where
type
family
E
a
where
E
()
=
Bool
E
Int
=
String
\ No newline at end of file
testsuite/tests/ghci/scripts/T4175.stdout
View file @
c30744cc
type family A a b :: *  Defined at T4175.hs:4:13
type instance A (Maybe a) a  Defined at T4175.hs:6:15
type instance A Int Int  Defined at T4175.hs:5:15
data family B a  Defined at T4175.hs:8:13
data instance B ()  Defined at T4175.hs:9:15
class C a where
type family D a b :: *
 Defined at T4175.hs:12:10
type D () ()  Defined at T4175.hs:18:10
type D Int ()  Defined at T4175.hs:15:10
type family E a :: *  Defined at T4175.hs:20:13
type instance where
E ()  Defined at T4175.hs:23:5
E Int  Defined at T4175.hs:24:5
data () = ()  Defined in ‛GHC.Tuple’
instance C ()  Defined at T4175.hs:17:10
instance Bounded ()  Defined in ‛GHC.Enum’
instance Enum ()  Defined in ‛GHC.Enum’
instance Eq ()  Defined in ‛GHC.Classes’
instance Ord ()  Defined in ‛GHC.Classes’
instance Read ()  Defined in ‛GHC.Read’
instance Show ()  Defined in ‛GHC.Show’
type instance where
E ()  Defined at T4175.hs:23:5
E Int  Defined at T4175.hs:24:5
type D () ()  Defined at T4175.hs:18:10
type D Int ()  Defined at T4175.hs:15:10
data instance B ()  Defined at T4175.hs:9:15
data Maybe a = Nothing  Just a  Defined in ‛Data.Maybe’
instance Eq a => Eq (Maybe a)  Defined in ‛Data.Maybe’
instance Monad Maybe  Defined in ‛Data.Maybe’
instance Functor Maybe  Defined in ‛Data.Maybe’
instance Ord a => Ord (Maybe a)  Defined in ‛Data.Maybe’
instance Read a => Read (Maybe a)  Defined in ‛GHC.Read’
instance Show a => Show (Maybe a)  Defined in ‛GHC.Show’
type instance A (Maybe a) a  Defined at T4175.hs:6:15
data Int = GHC.Types.I# GHC.Prim.Int#  Defined in ‛GHC.Types’
instance C Int  Defined at T4175.hs:14:10
instance Bounded Int  Defined in ‛GHC.Enum’
instance Enum Int  Defined in ‛GHC.Enum’
instance Eq Int  Defined in ‛GHC.Classes’
instance Integral Int  Defined in ‛GHC.Real’
instance Num Int  Defined in ‛GHC.Num’
instance Ord Int  Defined in ‛GHC.Classes’
instance Read Int  Defined in ‛GHC.Read’
instance Real Int  Defined in ‛GHC.Real’
instance Show Int  Defined in ‛GHC.Show’
type instance where
E ()  Defined at T4175.hs:23:5
E Int  Defined at T4175.hs:24:5
type D Int ()  Defined at T4175.hs:15:10
type instance A Int Int  Defined at T4175.hs:5:15
type family A a b :: *  Defined at T4175.hs:4:13
type instance A (Maybe a) a  Defined at T4175.hs:6:1
type instance A Int Int  Defined at T4175.hs:5:1
data family B a  Defined at T4175.hs:8:13
data instance B ()  Defined at T4175.hs:9:15
class C a where
type family D a b :: *
 Defined at T4175.hs:12:10
type D () ()  Defined at T4175.hs:18:5
type D Int ()  Defined at T4175.hs:15:5
type family E a :: * where
E () = Bool
E Int = String
 Defined at T4175.hs:20:13
data () = ()  Defined in ‛GHC.Tuple’
instance C ()  Defined at T4175.hs:17:10
instance Bounded ()  Defined in ‛GHC.Enum’
instance Enum ()  Defined in ‛GHC.Enum’
instance Eq ()  Defined in ‛GHC.Classes’
instance Ord ()  Defined in ‛GHC.Classes’
instance Read ()  Defined in ‛GHC.Read’
instance Show ()  Defined in ‛GHC.Show’
type D () ()  Defined at T4175.hs:18:5
type D Int ()  Defined at T4175.hs:15:5
data instance B ()  Defined at T4175.hs:9:15
data Maybe a = Nothing  Just a  Defined in ‛Data.Maybe’
instance Eq a => Eq (Maybe a)  Defined in ‛Data.Maybe’
instance Monad Maybe  Defined in ‛Data.Maybe’
instance Functor Maybe  Defined in ‛Data.Maybe’
instance Ord a => Ord (Maybe a)  Defined in ‛Data.Maybe’
instance Read a => Read (Maybe a)  Defined in ‛GHC.Read’
instance Show a => Show (Maybe a)  Defined in ‛GHC.Show’
type instance A (Maybe a) a  Defined at T4175.hs:6:1
data Int = GHC.Types.I# GHC.Prim.Int#  Defined in ‛GHC.Types’
instance C Int  Defined at T4175.hs:14:10
instance Bounded Int  Defined in ‛GHC.Enum’
instance Enum Int  Defined in ‛GHC.Enum’
instance Eq Int  Defined in ‛GHC.Classes’
instance Integral Int  Defined in ‛GHC.Real’
instance Num Int  Defined in ‛GHC.Num’
instance Ord Int  Defined in ‛GHC.Classes’
instance Read Int  Defined in ‛GHC.Read’
instance Real Int  Defined in ‛GHC.Real’
instance Show Int  Defined in ‛GHC.Show’
type D Int ()  Defined at T4175.hs:15:5
type instance A Int Int  Defined at T4175.hs:5:1
testsuite/tests/indexedtypes/should_compile/Overlap1.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap1
where
type
family
F
a
type
instance
where
type
family
F
a
where
F
Int
=
Int
F
a
=
Bool
...
...
testsuite/tests/indexedtypes/should_compile/Overlap12.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap12
where
type
family
And
(
a
::
Bool
)
(
b
::
Bool
)
::
Bool
type
instance
where
type
family
And
(
a
::
Bool
)
(
b
::
Bool
)
::
Bool
where
And
False
x
=
False
And
True
x
=
x
And
x
False
=
False
...
...
@@ 12,5 +11,17 @@ type instance where
data
Proxy
p
=
P
i
::
Proxy
(
And
False
x
)
i
=
(
P
::
Proxy
False
)
\ No newline at end of file
a
::
Proxy
(
And
False
x
)
a
=
(
P
::
Proxy
False
)
b
::
Proxy
x
>
Proxy
(
And
True
x
)
b
x
=
x
c
::
Proxy
(
And
x
False
)
c
=
(
P
::
Proxy
False
)
d
::
Proxy
x
>
Proxy
(
And
x
True
)
d
x
=
x
e
::
Proxy
x
>
Proxy
(
And
x
x
)
e
x
=
x
testsuite/tests/indexedtypes/should_compile/Overlap13.hs
0 → 100644
View file @
c30744cc
{# LANGUAGE TypeFamilies #}
module
Overlap13
where
type
family
F
a
b
where
F
a
a
=
Int
F
a
Int
=
Int
F
a
b
=
b
g
::
a
>
F
a
Int
g
x
=
(
5
::
Int
)
testsuite/tests/indexedtypes/should_compile/Overlap14.hs
0 → 100644
View file @
c30744cc
{# LANGUAGE TypeFamilies #}
module
Overlap14
where
type
family
F
a
b
c
where
F
a
a
a
=
Int
F
Int
b
c
=
Bool
type
family
G
x
foo
::
F
Int
(
G
Bool
)
Bool
foo
=
False
testsuite/tests/indexedtypes/should_compile/Overlap2.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap2
where
type
family
F
a
b
type
instance
where
type
family
F
a
b
where
F
a
a
=
Int
F
a
b
=
Bool
...
...
testsuite/tests/indexedtypes/should_compile/T3017.stderr
View file @
c30744cc
TYPE SIGNATURES
emptyL :: forall a. ListColl a
test2 ::
forall c t t1. (Num t, Num t1, Coll c, Elem c ~ (t, t1)) => c > c
TYPE CONSTRUCTORS
Coll :: * > Constraint
class Coll c
RecFlag NonRecursive
type family Elem c :: *
empty :: c insert :: Elem c > c > c
ListColl :: * > *
data ListColl a
No C type associated
RecFlag NonRecursive, Promotable
= L :: forall a. [a] > ListColl a Stricts: _
FamilyInstance: none
COERCION AXIOMS
axiom Foo.TFCo:R:ElemListColl :: Elem (ListColl a) = a
INSTANCES
instance Coll (ListColl a)  Defined at T3017.hs:12:11
FAMILY INSTANCES
type Elem (ListColl a)  Defined at T3017.hs:13:
9
Dependent modules: []
Dependent packages: [base, ghcprim, integergmp]
TYPE SIGNATURES
emptyL :: forall a. ListColl a
test2 ::
forall c t t1. (Num t, Num t1, Coll c, Elem c ~ (t, t1)) => c > c
TYPE CONSTRUCTORS
Coll :: * > Constraint
class Coll c
RecFlag NonRecursive
type family Elem c :: *
empty :: c insert :: Elem c > c > c
ListColl :: * > *
data ListColl a
No C type associated
RecFlag NonRecursive, Promotable
= L :: forall a. [a] > ListColl a Stricts: _
FamilyInstance: none
COERCION AXIOMS
axiom Foo.TFCo:R:ElemListColl :: Elem (ListColl a) = a
INSTANCES
instance Coll (ListColl a)  Defined at T3017.hs:12:11
FAMILY INSTANCES
type Elem (ListColl a)  Defined at T3017.hs:13:
4
Dependent modules: []
Dependent packages: [base, ghcprim, integergmp]
testsuite/tests/indexedtypes/should_compile/T7585.hs
View file @
c30744cc
...
...
@@ 11,8 +11,7 @@ data SList :: [Bool] > * where
SNil
::
SList
'[
]
SCons
::
SBool
h
>
SList
t
>
SList
(
h
':
t
)
type
family
(
a
::
k
)
:==:
(
b
::
k
)
::
Bool
type
instance
where
type
family
(
a
::
k
)
:==:
(
b
::
k
)
::
Bool
where
'[
]
:==:
'[
]
=
True
(
h1
':
t1
)
:==:
(
h2
':
t2
)
=
True
a
:==:
b
=
False
...
...
testsuite/tests/indexedtypes/should_compile/all.T
View file @
c30744cc
...
...
@@ 200,6 +200,8 @@ test('T7082', normal, compile, [''])
test
('
Overlap1
',
normal
,
compile
,
[''])
test
('
Overlap2
',
normal
,
compile
,
[''])
test
('
Overlap12
',
normal
,
compile
,
[''])
test
('
Overlap13
',
normal
,
compile
,
[''])
test
('
Overlap14
',
normal
,
compile
,
[''])
test
('
T7156
',
normal
,
compile
,
[''])
test
('
T5591a
',
normal
,
compile
,
[''])
test
('
T5591b
',
normal
,
compile
,
[''])
...
...
testsuite/tests/indexedtypes/should_fail/
Overlap8
.hs
→
testsuite/tests/indexedtypes/should_fail/
NoGood
.hs
View file @
c30744cc
{# LANGUAGE TypeFamilies #}
module
Overlap8
where
type
family
F
a
b
type
instance
F
a
Int
=
Int
type
instance
where
F
Int
a
=
Int
F
a
b
=
Bool
type
instance
F
a
a
=
Int
type
instance
F
[
a
]
a
=
Bool
testsuite/tests/indexedtypes/should_fail/
T7560
.stderr
→
testsuite/tests/indexedtypes/should_fail/
NoGood
.stderr
View file @
c30744cc
T7560.hs:8:3
:
NoGood.hs:4:15
:
Conflicting family instance declarations:
F
Int  Defined at T7560.hs:8:3
F
Int  Defined at T7560.hs:12:3
F
a a  Defined at NoGood.hs:4:15
F
[a] a  Defined at NoGood.hs:5:15
testsuite/tests/indexedtypes/should_fail/Overlap10.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap10
where
type
family
F
a
b
type
instance
where
type
family
F
a
b
where
F
a
a
=
Int
F
a
b
=
b
...
...
testsuite/tests/indexedtypes/should_fail/Overlap10.stderr
View file @
c30744cc
Overlap10.hs:1
1
:7:
Overlap10.hs:1
0
:7:
Couldn't match expected type ‛F a Bool’ with actual type ‛Bool’
Relevant bindings include
g :: a > F a Bool (bound at Overlap10.hs:1
1
:1)
x :: a (bound at Overlap10.hs:1
1
:3)
g :: a > F a Bool (bound at Overlap10.hs:1
0
:1)
x :: a (bound at Overlap10.hs:1
0
:3)
In the expression: False
In an equation for ‛g’: g x = False
testsuite/tests/indexedtypes/should_fail/Overlap11.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap11
where
type
family
F
a
b
type
instance
where
type
family
F
a
b
where
F
a
a
=
Int
F
a
b
=
b
...
...
testsuite/tests/indexedtypes/should_fail/Overlap11.stderr
View file @
c30744cc
Overlap11.hs:1
1
:8:
Overlap11.hs:1
0
:8:
Couldn't match expected type ‛F a Int’ with actual type ‛Int’
Relevant bindings include
g :: a > F a Int (bound at Overlap11.hs:1
1
:1)
x :: a (bound at Overlap11.hs:1
1
:3)
g :: a > F a Int (bound at Overlap11.hs:1
0
:1)
x :: a (bound at Overlap11.hs:1
0
:3)
In the expression: (5 :: Int)
In an equation for ‛g’: g x = (5 :: Int)
testsuite/tests/indexedtypes/should_fail/Overlap3.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap3
where
type
family
F
a
b
type
instance
where
type
family
F
a
b
where
F
a
a
=
Int
F
a
b
=
Bool
type
instance
F
Char
Char
=
Int
...
...
testsuite/tests/indexedtypes/should_fail/Overlap3.stderr
View file @
c30744cc
Overlap3.hs:7:3:
Conflicting family instance declarations:
F a a  Defined at Overlap3.hs:7:3
F Char Char  Defined at Overlap3.hs:9:15
Overlap3.hs:8:3:
Conflicting family instance declarations:
F a b  Defined at Overlap3.hs:8:3
F Char Char  Defined at Overlap3.hs:9:15
Overlap3.hs:8:1:
Illegal instance for closed family ‛F’
In the type instance declaration for ‛F’
testsuite/tests/indexedtypes/should_fail/Overlap4.hs
View file @
c30744cc
...
...
@@ 2,15 +2,7 @@
module
Overlap4
where
type
family
F
a
b
type
instance
F
Char
Char
=
Int
type
instance
where
F
a
a
=
Int
F
a
b
=
Bool
type
family
F
a
b
where
F
Int
Int
=
Bool
F
Bool
=
Maybe
g
::
F
Char
Double
g
=
False
h
::
F
Double
Double
h
=

2
testsuite/tests/indexedtypes/should_fail/Overlap4.stderr
View file @
c30744cc
Overlap4.hs:
6:15
:
Conflicting family instance declarations:
F Char Char  Defined at Overlap4.hs:6:15
F a a  Defined at Overlap4.hs:8:3
Overlap4.hs:
7:3
:
Number of parameters must match family declaration; expected 2
In the equations for closed type family ‛F’
In the family declaration for ‛F’
testsuite/tests/indexedtypes/should_fail/Overlap5.hs
View file @
c30744cc
{# LANGUAGE TypeFamilies
, DataKinds, PolyKinds
#}
{# LANGUAGE TypeFamilies #}
module
Overlap5
where
type
family
And
(
a
::
Bool
)
(
b
::
Bool
)
::
Bool
type
instance
where
And
False
x
=
False
And
True
x
=
x
And
x
False
=
False
And
x
True
=
x
And
x
x
=
x
data
Proxy
p
=
P
g
::
Proxy
x
>
Proxy
(
And
x
True
)
g
x
=
x
h
::
Proxy
x
>
Proxy
(
And
x
x
)
h
x
=
x
i
::
Proxy
x
>
Proxy
(
And
False
x
)
i
x
=
(
P
::
Proxy
False
)
\ No newline at end of file
type
family
G
a
type
family
F
a
where
F
Int
=
Bool
G
Int
=
Char
F
a
=
Int
\ No newline at end of file
testsuite/tests/indexedtypes/should_fail/Overlap5.stderr
View file @
c30744cc
Overlap5.hs:16:7:
Couldn't match type ‛x’ with ‛And x 'True’
‛x’ is a rigid type variable bound by
the type signature for
g :: Proxy Bool x > Proxy Bool (And x 'True)
at Overlap5.hs:15:6
Expected type: Proxy Bool (And x 'True)
Actual type: Proxy Bool x
Relevant bindings include
g :: Proxy Bool x > Proxy Bool (And x 'True)
(bound at Overlap5.hs:16:1)
x :: Proxy Bool x (bound at Overlap5.hs:16:3)
In the expression: x
In an equation for ‛g’: g x = x
Overlap5.hs:19:7:
Couldn't match type ‛x’ with ‛And x x’
‛x’ is a rigid type variable bound by
the type signature for h :: Proxy Bool x > Proxy Bool (And x x)
at Overlap5.hs:18:6
Expected type: Proxy Bool (And x x)
Actual type: Proxy Bool x
Relevant bindings include
h :: Proxy Bool x > Proxy Bool (And x x)
(bound at Overlap5.hs:19:1)
x :: Proxy Bool x (bound at Overlap5.hs:19:3)
In the expression: x
In an equation for ‛h’: h x = x
Overlap5.hs:8:3:
Mismatched type names in closed type family declaration.
First name was F; this one is G
In the family declaration for ‛F’
testsuite/tests/indexedtypes/should_fail/Overlap6.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap6
where
type
family
And
(
a
::
Bool
)
(
b
::
Bool
)
::
Bool
type
instance
where
type
family
And
(
a
::
Bool
)
(
b
::
Bool
)
::
Bool
where
And
False
x
=
False
And
True
x
=
False
 this is wrong!
And
x
False
=
False
...
...
testsuite/tests/indexedtypes/should_fail/Overlap6.stderr
View file @
c30744cc
Overlap6.hs:1
6
:7:
Overlap6.hs:1
5
:7:
Couldn't match type ‛x’ with ‛And x 'True’
‛x’ is a rigid type variable bound by
the type signature for
g :: Proxy Bool x > Proxy Bool (And x 'True)
at Overlap6.hs:1
5
:6
at Overlap6.hs:1
4
:6
Expected type: Proxy Bool (And x 'True)
Actual type: Proxy Bool x
Relevant bindings include
g :: Proxy Bool x > Proxy Bool (And x 'True)
(bound at Overlap6.hs:1
6
:1)
x :: Proxy Bool x (bound at Overlap6.hs:1
6
:3)
(bound at Overlap6.hs:1
5
:1)
x :: Proxy Bool x (bound at Overlap6.hs:1
5
:3)
In the expression: x
In an equation for ‛g’: g x = x
testsuite/tests/indexedtypes/should_fail/Overlap7.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap7
where
type
family
F
a
b
type
instance
where
type
family
F
a
b
where
F
Int
a
=
Int
F
a
b
=
Bool
type
instance
F
a
Int
=
Int
...
...
testsuite/tests/indexedtypes/should_fail/Overlap7.stderr
View file @
c30744cc
Overlap7.hs:7:3:
Conflicting family instance declarations:
F Int a  Defined at Overlap7.hs:7:3
F a Int  Defined at Overlap7.hs:9:15
Overlap7.hs:8:3:
Conflicting family instance declarations:
F a b  Defined at Overlap7.hs:8:3
F a Int  Defined at Overlap7.hs:9:15
Overlap7.hs:8:1:
Illegal instance for closed family ‛F’
In the type instance declaration for ‛F’
testsuite/tests/indexedtypes/should_fail/Overlap8.stderr
deleted
100644 → 0
View file @
a26bf928
Overlap8.hs:6:15:
Conflicting family instance declarations:
F a Int  Defined at Overlap8.hs:6:15
F Int a  Defined at Overlap8.hs:8:3
testsuite/tests/indexedtypes/should_fail/Overlap9.hs
View file @
c30744cc
...
...
@@ 2,8 +2,7 @@
module
Overlap9
where
type
family
F
a
type
instance
where
type
family
F
a
where
F
Int
=
Bool
F
a
=
Int
...
...
testsuite/tests/indexedtypes/should_fail/Overlap9.stderr
View file @
c30744cc
Overlap9.hs:1
1
:7:
Overlap9.hs:1
0
:7:
Could not deduce (F a ~ Int)
from the context (Show a)
bound by the type signature for g :: Show a => a > F a
at Overlap9.hs:
10
:623
at Overlap9.hs:
9
:623
Relevant bindings include
g :: a > F a (bound at Overlap9.hs:1
1
:1)
x :: a (bound at Overlap9.hs:1
1
:3)
g :: a > F a (bound at Overlap9.hs:1
0
:1)
x :: a (bound at Overlap9.hs:1
0
:3)
In the expression: length (show x)
In an equation for ‛g’: g x = length (show x)
testsuite/tests/indexedtypes/should_fail/SimpleFail1a.stderr
View file @
c30744cc
SimpleFail1a.hs:4:1:
Number of parameters must match family declaration; expected 2
Couldn't match kind ‛* > *’ against ‛*’
In the data instance declaration for ‛T1’
testsuite/tests/indexedtypes/should_fail/SimpleFail1b.stderr
View file @
c30744cc
SimpleFail1b.hs:4:1:
Number of parameters must match family declaration; expected 2
Number of parameters must match family declaration; expected
no more than
2
In the data instance declaration for ‛T1’
testsuite/tests/indexedtypes/should_fail/T5515.stderr
View file @
c30744cc
T5515.hs:9:
8
:
T5515.hs:9:
3
:
The RHS of an associated type declaration mentions type variable ‛a’
All such variables must be bound on the LHS
T5515.hs:15:
8
:
T5515.hs:15:
3
:
The RHS of an associated type declaration mentions type variable ‛a’
All such variables must be bound on the LHS
testsuite/tests/indexedtypes/should_fail/T7560.hs
deleted
100644 → 0
View file @
a26bf928
{# LANGUAGE TypeFamilies #}
module
T7560
where
type
family
F
a
type
instance
where
F
Int
=
Int
F
Bool
=
Bool
type
instance
where
F
Int
=
Char
F
Double
=
Double
\ No newline at end of file
testsuite/tests/indexedtypes/should_fail/T7786.hs
View file @
c30744cc
...
...
@@ 50,8 +50,7 @@ buryUnder (ps `Snoc` p) post acc = (ps `buryUnder` post) acc `Snoc` (p `under` p
type
key
`
KeyNotIn
`
inv
=
Intersect
(
More
Empty
key
)
inv
~
Empty
type
(
lhs
`
UnderDisjoint
`
post
)
rhs
=
Intersect
((
lhs
`
BuriedUnder
`
post
)
Empty
)
rhs
~
Empty
type
family
Intersect
(
l
::
Inventory
a
)
(
r
::
Inventory
a
)
::
Inventory
a
type
instance
where
type
family
Intersect
(
l
::
Inventory
a
)
(
r
::
Inventory
a
)
::
Inventory
a
where
Intersect
Empty
r
=
Empty
Intersect
l
Empty
=
Empty
Intersect
(
More
ls
l
)
r
=
InterAppend
(
Intersect
ls
r
)
r
l
...
...
@@ 59,8 +58,7 @@ type instance where
type
family
InterAppend
(
l
::
Inventory
a
)
(
r
::
Inventory
a
)
(
one
::
a
)
::
Inventory
a
type
instance
where
::
Inventory
a
where
InterAppend
acc
Empty
one
=
acc
InterAppend
acc
(
More
rs
one
)
one
=
More
acc
one
InterAppend
acc
(
More
rs
r
)
one
=
InterAppend
acc
rs
one
...
...
@@ 68,8 +66,7 @@ type instance where
type
family
BuriedUnder
(
sub
::
Inventory
[
KeySegment
])
(
post
::
[
KeySegment
])
(
inv
::
Inventory
[
KeySegment
])
::
Inventory
[
KeySegment
]
type
instance
where
::
Inventory
[
KeySegment
]
where
BuriedUnder
Empty
post
inv
=
inv
BuriedUnder
(
More
ps
p
)
post
inv
=
More
((
ps
`
BuriedUnder
`
post
)
inv
)
(
p
`
Under
`
post
)
...
...
testsuite/tests/indexedtypes/should_fail/T7786.stderr
View file @
c30744cc
T7786.hs:8
9
:22:
T7786.hs:8
6
:22:
Couldn't match type ‛xxx’ with ‛'Empty [KeySegment]’
Inaccessible code in
a pattern with constructor
...
...
testsuite/tests/indexedtypes/should_fail/all.T
View file @
c30744cc
...
...
@@ 82,7 +82,6 @@ test('Overlap4', normal, compile_fail, [''])
test
('
Overlap5
',
normal
,
compile_fail
,
[''])
test
('
Overlap6
',
normal
,
compile_fail
,
[''])
test
('
Overlap7
',
normal
,
compile_fail
,
[''])
test
('
Overlap8
',
normal
,
compile_fail
,
[''])
test
('
Overlap9
',
normal
,
compile_fail
,
[''])
test
('
Overlap10
',
normal
,
compile_fail
,
[''])
test
('
Overlap11
',
normal
,
compile_fail
,
[''])
...
...
@@ 94,8 +93,10 @@ test('T7354a',
['
$MAKE s noprintdirectory T7354a
'])
test
('
T7536
',
normal
,
compile_fail
,
[''])
test
('
T7560
',
normal
,
compile_fail
,
[''])
test
('
T7729
',
normal
,
compile_fail
,
[''])
test
('
T7729a
',
normal
,
compile_fail
,
[''])
test
('
T7786
',
normal
,
compile_fail
,
[''])
test
('
NoGood
',
normal
,
compile_fail
,
[''])
test
('
T7967
',
normal
,
compile_fail
,
[''])
testsuite/tests/th/ClosedFam1.hs
0 → 100644
View file @
c30744cc
{# LANGUAGE TemplateHaskell, TypeFamilies, PolyKinds, DataKinds #}
module
ClosedFam1
where
import
Language.Haskell.TH
$
(
do
{
decl
<
[
d

type family Foo a (b :: k) where
Foo Int Bool = Int
Foo a Maybe = Bool
Foo b (x :: Bool) = Char
]
;
reportWarning
(
pprint
decl
)
;
return
[]
})
testsuite/tests/th/ClosedFam1.stderr
0 → 100644
View file @
c30744cc
ClosedFam1.hs:7:3: Warning:
type family Foo_0 a_1 (b_2 :: k_3) where
Foo_0 GHC.Types.Int GHC.Types.Bool = GHC.Types.Int
Foo_0 a_4 Data.Maybe.Maybe = GHC.Types.Bool
Foo_0 b_5 (x_6 :: GHC.Types.Bool) = GHC.Types.Char
testsuite/tests/th/ClosedFam2.hs
0 → 100644
View file @
c30744cc
{# LANGUAGE TemplateHaskell, TypeFamilies, PolyKinds #}
module
ClosedFam2
where
import
Language.Haskell.TH
$
(
return
[
ClosedTypeFamilyD
(
mkName
"Equals"
)
[
KindedTV
(
mkName
"a"
)
(
VarT
(
mkName
"k"
))
,
KindedTV
(
mkName
"b"
)
(
VarT
(
mkName
"k"
))
]
Nothing
[
TySynEqn
[
(
VarT
(
mkName
"a"
))
,
(
VarT
(
mkName
"a"
))
]
(
ConT
(
mkName
"Int"
))
,
TySynEqn
[
(
VarT
(
mkName
"a"
))
,
(
VarT
(
mkName
"b"
))
]
(
ConT
(
mkName
"Bool"
))
]
])
a
::
Equals
b
b
a
=
(
5
::
Int
)
b
::
Equals
Int
Bool
b
=
False
testsuite/tests/th/T5886a.hs
View file @
c30744cc
...
...
@@ 11,4 +11,4 @@ class C α where
bang
∷
DecsQ
bang
=
return
[
InstanceD
[]
(
AppT
(
ConT
''
C
)
(
ConT
''
I
nt
))
[
TySynInstD
''
A
T
[
TySynEqn
[
ConT
''
I
nt
]
(
ConT
''
I
nt
)]
]]
[
TySynInstD
''
A
T
(
TySynEqn
[
ConT
''
I
nt
]
(
ConT
''
I
nt
))
]]
testsuite/tests/th/TH_TyInstWhere1.hs
View file @
c30744cc
...
...
@@ 2,9 +2,7 @@
module
TH_TyInstWhere1
where
type
family
F
(
a
::
k
)
(
b
::
k
)
::
Bool
$
(
[
d

type instance where
$
(
[
d

type family F (a :: k) (b :: k) :: Bool where
F a a = True
F a b = False
]
)
...
...
testsuite/tests/th/TH_TyInstWhere1.stderr
View file @
c30744cc
TH_TyInstWhere1.hs:1:1: Splicing declarations
[d type
instance
where
[d type
family F (a :: k) (b :: k) :: Bool
where
F a a = True
F a b = False ]
======>