1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 void f();
3 void f(int);
4 void f(int, float);
5 void f(int, int);
6 void f(int, ...);
7
8 typedef float Float;
9 void f(int, Float); // expected-note {{previous declaration is here}}
10
11 int f(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
12
13 void g(void); // expected-note {{previous declaration is here}}
14 int g(); // expected-error {{functions that differ only in their return type cannot be overloaded}}
15
16 typedef int INT;
17
18 class X {
19 void f();
20 void f(int); // expected-note {{previous declaration is here}}
21 void f() const;
22
23 void f(INT); // expected-error{{cannot be redeclared}}
24
25 void g(int); // expected-note {{previous declaration is here}}
26 void g(int, float); // expected-note {{previous declaration is here}}
27 int g(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
28
29 static void g(float); // expected-note {{previous declaration is here}}
30 static void g(int); // expected-error {{static and non-static member functions with the same parameter types cannot be overloaded}}
31 static void g(float); // expected-error {{class member cannot be redeclared}}
32
33 void h(); // expected-note {{previous declaration is here}}
34 void h() __restrict; // expected-error {{class member cannot be redeclared}}
35 };
36
main()37 int main() {} // expected-note {{previous definition is here}}
main(int,char **)38 int main(int,char**) {} // expected-error {{conflicting types for 'main'}}
39