id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
3427	control what sort of entity a deprecated pragma applies to	igloo		"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.
"	bug	new	low	7.6.2	Compiler	6.10.4				Unknown/Multiple	Unknown/Multiple		Unknown				
