warn-overloaded-virtual.cpp revision 799ef666685d6c97d64d1970a6f68bf7923360c2
1799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -Woverloaded-virtual -verify %s 2799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 3799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct B1 { 4799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(int); // expected-note {{declared here}} 5799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(); // expected-note {{declared here}} 6799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 7799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 8799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct S1 : public B1 { 9799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis void foo(float); // expected-warning {{hides overloaded virtual functions}} 10799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 11799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 12799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct S2 : public B1 { 13799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis void foo(); // expected-note {{declared here}} 14799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 15799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 16799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct B2 { 17799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(void*); // expected-note {{declared here}} 18799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 19799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 20799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct MS1 : public S2, public B2 { 21799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(int); // expected-warning {{hides overloaded virtual functions}} 22799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 23799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 24799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct B3 { 25799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(int); 26799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(); 27799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 28799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 29799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct S3 : public B3 { 30799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis using B3::foo; 31799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis void foo(float); 32799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 33799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 34799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct B4 { 35799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis virtual void foo(); 36799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 37799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis 38799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidisstruct S4 : public B4 { 39799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis void foo(float); 40799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis void foo(); 41799ef666685d6c97d64d1970a6f68bf7923360c2Argyrios Kyrtzidis}; 42