1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 
3 struct string {};
4 
5 class StringPiece;  // expected-note {{forward declaration of 'StringPiece'}} \
6                     // expected-note {{forward declaration of 'StringPiece'}}
7 
8 struct Test {
9   void expectStringPiece(const StringPiece& blah) {};  // expected-note {{passing argument to parameter 'blah' here}}
10 
11   void test(const string& s) {
12     expectStringPiece(s);  // expected-error {{no viable conversion from 'const string' to incomplete type 'const StringPiece'}}
13   }
14 };
15 
16 struct TestStatic {
17   static void expectStringPiece(const StringPiece& blah) {};  // expected-note {{passing argument to parameter 'blah' here}}
18 
19   static void test(const string& s) {
20     expectStringPiece(s);  // expected-error {{no viable conversion from 'const string' to incomplete type 'const StringPiece'}}
21   }
22 };
23 
24