summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/warn-overloaded-virtual.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-10-17 23:45:39 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-10-17 23:45:39 +0000
commitea4d2590417baba3c6d5cad7043f8594faf2ac68 (patch)
tree57535a3521dd525a7dc0cf17469bd8f48eabb3ae /clang/test/SemaCXX/warn-overloaded-virtual.cpp
parent7857415785c2518eb75e782312198c7c71416a12 (diff)
downloadbcm5719-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.cpp16
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;
+};
+}
OpenPOWER on IntegriCloud