88 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s 
 | |
| typedef int INT;
 | |
| 
 | |
| class Foo {
 | |
|   Foo();
 | |
|   (Foo)(float) { }
 | |
|   explicit Foo(int); // expected-note {{previous declaration is here}}
 | |
|   Foo(const Foo&);
 | |
| 
 | |
|   ((Foo))(INT); // expected-error{{cannot be redeclared}}
 | |
| 
 | |
|   Foo(Foo foo, int i = 17, int j = 42); // expected-error{{copy constructor must pass its first argument by reference}}
 | |
| 
 | |
|   static Foo(short, short); // expected-error{{constructor cannot be declared 'static'}}
 | |
|   virtual Foo(double); // expected-error{{constructor cannot be declared 'virtual'}}
 | |
|   Foo(long) const; // expected-error{{'const' qualifier is not allowed on a constructor}}
 | |
|   
 | |
|   int Foo(int, int); // expected-error{{constructor cannot have a return type}} \
 | |
|   // expected-error{{member 'Foo' has the same name as its class}}
 | |
| };
 | |
| 
 | |
| Foo::Foo(const Foo&) { }
 | |
| 
 | |
| typedef struct {
 | |
|   int version;
 | |
| } Anon;
 | |
| extern const Anon anon;
 | |
| extern "C" const Anon anon2;
 | |
| 
 | |
| // PR3188: The extern declaration complained about not having an appropriate
 | |
| // constructor.
 | |
| struct x;
 | |
| extern x a;
 | |
| 
 | |
| // A similar case.
 | |
| struct y {
 | |
|   y(int);
 | |
| };
 | |
| extern y b;
 | |
| 
 | |
| struct Length {
 | |
|   Length l() const { return *this; }
 | |
| };
 | |
| 
 | |
| // <rdar://problem/6815988>
 | |
| struct mmst_reg{
 | |
|  char mmst_reg[10];
 | |
| };
 | |
| 
 | |
| // PR3948
 | |
| namespace PR3948 {
 | |
| // PR3948
 | |
| class a {
 | |
|   public:
 | |
|   int b(int a());
 | |
| };
 | |
| int x();
 | |
| void y() {
 | |
|   a z; z.b(x);
 | |
| }
 | |
| }
 | |
| 
 | |
| namespace A {
 | |
|   struct S {
 | |
|     S();
 | |
|     S(int);
 | |
|     void f1();
 | |
|     void f2();
 | |
|     operator int ();
 | |
|     ~S();
 | |
|   };
 | |
| }
 | |
| 
 | |
| A::S::S() {}
 | |
| 
 | |
| void A::S::f1() {}
 | |
| 
 | |
| struct S {};
 | |
| 
 | |
| A::S::S(int) {}
 | |
| 
 | |
| void A::S::f2() {}
 | |
| 
 | |
| A::S::operator int() { return 1; }
 | |
| 
 | |
| A::S::~S() {}
 | |
| 
 | 
