blob: 2ea407cdf5e517da0c8a95585ec90d013b04eebc [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Douglas Gregor04495c82009-02-24 01:23:02 +00002int foo(int);
3
4namespace N {
5 void f1() {
6 void foo(int); // okay
7 }
8
9 // FIXME: we shouldn't even need this declaration to detect errors
10 // below.
11 void foo(int); // expected-note{{previous declaration is here}}
12
13 void f2() {
14 int foo(int); // expected-error{{functions that differ only in their return type cannot be overloaded}}
15
16 {
17 int foo;
18 {
19 // FIXME: should diagnose this because it's incompatible with
20 // N::foo. However, name lookup isn't properly "skipping" the
21 // "int foo" above.
22 float foo(int);
23 }
24 }
25 }
26}
Kaelyn Uhrain51611632011-08-18 18:19:12 +000027
28class A {
29 void typocorrection(); // expected-note {{'typocorrection' declared here}}
30};
31
32void A::Notypocorrection() { // expected-error {{out-of-line definition of 'Notypocorrection' does not match any declaration in 'A'; did you mean 'typocorrection'}}
33}
34
35
36namespace test0 {
37 void dummy() {
38 void Bar(); // expected-note {{'Bar' declared here}}
39 class A {
40 friend void bar(); // expected-error {{no matching function 'bar' found in local scope; did you mean 'Bar'}}
41 };
42 }
43}
44
45
46class B {
47 void typocorrection(const int); // expected-note {{type of 1st parameter of member declaration does not match definition}}
48 void typocorrection(double);
49};
50
51void B::Notypocorrection(int) { // expected-error {{out-of-line definition of 'Notypocorrection' does not match any declaration in 'B'; did you mean 'typocorrection'}}
52}
Kaelyn Uhraind2c89722011-08-18 21:57:36 +000053
54struct X { int f(); };
55struct Y : public X {};
56int Y::f() { return 3; } // expected-error {{out-of-line definition of 'f' does not match any declaration in 'Y'}}