1 // RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s 2 3 // radar://11485149, PR12871 4 class PlotPoint { 5 bool valid; 6 }; 7 8 PlotPoint limitedFit () { 9 PlotPoint fit0; 10 fit0 = limitedFit (); 11 return fit0; 12 } 13 14 // radar://11487541, NamespaceAlias 15 namespace boost {namespace filesystem3 { 16 class path { 17 public: 18 path(){} 19 }; 20 21 }} 22 namespace boost 23 { 24 namespace filesystem 25 { 26 using filesystem3::path; 27 } 28 } 29 30 void radar11487541() { 31 namespace fs = boost::filesystem; 32 fs::path p; 33 } 34 35 // PR12873 radar://11499139 36 void testFloatInitializer() { 37 const float ysize={0.015}, xsize={0.01}; 38 } 39 40 41 // PR12874, radar://11487525 42 template<class T> struct addr_impl_ref { 43 T & v_; 44 inline addr_impl_ref( T & v ): v_( v ) { 45 } 46 inline operator T& () const {return v_;} 47 }; 48 template<class T> struct addressof_impl { 49 static inline T * f( T & v, long ) { 50 return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v))); 51 } 52 }; 53 template<class T> T * addressof( T & v ) { 54 return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 ); 55 } 56 void testRadar11487525_1(){ 57 bool s[25]; 58 addressof(s); 59 } 60 61 // radar://11487525 Don't crash on CK_LValueBitCast. 62 bool begin(double *it) { 63 typedef bool type[25]; 64 bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it ))); 65 return *a; 66 } 67 68 // radar://14164698 Don't crash on "assuming" a ComoundVal. 69 class JSONWireProtocolInputStream { 70 public: 71 virtual ~JSONWireProtocolInputStream(); 72 }; 73 class JSONWireProtocolReader { 74 public: 75 JSONWireProtocolReader(JSONWireProtocolInputStream& istream) 76 : _istream{istream} {} // On evaluating a bind here, 77 // the dereference checker issues an assume on a CompoundVal. 78 ~JSONWireProtocolReader(); 79 private: 80 JSONWireProtocolInputStream& _istream; 81 }; 82 class SocketWireProtocolStream : public JSONWireProtocolInputStream { 83 }; 84 void test() { 85 SocketWireProtocolStream stream{}; 86 JSONWireProtocolReader reader{stream}; 87 } 88 89 // This crashed because the analyzer did not understand AttributedStmts. 90 void fallthrough() { 91 switch (1) { 92 case 1: 93 [[clang::fallthrough]]; // expected-error {{does not directly precede}} 94 } 95 } 96