mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-19 03:46:43 +00:00
When checking for functions marked override, ignore dependent contexts.
llvm-svn: 123894
This commit is contained in:
parent
c87f861d0a
commit
fa8e5d3d67
@ -858,6 +858,9 @@ void Sema::CheckOverrideControl(const Decl *D) {
|
||||
if (!MD || !MD->isVirtual())
|
||||
return;
|
||||
|
||||
if (MD->isDependentContext())
|
||||
return;
|
||||
|
||||
// C++0x [class.virtual]p3:
|
||||
// If a virtual function is marked with the virt-specifier override and does
|
||||
// not override a member function of a base class,
|
||||
|
@ -1,5 +1,7 @@
|
||||
// RUN: %clang_cc1 -fsyntax-only -std=c++0x -verify %s
|
||||
|
||||
namespace Test1 {
|
||||
|
||||
struct B {
|
||||
virtual void f(int);
|
||||
};
|
||||
@ -8,3 +10,17 @@ struct D : B {
|
||||
virtual void f(long) override; // expected-error {{'f' marked 'override' but does not override any member functions}}
|
||||
void f(int) override;
|
||||
};
|
||||
}
|
||||
|
||||
namespace Test2 {
|
||||
|
||||
struct A {
|
||||
virtual void f(int, char, int);
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
struct B : A {
|
||||
virtual void f(T) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user