diff options
| author | David Blaikie <dblaikie@gmail.com> | 2012-10-17 23:45:39 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2012-10-17 23:45:39 +0000 |
| commit | ea4d2590417baba3c6d5cad7043f8594faf2ac68 (patch) | |
| tree | 57535a3521dd525a7dc0cf17469bd8f48eabb3ae /clang/test/SemaCXX/warn-overloaded-virtual.cpp | |
| parent | 7857415785c2518eb75e782312198c7c71416a12 (diff) | |
| download | bcm5719-llvm-ea4d2590417baba3c6d5cad7043f8594faf2ac68.tar.gz bcm5719-llvm-ea4d2590417baba3c6d5cad7043f8594faf2ac68.zip | |
Fix -Woverloaded-virtual when the using statement refers to a base declaration of a virtual function.
GCC and Clang both do not warn on:
struct a { virtual void func(); };
struct b: a { virtual void func(); void func(int); };
struct c: b { void func(int); using b::func; };
but if the "using" was using a::func GCC would still remain silent where Clang
would warn. This change makes Clang consistent with GCC's existing behavior.
llvm-svn: 166154
Diffstat (limited to 'clang/test/SemaCXX/warn-overloaded-virtual.cpp')
| -rw-r--r-- | clang/test/SemaCXX/warn-overloaded-virtual.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-overloaded-virtual.cpp b/clang/test/SemaCXX/warn-overloaded-virtual.cpp index 8e2b671bf49..79635a62f8a 100644 --- a/clang/test/SemaCXX/warn-overloaded-virtual.cpp +++ b/clang/test/SemaCXX/warn-overloaded-virtual.cpp @@ -64,3 +64,19 @@ public: static void f() {} }; } + +namespace ThreeLayer { +struct A { + virtual void f(); +}; + +struct B: A { + void f(); + void f(int); +}; + +struct C: B { + void f(int); + using A::f; +}; +} |

