blob: ad719ae03abb64d8c6d8ace647b2340702acbc46 [file] [log] [blame]
Nick Lewyckycd0655b2013-02-01 08:13:20 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
2// PR14993
3
4namespace test1 {
5 inline void f(); // expected-warning{{inline function 'test1::f' is not defined}}
6 void test() { f(); } // expected-note{{used here}}
7}
8
9namespace test2 {
10 inline int f();
11 void test() { (void)sizeof(f()); }
12}
13
14namespace test3 {
15 void f(); // expected-warning{{inline function 'test3::f' is not defined}}
16 inline void f();
17 void test() { f(); } // expected-note{{used here}}
18}
19
20namespace test4 {
21 inline void error_on_zero(int); // expected-warning{{inline function 'test4::error_on_zero' is not defined}}
22 inline void error_on_zero(char*) {}
23 void test() { error_on_zero(0); } // expected-note{{used here}}
24}
25
26namespace test5 {
27 struct X { void f(); };
28 void test(X &x) { x.f(); }
29}
30
31namespace test6 {
32 struct X { inline void f(); }; // expected-warning{{inline function 'test6::X::f' is not defined}}
33 void test(X &x) { x.f(); } // expected-note{{used here}}
34}
35
36namespace test7 {
37 void f(); // expected-warning{{inline function 'test7::f' is not defined}}
38 void test() { f(); } // no used-here note.
39 inline void f();
40}
41
42namespace test8 {
43 inline void foo() __attribute__((gnu_inline));
44 void test() { foo(); }
45}
46
47namespace test9 {
48 void foo();
49 void test() { foo(); }
50 inline void foo() __attribute__((gnu_inline));
51}
52
53namespace test10 {
54 inline void foo();
55 void test() { foo(); }
56 inline void foo() __attribute__((gnu_inline));
57}