On Sep 29, 2006, at 2:04 PM, Mark Mitchell wrote:
Eric Christopher wrote:
So, a testcase like this:
extern void foo() __attribute__((deprecated));
extern void bar() __attribute__((deprecated));
void foo() {}
void bar()
{
foo();
}
Should we warn on the invocation of foo() since it's also being
called from within a deprecated function? We are today, but I've
gotten a request for that to not warn. This seems reasonable, for
example, if you deprecate an entire API or something, but still
need to compile the library.
I think we should continue to warn. I can see the arguments on
both sides, but I think warning makes sense. The person compiling
the library should use -Wno-deprecated, and accept that they be
calling some other deprecated function they don't intend to call.
I'd just note that in use headers often want to make use of
deprecated things to define other deprecated things, and those uses
of those deprecated things, they don't want to warn about being
deprecated:
static inline max() __attr__(deprecanted) { ... }
inline bar() __attr__((deprecated)) {
max();
}
I think in cases that we care about around here, these happen in the
system header files, and with uses inside system headers, we can
avoid giving a warning for the use of deprecated things.