Pattern synonym causes Iface error.
|Reported by:||mpickering||Owned by:|
|Type of failure:||None/Unknown||Test Case:||patsyn/should_compile/T10997, T10997_1|
|Related Tickets:||Differential Rev(s):|
Description (last modified by )
From the mailing list..
Hello, We have a pattern synonym as follows
type family Showable (a :: k) :: Constraint where Showable (a :: *) = (Show a) Showable a = () pattern Just' :: () => (Showable a) => a -> (Maybe a) pattern Just' a <- (extractJust -> (True, a)) where Just' a = Just a
When we try to use the pattern in a different package, the error was
[1 of 1] Compiling Bar ( Bar.hs, .stack-work/dist/x86_64-linux/Cabal-22.214.171.124/build/Bar.o ) /tmp/test/p2/.stack-work/install/x86_64-linux/lts-3.5/7.10.2/lib/x86_64-linux-ghc-7.10.2/p1-0.1.0.0-I5t4il6dN7vIqsT1XgYsM3/Foo.hi Declaration for Just' Pattern synonym Just': Iface type variable out of scope: k Cannot continue after interface file error
The error only occurred when Showable was polykinded and we used synonym in a different package . Using the synonym in the same package works fine.
This problem did not happen with the following definition of (non polykinded ) Showable
type family Showable a :: Constraint where Showable a = (Show a)
Change History (13)
comment:5 Changed 19 months ago by
|Test Case:||→ typecheck/should_compile/T10997|
comment:10 Changed 18 months ago by
|Status:||new → merge|
|Test Case:||typecheck/should_compile/T10997 → patsyn/should_compile/T10997, T10997_1|