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