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 limitedFit()8PlotPoint 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: path()18 path(){} 19 }; 20 21 }} 22 namespace boost 23 { 24 namespace filesystem 25 { 26 using filesystem3::path; 27 } 28 } 29 radar11487541()30void radar11487541() { 31 namespace fs = boost::filesystem; 32 fs::path p; 33 } 34 35 // PR12873 radar://11499139 testFloatInitializer()36void 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_; addr_impl_refaddr_impl_ref44 inline addr_impl_ref( T & v ): v_( v ) { 45 } operator T&addr_impl_ref46 inline operator T& () const {return v_;} 47 }; 48 template<class T> struct addressof_impl { faddressof_impl49 static inline T * f( T & v, long ) { 50 return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v))); 51 } 52 }; addressof(T & v)53template<class T> T * addressof( T & v ) { 54 return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 ); 55 } testRadar11487525_1()56void testRadar11487525_1(){ 57 bool s[25]; 58 addressof(s); 59 } 60 61 // radar://11487525 Don't crash on CK_LValueBitCast. begin(double * it)62bool 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: JSONWireProtocolReader(JSONWireProtocolInputStream & istream)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 }; test()84void test() { 85 SocketWireProtocolStream stream{}; 86 JSONWireProtocolReader reader{stream}; 87 } 88 89 // This crashed because the analyzer did not understand AttributedStmts. fallthrough()90void fallthrough() { 91 switch (1) { 92 case 1: 93 [[clang::fallthrough]]; // expected-error {{does not directly precede}} 94 } 95 } 96