Skip to content
Snippets Groups Projects
Commit d99fcc16 authored by Richard Eisenberg's avatar Richard Eisenberg Committed by Austin Seipp
Browse files

Test #6147, which was fixed with the roles commit.

(cherry picked from commit 9e0c1ae5)
parent c0329679
No related branches found
No related tags found
No related merge requests found
{-# LANGUAGE GeneralizedNewtypeDeriving, TypeFamilies #-}
module T6147 where
data family T a
data instance T Int = T_Int Int
class C a where
foo :: a -> T a
instance C Int where
foo = T_Int
newtype Foo = Foo Int deriving(C)
T6147.hs:13:32:
Could not coerce from ‛T Int’ to ‛T Foo’
because the first type argument of ‛T’ has role Nominal,
but the arguments ‛Int’ and ‛Foo’ differ
arising from the coercion of the method ‛foo’ from type
‛Int -> T Int’ to type ‛Foo -> T Foo’
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (C Foo)
......@@ -48,3 +48,4 @@ test('T7148', normal, compile_fail, [''])
test('T7148a', normal, compile_fail, [''])
test('T7800', normal, multimod_compile_fail, ['T7800',''])
test('T5498', normal, compile_fail, [''])
test('T6147', normal, compile_fail, [''])
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment