Skip to content

Commit

Permalink
Modified error output and new tests for PolyKinds commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Peyton Jones committed Mar 2, 2012
1 parent 79f2474 commit c91330d
Show file tree
Hide file tree
Showing 75 changed files with 791 additions and 206 deletions.
4 changes: 2 additions & 2 deletions tests/arrows/should_fail/T5380.stderr
Expand Up @@ -4,7 +4,7 @@ T5380.hs:7:27:
`not_bool' is a rigid type variable bound by
the type signature for
testB :: not_bool -> (() -> ()) -> () -> not_unit
at T5380.hs:7:1
at T5380.hs:6:10
In the expression: b
In the expression: proc () -> if b then f -< () else f -< ()
In an equation for `testB':
Expand All @@ -15,7 +15,7 @@ T5380.hs:7:34:
`not_unit' is a rigid type variable bound by
the type signature for
testB :: not_bool -> (() -> ()) -> () -> not_unit
at T5380.hs:7:1
at T5380.hs:6:42
Expected type: () -> not_unit
Actual type: () -> ()
In the expression: f
Expand Down
4 changes: 2 additions & 2 deletions tests/gadt/rw.stderr
Expand Up @@ -3,7 +3,7 @@ rw.hs:14:47:
Couldn't match expected type `a' with actual type `Int'
`a' is a rigid type variable bound by
the type signature for writeInt :: T a -> IORef a -> IO ()
at rw.hs:13:1
at rw.hs:12:14
In the second argument of `writeIORef', namely `(1 :: Int)'
In the expression: writeIORef ref (1 :: Int)
In a case alternative: ~(Li x) -> writeIORef ref (1 :: Int)
Expand All @@ -12,7 +12,7 @@ rw.hs:19:51:
Couldn't match type `a' with `Bool'
`a' is a rigid type variable bound by
the type signature for readBool :: T a -> IORef a -> IO ()
at rw.hs:17:1
at rw.hs:16:14
Expected type: a -> Bool
Actual type: Bool -> Bool
In the second argument of `(.)', namely `not'
Expand Down
2 changes: 1 addition & 1 deletion tests/ghci/scripts/Defer02.stderr
Expand Up @@ -37,7 +37,7 @@
Couldn't match expected type `a' with actual type `Char'
`a' is a rigid type variable bound by
the type signature for h :: a -> (Char, Char)
at ../../typecheck/should_run/Defer01.hs:34:1
at ../../typecheck/should_run/Defer01.hs:33:6
In the expression: x
In the expression: (x, 'c')
In an equation for `h': h x = (x, 'c')
Expand Down
2 changes: 1 addition & 1 deletion tests/ghci/scripts/Defer02.stdout
Expand Up @@ -36,7 +36,7 @@ Hello World*** Exception: ../../typecheck/should_run/Defer01.hs:11:40:
Couldn't match expected type `a' with actual type `Char'
`a' is a rigid type variable bound by
the type signature for h :: a -> (Char, Char)
at ../../typecheck/should_run/Defer01.hs:34:1
at ../../typecheck/should_run/Defer01.hs:33:6
In the expression: x
In the expression: (x, 'c')
In an equation for `h': h x = (x, 'c')
Expand Down
2 changes: 1 addition & 1 deletion tests/indexed-types/should_compile/Simple14.stderr
Expand Up @@ -7,7 +7,7 @@ Simple14.hs:17:12:
Maybe m ~ Maybe n => EQ_ z0 z0
`n' is a rigid type variable bound by
the type signature for foo :: EQ_ (Maybe m) (Maybe n)
at Simple14.hs:17:1
at Simple14.hs:16:17
Expected type: EQ_ z0 z0
Actual type: EQ_ m n
In the second argument of `eqE', namely `(eqI :: EQ_ m n)'
Expand Down
4 changes: 2 additions & 2 deletions tests/indexed-types/should_compile/T3208b.stderr
Expand Up @@ -4,7 +4,7 @@ T3208b.hs:15:10:
from the context (OTerm a ~ STerm a, OBJECT a, SUBST a)
bound by the type signature for
fce' :: (OTerm a ~ STerm a, OBJECT a, SUBST a) => a -> c
at T3208b.hs:15:1-22
at T3208b.hs:14:9-56
NB: `STerm' is a type function, and may not be injective
The type variable `a0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Expand All @@ -18,7 +18,7 @@ T3208b.hs:15:15:
from the context (OTerm a ~ STerm a, OBJECT a, SUBST a)
bound by the type signature for
fce' :: (OTerm a ~ STerm a, OBJECT a, SUBST a) => a -> c
at T3208b.hs:15:1-22
at T3208b.hs:14:9-56
The type variable `a0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
In the first argument of `fce', namely `(apply f)'
Expand Down
2 changes: 1 addition & 1 deletion tests/indexed-types/should_compile/all.T
Expand Up @@ -21,7 +21,7 @@ test('Simple16', normal, compile, [''])
test('Simple17', normal, compile, [''])
test('Simple18', normal, compile, [''])
test('Simple19', normal, compile, [''])
test('Simple20', expect_broken(4296), compile, ['-fcontext-stack=50'])
test('Simple20', expect_broken(4296), compile, ['-fcontext-stack=10'])
test('Simple21', normal, compile, [''])
test('Simple22', normal, compile, [''])
test('Simple23', normal, compile, [''])
Expand Down
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/GADTwrong1.stderr
Expand Up @@ -7,7 +7,7 @@ GADTwrong1.hs:12:19:
in a case alternative
at GADTwrong1.hs:12:12-14
`b' is a rigid type variable bound by
the type signature for coerce :: a -> b at GADTwrong1.hs:11:1
the type signature for coerce :: a -> b at GADTwrong1.hs:10:20
`a1' is a rigid type variable bound by
a pattern with constructor
T :: forall a. a -> T (Const a),
Expand Down
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/NoMatchErr.stderr
Expand Up @@ -3,7 +3,7 @@ NoMatchErr.hs:20:5:
Could not deduce (Memo d ~ Memo d0)
from the context (Fun d)
bound by the type signature for f :: Fun d => Memo d a -> Memo d a
at NoMatchErr.hs:20:1-15
at NoMatchErr.hs:19:7-37
NB: `Memo' is a type function, and may not be injective
The type variable `d0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Expand Down
12 changes: 6 additions & 6 deletions tests/indexed-types/should_fail/SimpleFail15.stderr
@@ -1,6 +1,6 @@
SimpleFail15.hs:5:1:
Illegal polymorphic or qualified type: a ~ b => t
Perhaps you intended to use -XRankNTypes or -XRank2Types
In the type signature for `foo':
foo :: (a, b) -> (a ~ b => t) -> (a, b)

SimpleFail15.hs:5:8:
Illegal polymorphic or qualified type: a ~ b => t
Perhaps you intended to use -XRankNTypes or -XRank2Types
In the type signature for `foo':
foo :: (a, b) -> (a ~ b => t) -> (a, b)
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/SimpleFail5a.stderr
Expand Up @@ -3,7 +3,7 @@ SimpleFail5a.hs:31:11:
Couldn't match type `a' with `Int'
`a' is a rigid type variable bound by
the type signature for bar3wrong :: S3 a -> a
at SimpleFail5a.hs:31:1
at SimpleFail5a.hs:30:17
Expected type: S3 a
Actual type: S3 Int
In the pattern: D3Int
Expand Down
5 changes: 4 additions & 1 deletion tests/indexed-types/should_fail/SimpleFail6.stderr
@@ -1,2 +1,5 @@

SimpleFail6.hs:7:11: Illegal repeated type variable `a'
SimpleFail6.hs:7:11:
Conflicting definitions for `a'
Bound at: SimpleFail6.hs:7:11
SimpleFail6.hs:7:13
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/SkolemOccursLoop.hs
@@ -1,4 +1,4 @@
{-# OPTIONS_GHC -fcontext-stack=10 #-}
{-# OPTIONS_GHC -fcontext-stack=3 #-}
{-# LANGUAGE TypeFamilies, FlexibleContexts, EmptyDataDecls #-}

module SkolemOccursLoop where
Expand Down
11 changes: 1 addition & 10 deletions tests/indexed-types/should_fail/SkolemOccursLoop.stderr
@@ -1,10 +1 @@

SkolemOccursLoop.hs:18:0:
Couldn't match expected type `F a'
against inferred type `[T (F (T (F a)))]'
When generalising the type(s) for `test1'

SkolemOccursLoop.hs:31:0:
Couldn't match expected type `S (G (a, a))'
against inferred type `G [S (G (a, a))]'
When generalising the type(s) for `test2'
Skolem occurs loop
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/T1900.stderr
Expand Up @@ -11,7 +11,7 @@ T1900.hs:14:22:
Could not deduce (Depend s0 ~ Depend s)
from the context (Bug s)
bound by the type signature for check :: Bug s => Depend s -> Bool
at T1900.hs:14:1-22
at T1900.hs:13:10-36
NB: `Depend' is a type function, and may not be injective
The type variable `s0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Expand Down
44 changes: 22 additions & 22 deletions tests/indexed-types/should_fail/T3330a.stderr
@@ -1,22 +1,22 @@
T3330a.hs:19:34:
Couldn't match type `s' with `(->) (s0 ix1 -> ix1)'
`s' is a rigid type variable bound by
the type signature for children :: s ix -> PF s r ix -> [AnyF s]
at T3330a.hs:19:1
Expected type: (s0 ix0 -> ix1) -> r ix1 -> Writer [AnyF s] (r ix1)
Actual type: s 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:19:36:
Couldn't match type `ix' with `r ix0 -> Writer [AnyF s0] (r ix0)'
`ix' is a rigid type variable bound by
the type signature for children :: s ix -> PF s r ix -> [AnyF s]
at T3330a.hs:19:1
Expected type: s0 ix0 -> ix
Actual type: s0 ix0 -> r ix0 -> Writer [AnyF s0] (r ix0)
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:19:34:
Couldn't match type `s' with `(->) (s0 ix1 -> ix1)'
`s' is a rigid type variable bound by
the type signature for children :: s ix -> PF s r ix -> [AnyF s]
at T3330a.hs:18:13
Expected type: (s0 ix0 -> ix1) -> r ix1 -> Writer [AnyF s] (r ix1)
Actual type: s 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:19:36:
Couldn't match type `ix' with `r ix0 -> Writer [AnyF s0] (r ix0)'
`ix' is a rigid type variable bound by
the type signature for children :: s ix -> PF s r ix -> [AnyF s]
at T3330a.hs:18:15
Expected type: s0 ix0 -> ix
Actual type: s0 ix0 -> r ix0 -> Writer [AnyF s0] (r ix0)
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)
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/T3440.stderr
Expand Up @@ -8,7 +8,7 @@ T3440.hs:11:22:
at T3440.hs:11:9-16
`a' is a rigid type variable bound by
the type signature for unwrap :: GADT (Fam a) -> (a, Fam a)
at T3440.hs:11:1
at T3440.hs:10:21
`a1' is a rigid type variable bound by
a pattern with constructor
GADT :: forall a. a -> Fam a -> GADT (Fam a),
Expand Down
4 changes: 2 additions & 2 deletions tests/indexed-types/should_fail/T4093a.stderr
Expand Up @@ -3,10 +3,10 @@ T4093a.hs:8:8:
Could not deduce (e ~ ())
from the context (Foo e ~ Maybe e)
bound by the type signature for hang :: Foo e ~ Maybe e => Foo e
at T4093a.hs:8:1-14
at T4093a.hs:7:9-34
`e' is a rigid type variable bound by
the type signature for hang :: Foo e ~ Maybe e => Foo e
at T4093a.hs:8:1
at T4093a.hs:7:14
Expected type: Foo e
Actual type: Maybe ()
In the return type of a call of `Just'
Expand Down
4 changes: 2 additions & 2 deletions tests/indexed-types/should_fail/T4093b.stderr
Expand Up @@ -7,13 +7,13 @@ T4093b.hs:31:13:
blockToNodeList :: (EitherCO e (A C O n) (A O O n) ~ A e O n,
EitherCO x (A C C n) (A C O n) ~ A C x n) =>
Block n e x -> A e x n
at T4093b.hs:(25,1)-(34,19)
at T4093b.hs:(20,3)-(22,26)
`e' is a rigid type variable bound by
the type signature for
blockToNodeList :: (EitherCO e (A C O n) (A O O n) ~ A e O n,
EitherCO x (A C C n) (A C O n) ~ A C x n) =>
Block n e x -> A e x n
at T4093b.hs:25:1
at T4093b.hs:20:12
Expected type: EitherCO e (A C O n) (A O O n)
Actual type: (MaybeC C (n C O), MaybeC O (n O C))
In the expression: (JustC n, NothingC)
Expand Down
2 changes: 1 addition & 1 deletion tests/indexed-types/should_fail/T4179.stderr
Expand Up @@ -6,7 +6,7 @@ T4179.hs:26:16:
bound by the type signature for
fCon :: (Functor x, DoC (FCon x)) =>
Con x -> A2 (FCon x) -> A3 (FCon x)
at T4179.hs:26:1-17
at T4179.hs:25:9-72
NB: `A3' is a type function, and may not be injective
Expected type: x (A2 (x (Con x)) -> A3 (x (Con x)))
-> A2 (x (Con x)) -> A3 (x (Con x))
Expand Down
4 changes: 2 additions & 2 deletions tests/indexed-types/should_fail/T4272.stderr
Expand Up @@ -27,10 +27,10 @@ T4272.hs:11:19:
from the context (TermLike a)
bound by the type signature for
laws :: TermLike a => TermFamily a a -> b
at T4272.hs:11:1-54
at T4272.hs:10:9-53
`a' is a rigid type variable bound by
the type signature for laws :: TermLike a => TermFamily a a -> b
at T4272.hs:11:1
at T4272.hs:10:16
In the return type of a call of `terms'
In the second argument of `prune', namely
`(terms (undefined :: TermFamily a a))'
Expand Down
12 changes: 6 additions & 6 deletions tests/module/mod45.stderr
@@ -1,6 +1,6 @@
mod45.hs:5:3:
Illegal type signature in instance declaration:
(==) :: T -> T -> Bool
(Use -XInstanceSigs to allow this)
In the instance declaration for `Eq T'

mod45.hs:5:11:
Illegal type signature in instance declaration:
(==) :: T -> T -> Bool
(Use -XInstanceSigs to allow this)
In the instance declaration for `Eq T'
5 changes: 3 additions & 2 deletions tests/parser/should_fail/readFail036.stderr
@@ -1,4 +1,5 @@

readFail036.hs:4:1:
Illegal kind signature for `a'
readFail036.hs:4:16:
Illegal kind signature: `*'
Perhaps you intended to use -XKindSignatures
In the data type declaration for `Foo'
2 changes: 1 addition & 1 deletion tests/perf/compiler/all.T
Expand Up @@ -24,7 +24,7 @@ test('T1969',
# 5717704 (x86/Windows 17/05/10)
# 6149572 (x86/Linux, 31/12/09)
if_wordsize(64,
compiler_stats_range_field('max_bytes_used', 11178376, 10)),
compiler_stats_range_field('max_bytes_used', 12000000, 10)),
# expected value: 11178376 (amd64/Linux)
if_wordsize(32,
compiler_stats_num_field('bytes allocated', 210000000,
Expand Down

0 comments on commit c91330d

Please sign in to comment.