diff options
author | Richard Eisenberg <eir@cis.upenn.edu> | 2016-01-13 23:29:17 -0500 |
---|---|---|
committer | Richard Eisenberg <eir@cis.upenn.edu> | 2016-01-27 09:33:26 -0500 |
commit | 00cbbab3362578df44851442408a8b91a2a769fa (patch) | |
tree | c8f79d003510e191adeab0d1b98f20ebde40d914 /testsuite/tests/overloadedlists | |
parent | 2899aa580d633103fc551e36c977720b94f5b41c (diff) | |
download | haskell-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')
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]))’ |