| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| extern "C" { |
| extern "C" void f(int); |
| } |
| |
| extern "C++" { |
| extern "C++" int& g(int); |
| float& g(); |
| } |
| double& g(double); |
| |
| void test(int x, double d) { |
| f(x); |
| float &f1 = g(); |
| int& i1 = g(x); |
| double& d1 = g(d); |
| } |
| |
| extern "C" int foo; |
| extern "C" int foo; |
| |
| extern "C" const int bar; |
| extern "C" int const bar; |
| |
| // <rdar://problem/6895431> |
| extern "C" struct bar d; |
| extern struct bar e; |
| |
| extern "C++" { |
| namespace N0 { |
| struct X0 { |
| int foo(int x) { return x; } |
| }; |
| } |
| } |
| |
| // PR5430 |
| namespace pr5430 { |
| extern "C" void func(void); |
| } |
| using namespace pr5430; |
| extern "C" void pr5430::func(void) { } |
| |
| // PR5404 |
| int f2(char *) |
| { |
| return 0; |
| } |
| |
| extern "C" |
| { |
| int f2(int) |
| { |
| return f2((char *)0); |
| } |
| } |