diff options
author | Haojian Wu <hokein@google.com> | 2016-10-11 13:50:34 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2016-10-11 13:50:34 +0000 |
commit | 09c8d2e19f6e7cc2f2253763dd51dd13d4be85ca (patch) | |
tree | 1fd8b1ecec2b6ab3a5eff08619225056a5ab2ff0 /clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp | |
parent | 9609f3d6c72c72d97eda10b9f5dcbf46fa569e44 (diff) | |
download | bcm5719-llvm-09c8d2e19f6e7cc2f2253763dd51dd13d4be85ca.tar.gz bcm5719-llvm-09c8d2e19f6e7cc2f2253763dd51dd13d4be85ca.zip |
[clang-tidy] Fix template agrument false positives in unused-using-decls.
Summary:
* Fix a false postive when an using class is used in an explicit template instantiation.
* Fix a false postive when an using template class is used as template argument.
Reviewers: aaron.ballman
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25437
llvm-svn: 283879
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp b/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp index fec49496c2b..65ef0dac22b 100644 --- a/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp +++ b/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp @@ -21,6 +21,16 @@ template <typename T> class J {}; class G; class H; +template <typename T> class K {}; +template <template <typename> class S> +class L {}; + +template <typename T> class M {}; +class N {}; + +template <int T> class P {}; +const int Constant = 0; + class Base { public: void f(); @@ -150,6 +160,14 @@ using n::Blue; using ns::AA; using ns::ff; +using n::K; + +using n::N; + +// FIXME: Currently non-type template arguments are not supported. +using n::Constant; +// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: using decl 'Constant' is unused + // ----- Usages ----- void f(B b); void g() { @@ -170,4 +188,16 @@ void g() { int t3 = 0; a.func1<AA>(&t3); a.func2<int, ff>(t3); + + n::L<K> l; } + +template<class T> +void h(n::M<T>* t) {} +// n::N is used the explicit template instantiation. +template void h(n::M<N>* t); + +// Test on Non-type template arguments. +template <int T> +void i(n::P<T>* t) {} +template void i(n::P<Constant>* t); |