Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
df8ed7e1
Commit
df8ed7e1
authored
Sep 17, 2010
by
Simon Peyton Jones
Browse files
Add tests for T3330
parent
96833f55
Changes
7
Hide whitespace changes
Inline
Sidebyside
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330a.hs
0 → 100644
View file @
df8ed7e1
{# LANGUAGE FlexibleContexts #}
{# LANGUAGE RankNTypes #}
{# LANGUAGE TypeFamilies #}
 A very bogus program (multiple errors) but
 sent GHC 6.12 into a loop
module
T3330a
where
import
Control.Monad.Writer
data
AnyF
(
s
::
*
>
*
)
=
AnyF
class
HFunctor
(
f
::
(
*
>
*
)
>
*
>
*
)
type
family
PF
(
phi
::
*
>
*
)
::
(
*
>
*
)
>
*
>
*
children
::
s
ix
>
(
PF
s
)
r
ix
>
[
AnyF
s
]
children
p
x
=
execWriter
(
hmapM
p
collect
x
)
collect
::
HFunctor
(
PF
s
)
=>
s
ix
>
r
ix
>
Writer
[
AnyF
s
]
(
r
ix
)
collect
=
undefined
hmapM
::
(
forall
ix
.
phi
ix
>
r
ix
>
m
(
r'
ix
))
>
phi
ix
>
f
r
ix
>
m
(
f
r'
ix
)
hmapM
=
undefined
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330a.stderr
0 → 100644
View file @
df8ed7e1
T3330a.hs:17:28:
Couldn't match type `ix' with `ix2'
because this skolem type variable would escape: `ix2'
This skolem is bound by
the polymorphic type `forall ix. phi ix > r ix > m (r' ix)'
In the first argument of `hmapM', namely `p'
In the first argument of `execWriter', namely `(hmapM p collect x)'
In the expression: execWriter (hmapM p collect x)
T3330a.hs:17:34:
Couldn't match type `s' with `(>) (s1 ix1 > ix)'
`s' is a rigid type variable bound by
the type signature for `children' at T3330a.hs:16:13
Expected type: (s1 ix1 > ix) > r ix > Writer [AnyF s] (r' ix)
Actual type: s ix2
In the first argument of `hmapM', namely `p'
In the first argument of `execWriter', namely `(hmapM p collect x)'
T3330a.hs:17:36:
No instance for (HFunctor (PF s))
arising from a use of `collect'
Possible fix: add an instance declaration for (HFunctor (PF s))
In the second argument of `hmapM', namely `collect'
In the first argument of `execWriter', namely `(hmapM p collect x)'
In the expression: execWriter (hmapM p collect x)
T3330a.hs:17:44:
Couldn't match type `ix1' with `r ix > Writer [AnyF s1] (r ix)'
`ix1' is a rigid type variable bound by
the type signature for `children' at T3330a.hs:16:15
In the third argument of `hmapM', namely `x'
In the first argument of `execWriter', namely `(hmapM p collect x)'
In the expression: execWriter (hmapM p collect x)
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330b.hs
0 → 100644
View file @
df8ed7e1
{# LANGUAGE TypeFamilies #}
{# LANGUAGE MultiParamTypeClasses #}
{# LANGUAGE FlexibleInstances #}
 Bizarrely this made 6.10 loop
module
T3330b
where
class
RFunctor
c
a
b
where
type
Res
c
a
b
::
*
rmap
::
(
a
>
b
)
>
c
>
Res
c
a
b
instance
(
a
~
c
)
=>
RFunctor
c
a
b
where
type
Res
c
a
b
=
b
rmap
f
=
f
instance
(
RFunctor
c
a
b
,
a
~
c
)
=>
RFunctor
[
c
]
a
b
where
type
Res
[
c
]
a
b
=
[
b
]
rmap
f
=
map
(
map
f
)
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330b.stderr
0 → 100644
View file @
df8ed7e1
T3330b.hs:14:10:
Conflicting family instance declarations:
type Res c a b  Defined at T3330b.hs:14:1012
type Res [c] a b  Defined at T3330b.hs:18:1012
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330c.hs
0 → 100644
View file @
df8ed7e1
{# LANGUAGE EmptyDataDecls, TypeFamilies, TypeOperators, GADTs, KindSignatures #}
module
T3330c
where
data
(
f
:+:
g
)
x
=
Inl
(
f
x
)

Inr
(
g
x
)
data
R
::
(
*
>
*
)
>
*
where
RSum
::
R
f
>
R
g
>
R
(
f
:+:
g
)
class
Rep
f
where
rep
::
R
f
instance
(
Rep
f
,
Rep
g
)
=>
Rep
(
f
:+:
g
)
where
rep
=
RSum
rep
rep
type
family
Der
(
f
::
*
>
*
)
::
*
>
*
type
instance
Der
(
f
:+:
g
)
=
Der
f
:+:
Der
g
plug
::
Rep
f
=>
Der
f
x
>
x
>
f
x
plug
=
plug'
rep
where
plug'
::
R
f
>
Der
f
x
>
x
>
f
x
plug'
(
RSum
rf
rg
)
(
Inl
df
)
x
=
Inl
(
plug
rf
df
x
)
testsuite/tests/ghcregress/indexedtypes/should_fail/T3330c.stderr
0 → 100644
View file @
df8ed7e1
T3330c.hs:22:35:
Couldn't match type `f3' with `Der f3'
`f3' is a rigid type variable bound by
a pattern with constructor
RSum :: forall (f :: * > *) (g :: * > *).
R f > R g > R (f :+: g)
at T3330c.hs:22:10
In the expression: Inl (plug rf df x)
In an equation for `plug'':
plug' (RSum rf rg) (Inl df) x = Inl (plug rf df x)
In an equation for `plug':
plug
= plug' rep
where
plug' :: R f > Der f x > x > f x
plug' (RSum rf rg) (Inl df) x = Inl (plug rf df x)
T3330c.hs:22:40:
Could not deduce (Rep ((>) x1))
from the context (Rep f1, f2 ~ (f3 :+: g))
arising from a use of `plug'
Possible fix:
add (Rep ((>) x1)) to the context of
the data constructor `RSum'
or the type signature for `plug''
or the type signature for `plug'
or add an instance declaration for (Rep ((>) x1))
In the first argument of `Inl', namely `(plug rf df x)'
In the expression: Inl (plug rf df x)
In an equation for `plug'':
plug' (RSum rf rg) (Inl df) x = Inl (plug rf df x)
T3330c.hs:22:45:
Couldn't match type `Der ((>) x)' with `R'
Expected type: Der ((>) x) (f x)
Actual type: R f1
In the first argument of `plug', namely `rf'
In the first argument of `Inl', namely `(plug rf df x)'
T3330c.hs:22:45:
Couldn't match type `f' with `f1 x'
`f' is a rigid type variable bound by
a pattern with constructor
RSum :: forall (f :: * > *) (g :: * > *).
R f > R g > R (f :+: g)
at T3330c.hs:22:10
Expected type: Der ((>) x) (f1 x)
Actual type: R f
In the first argument of `plug', namely `rf'
In the first argument of `Inl', namely `(plug rf df x)'
testsuite/tests/ghcregress/indexedtypes/should_fail/all.T
View file @
df8ed7e1
...
...
@@ 56,3 +56,7 @@ test('T4272', normal, compile_fail, [''])
test
('
T4246
',
normal
,
compile_fail
,
[''])
test
('
T4093a
',
normal
,
compile_fail
,
[''])
test
('
T4093b
',
normal
,
compile_fail
,
[''])
test
('
T3330a
',
normal
,
compile_fail
,
[''])
test
('
T3330b
',
normal
,
compile_fail
,
[''])
test
('
T3330c
',
normal
,
compile_fail
,
[''])
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment