mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:46:46 +00:00

The diagnostics engine is very smart about being passed a NamedDecl to print as part of a diagnostic; it gets the "right" form of the name, quotes it properly, etc. However, the result of using an unnamed tag declaration was to print '' instead of anything useful. This patch causes us to print the same information we'd have gotten if we had printed the type of the declaration rather than the name of it, as that's the most relevant information we can display. Differential Revision: https://reviews.llvm.org/D134813
20 lines
673 B
C++
20 lines
673 B
C++
// RUN: %clang_cc1 -verify -Wunused -Wused-but-marked-unused -fsyntax-only %s
|
|
|
|
namespace ns_unused { typedef int Int_unused __attribute__((unused)); }
|
|
namespace ns_not_unused { typedef int Int_not_unused; }
|
|
|
|
template <typename T> class C;
|
|
template <> class __attribute__((unused)) C<int> {};
|
|
|
|
void f() {
|
|
ns_not_unused::Int_not_unused i1; // expected-warning {{unused variable}}
|
|
ns_unused::Int_unused i0; // expected-warning {{'Int_unused' was marked unused but was used}}
|
|
|
|
union __attribute__((unused)) { // expected-warning {{was marked unused but was used}}
|
|
int i;
|
|
};
|
|
(void) i;
|
|
|
|
C<int>(); // expected-warning {{'C<int>' was marked unused but was used}}
|
|
}
|