#3427: control what sort of entity a deprecated pragma applies to
-------------------------------+--------------------------------------------
Reporter: igloo | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 6.14.1
Component: Compiler | Version: 6.10.4
Severity: normal | Keywords:
Difficulty: Unknown | Testcase:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
-------------------------------+--------------------------------------------
Originally reported as part of #3303.
----
It's annoying not being able to control whether a type or identically
named constructor is being deprecated. Consider:
{{{
data Foo = Foo ...
}}}
This is a very common idiom. But now we want to switch to smart
constructors
{{{
foo :: ... -> Foo
}}}
and eventually stop exporting the constructor Foo. But we cannot specify
just the constructor, only both. According to the
[http://haskell.org/ghc/docs/latest/html/users_guide/pragmas.html#warning-
deprecated-pragma user guide] the workaround would be to have a module
that imports one but not the other, however while that's possible for the
type it's not possible for the constructor.
How about
{{{
{-# DEPRECATED constructor Foo "use `foo' instead" #-}
}}}
and while we're at it, might as well have
{{{
{-# DEPRECATED type Foo "..." #-}
}}}
leaving the unqualified case meaning both as it does now.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3427>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs