1 | // RUN: %clang_analyze_cc1 -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 | |