summaryrefslogtreecommitdiff
path: root/testsuite/tests/overloadedlists
diff options
context:
space:
mode:
authorRichard Eisenberg <eir@cis.upenn.edu>2016-01-13 23:29:17 -0500
committerRichard Eisenberg <eir@cis.upenn.edu>2016-01-27 09:33:26 -0500
commit00cbbab3362578df44851442408a8b91a2a769fa (patch)
treec8f79d003510e191adeab0d1b98f20ebde40d914 /testsuite/tests/overloadedlists
parent2899aa580d633103fc551e36c977720b94f5b41c (diff)
downloadhaskell-00cbbab3362578df44851442408a8b91a2a769fa.tar.gz
Refactor the typechecker to use ExpTypes.
The idea here is described in [wiki:Typechecker]. Briefly, this refactor keeps solid track of "synthesis" mode vs "checking" in GHC's bidirectional type-checking algorithm. When in synthesis mode, the expected type is just an IORef to write to. In addition, this patch does a significant reworking of RebindableSyntax, allowing much more freedom in the types of the rebindable operators. For example, we can now have `negate :: Int -> Bool` and `(>>=) :: m a -> (forall x. a x -> m b) -> m b`. The magic is in tcSyntaxOp. This addresses tickets #11397, #11452, and #11458. Tests: typecheck/should_compile/{RebindHR,RebindNegate,T11397,T11458} th/T11452
Diffstat (limited to 'testsuite/tests/overloadedlists')
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.hs2
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr13
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.hs2
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr15
4 files changed, 19 insertions, 13 deletions
diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.hs b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.hs
index d1981846df..25d859d2a8 100644
--- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.hs
+++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.hs
@@ -1,3 +1,3 @@
{-# LANGUAGE OverloadedLists #-}
-main = print (length ['a',"b"])
+main = print (length (['a',"b"] :: [Char]))
diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr
index 9c2e41640e..4d55087e18 100644
--- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr
+++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr
@@ -1,6 +1,9 @@
-overloadedlistsfail03.hs:3:27:
- Couldn't match expected type ‘Char’ with actual type ‘[Char]’
- In the expression: "b"
- In the first argument of ‘length’, namely ‘['a', "b"]’
- In the first argument of ‘print’, namely ‘(length ['a', "b"])’
+overloadedlistsfail03.hs:3:28: error:
+ • Couldn't match type ‘[Char]’ with ‘Char’
+ Expected type: GHC.Exts.Item [Char]
+ Actual type: [Char]
+ • In the expression: "b"
+ In the first argument of ‘length’, namely ‘(['a', "b"] :: [Char])’
+ In the first argument of ‘print’, namely
+ ‘(length (['a', "b"] :: [Char]))’
diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.hs b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.hs
index 3601c6e2f1..7059b4b5aa 100644
--- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.hs
+++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.hs
@@ -1,3 +1,3 @@
{-# LANGUAGE OverloadedLists #-}
-main = print (length ['a'..(10 :: Int)])
+main = print (length (['a'..(10 :: Int)] :: [Int]))
diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr
index c576b5868c..edd0c7fcef 100644
--- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr
+++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr
@@ -1,7 +1,10 @@
-overloadedlistsfail05.hs:3:29:
- Couldn't match expected type ‘Char’ with actual type ‘Int’
- In the expression: (10 :: Int)
- In the first argument of ‘length’, namely ‘['a' .. (10 :: Int)]’
- In the first argument of ‘print’, namely
- ‘(length ['a' .. (10 :: Int)])’
+overloadedlistsfail05.hs:3:24: error:
+ • Couldn't match type ‘Char’ with ‘Int’
+ Expected type: GHC.Exts.Item [Int]
+ Actual type: Char
+ • In the expression: 'a'
+ In the first argument of ‘length’, namely
+ ‘(['a' .. (10 :: Int)] :: [Int])’
+ In the first argument of ‘print’, namely
+ ‘(length (['a' .. (10 :: Int)] :: [Int]))’