| // RUN: %clang_cc1 -fsyntax-only -verify %s  | 
 | void f(); | 
 | void f(int); | 
 | void f(int, float);  | 
 | void f(int, int); | 
 | void f(int, ...); | 
 |  | 
 | typedef float Float; | 
 | void f(int, Float); // expected-note {{previous declaration is here}} | 
 |  | 
 | int f(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}} | 
 |  | 
 | void g(void); // expected-note {{previous declaration is here}} | 
 | int g(); // expected-error {{functions that differ only in their return type cannot be overloaded}} | 
 |  | 
 | typedef int INT; | 
 |  | 
 | class X { | 
 |   void f(); | 
 |   void f(int); // expected-note {{previous declaration is here}} | 
 |   void f() const; | 
 |  | 
 |   void f(INT); // expected-error{{cannot be redeclared}} | 
 |  | 
 |   void g(int); // expected-note {{previous declaration is here}} | 
 |   void g(int, float); // expected-note {{previous declaration is here}} | 
 |   int g(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}} | 
 |  | 
 |   static void g(float); | 
 |   static void g(int); // expected-error {{static and non-static member functions with the same parameter types cannot be overloaded}} | 
 | }; |