69 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -verify -std=c++11 %s2// PR149933 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)); // expected-warning {{'gnu_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10}}44 void test() { foo(); }45}46 47namespace test9 {48 void foo();49 void test() { foo(); }50 inline void foo() __attribute__((gnu_inline)); // expected-warning {{'gnu_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10}}51}52 53namespace test10 {54 inline void foo();55 void test() { foo(); }56 inline void foo() __attribute__((gnu_inline)); // expected-warning {{'gnu_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10}}57}58 59namespace test11 {60 inline void foo() __attribute__((dllexport));61 inline void bar() __attribute__((dllimport));62 void test() { foo(); bar(); }63}64 65namespace test12 {66 template<typename> constexpr int _S_chk(int *);67 decltype(_S_chk<int>(nullptr)) n;68}69