• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 typedef int INT;
3 
4 class Foo {
5   Foo();
6   (Foo)(float) { }
7   explicit Foo(int); // expected-note {{previous declaration is here}}
8   Foo(const Foo&);
9 
10   ((Foo))(INT); // expected-error{{cannot be redeclared}}
11 
12   Foo(Foo foo, int i = 17, int j = 42); // expected-error{{copy constructor must pass its first argument by reference}}
13 
14   static Foo(short, short); // expected-error{{constructor cannot be declared 'static'}}
15   virtual Foo(double); // expected-error{{constructor cannot be declared 'virtual'}}
16   Foo(long) const; // expected-error{{'const' qualifier is not allowed on a constructor}}
17 
18   int Foo(int, int); // expected-error{{constructor cannot have a return type}} \
19   // expected-error{{member 'Foo' has the same name as its class}}
20 
21   volatile Foo(float); // expected-error{{constructor cannot have a return type}}
22 };
23 
Foo(const Foo &)24 Foo::Foo(const Foo&) { }
25 
26 typedef struct {
27   int version;
28 } Anon;
29 extern const Anon anon;
30 extern "C" const Anon anon2;
31 
32 // PR3188: The extern declaration complained about not having an appropriate
33 // constructor.
34 struct x;
35 extern x a;
36 
37 // A similar case.
38 struct y {
39   y(int);
40 };
41 extern y b;
42 
43 struct Length {
lLength44   Length l() const { return *this; }
45 };
46 
47 // <rdar://problem/6815988>
48 struct mmst_reg{
49  char mmst_reg[10];
50 };
51 
52 // PR3948
53 namespace PR3948 {
54 // PR3948
55 class a {
56   public:
57   int b(int a());
58 };
59 int x();
y()60 void y() {
61   a z; z.b(x);
62 }
63 }
64 
65 namespace A {
66   struct S {
67     S();
68     S(int);
69     void f1();
70     void f2();
71     operator int ();
72     ~S();
73   };
74 }
75 
S()76 A::S::S() {}
77 
f1()78 void A::S::f1() {}
79 
80 struct S {};
81 
S(int)82 A::S::S(int) {}
83 
f2()84 void A::S::f2() {}
85 
operator int()86 A::S::operator int() { return 1; }
87 
~S()88 A::S::~S() {}
89 
90