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