blob: 0ab8d93137795f04f03378ba0ae6d4002e1b80c0 [file] [log] [blame]
Douglas Gregor225c41e2008-11-03 19:09:14 +00001// RUN: clang -fsyntax-only -verify %s
Douglas Gregor60d62c22008-10-31 16:23:19 +00002class Z { };
3
4class Y {
5public:
6 Y(const Z&);
7};
8
9class X {
10public:
11 X(int);
12 X(const Y&);
13};
14
15void f(X);
16
17void g(short s, Y y, Z z) {
18 f(s);
19 f(1.0f);
20 f(y);
Douglas Gregor225c41e2008-11-03 19:09:14 +000021 f(z); // expected-error{{incompatible type passing 'class Z', expected 'class X'}}
Douglas Gregor60d62c22008-10-31 16:23:19 +000022}
23
Douglas Gregorbf985f12009-01-14 18:02:48 +000024
25class FromShort {
26public:
27 FromShort(short s);
28};
29
30class FromShortExplicitly {
31public:
32 explicit FromShortExplicitly(short s);
33};
34
35void explicit_constructor(short s) {
36 FromShort fs1(s);
37 FromShort fs2 = s;
38 FromShortExplicitly fse1(s);
39 FromShortExplicitly fse2 = s; // expected-error{{error: cannot initialize 'fse2' with an lvalue of type 'short'}}
40}