[GHC] #13068: GHC should not allow modules to define instances of abstract type classes
GHC
ghc-devs at haskell.org
Thu Jan 5 10:07:06 UTC 2017
#13068: GHC should not allow modules to define instances of abstract type classes
-------------------------------------+-------------------------------------
Reporter: ezyang | Owner:
Type: bug | Status: new
Priority: low | Milestone:
Component: Compiler | Version: 8.1
(Type checker) |
Keywords: backpack | Operating System: Unknown/Multiple
Architecture: | Type of failure: GHC accepts
Unknown/Multiple | invalid program
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
hs-boot files permit a type class to be given "abstractly", in which case
any implementation of the type class is permissible. But it does not
reject instances defined for such a class.
{{{
-- A.hs-boot
module A where
class C a
-- B.hs
module B where
import {-# SOURCE #-} A
instance C Int where
-- A.hs
module A where
import B
class C a where
f :: a
-- Main.hs
import A
main = print (f :: Int)
}}}
I get this when I build with `--make`:
{{{
ezyang at sabre:~$ ghc-head --make C.hs -fforce-recomp
[1 of 4] Compiling A[boot] ( A.hs-boot, A.o-boot )
[2 of 4] Compiling B ( B.hs, B.o )
[3 of 4] Compiling A ( A.hs, A.o )
[4 of 4] Compiling Main ( C.hs, C.o )
Linking C ...
./B.o:(.data+0x0): undefined reference to `A_CZCC_con_info'
collect2: error: ld returned 1 exit status
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13068>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list