1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 class Z { };
3 
4 class Y {
5 public:
6   Y(const Z&);
7 };
8 
9 class X {
10 public:
11   X(int);
12   X(const Y&);
13 };
14 
15 void f(X); // expected-note{{candidate function}}
16 
g(short s,Y y,Z z)17 void g(short s, Y y, Z z) {
18   f(s);
19   f(1.0f);
20   f(y);
21   f(z); // expected-error{{no matching function}}
22 }
23 
24 
25 class FromShort {
26 public:
27   FromShort(short s);
28 };
29 
30 class FromShortExplicitly { // expected-note{{candidate constructor (the implicit copy constructor)}}
31 public:
32   explicit FromShortExplicitly(short s);
33 };
34 
explicit_constructor(short s)35 void explicit_constructor(short s) {
36   FromShort fs1(s);
37   FromShort fs2 = s;
38   FromShortExplicitly fse1(s);
39   FromShortExplicitly fse2 = s; // expected-error{{no viable conversion}}
40 }
41 
42 // PR5519
43 struct X1 { X1(const char&); };
44 void x1(X1);
y1()45 void y1() {
46   x1(1);
47 }
48