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.

Reply via email to