14d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s 24d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain 34d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainnamespace N2 { 44d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain struct S1; 54d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain 64d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain namespace N1 { 74d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain class C1 {}; 84d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain 94d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain struct S2 { 104d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain void func(S1*); // expected-note {{type of 1st parameter of member declaration does not match definition ('N2::S1 *' vs 'N2::N1::S1 *')}} 114d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain void func(C1&, unsigned, const S1*); // expected-note {{type of 3rd parameter of member declaration does not match definition ('const N2::S1 *' vs 'const N2::N1::S1 *')}} 124d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain void func(const S1*, unsigned); //expected-note {{type of 1st parameter of member declaration does not match definition ('const N2::S1 *' vs 'N2::N1::S1')}} 134d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain void func(unsigned, const S1*); // expected-note {{type of 1st parameter of member declaration does not match definition ('unsigned int' vs 'unsigned int *')}} 144d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain }; 154d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain 164d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain struct S1 {}; 174d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain } 184d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain} 194d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrain 204d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainvoid N2::N1::S2::func(S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}} 214d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainvoid N2::N1::S2::func(C1&, unsigned, const S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}} 224d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainvoid N2::N1::S2::func(S1*, double) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}} 234d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainvoid N2::N1::S2::func(S1, unsigned) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}} 244d9d157afb35742bc6348defbe45bc6de780ec77Kaelyn Uhrainvoid N2::N1::S2::func(unsigned*, S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}} 25