97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s
 | 
						|
// expected-no-diagnostics
 | 
						|
 | 
						|
// radar://11485149, PR12871
 | 
						|
class PlotPoint {
 | 
						|
  bool valid;
 | 
						|
};
 | 
						|
 | 
						|
PlotPoint limitedFit () {
 | 
						|
  PlotPoint fit0;
 | 
						|
  fit0 = limitedFit ();
 | 
						|
  return fit0;
 | 
						|
}
 | 
						|
 | 
						|
// radar://11487541, NamespaceAlias
 | 
						|
namespace boost {namespace filesystem3 {
 | 
						|
class path {
 | 
						|
public:
 | 
						|
 path(){}
 | 
						|
};
 | 
						|
 | 
						|
}}
 | 
						|
namespace boost
 | 
						|
{
 | 
						|
  namespace filesystem
 | 
						|
  {
 | 
						|
    using filesystem3::path;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void radar11487541() {
 | 
						|
  namespace fs = boost::filesystem;
 | 
						|
  fs::path p;
 | 
						|
}
 | 
						|
 | 
						|
// PR12873 radar://11499139
 | 
						|
void testFloatInitializer() {
 | 
						|
  const float ysize={0.015}, xsize={0.01};
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// PR12874, radar://11487525
 | 
						|
template<class T> struct addr_impl_ref {
 | 
						|
  T & v_;
 | 
						|
  inline addr_impl_ref( T & v ): v_( v ) {
 | 
						|
  }
 | 
						|
  inline operator T& () const {return v_;}
 | 
						|
};
 | 
						|
template<class T> struct addressof_impl {
 | 
						|
  static inline T * f( T & v, long )     {
 | 
						|
    return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
 | 
						|
  }
 | 
						|
};
 | 
						|
template<class T> T * addressof( T & v ) {
 | 
						|
  return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 );
 | 
						|
}
 | 
						|
void testRadar11487525_1(){
 | 
						|
  bool s[25];
 | 
						|
  addressof(s);
 | 
						|
}
 | 
						|
 | 
						|
// radar://11487525 Don't crash on CK_LValueBitCast.
 | 
						|
bool begin(double *it) {
 | 
						|
  typedef bool type[25];
 | 
						|
  bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it )));
 | 
						|
  return *a;
 | 
						|
}
 | 
						|
 | 
						|
// radar://14164698 Don't crash on "assuming" a ComoundVal.
 | 
						|
class JSONWireProtocolInputStream {
 | 
						|
public:
 | 
						|
  virtual ~JSONWireProtocolInputStream();
 | 
						|
};
 | 
						|
class JSONWireProtocolReader {
 | 
						|
public:
 | 
						|
  JSONWireProtocolReader(JSONWireProtocolInputStream& istream)
 | 
						|
  : _istream{istream} {} // On evaluating a bind here,
 | 
						|
                         // the dereference checker issues an assume on a CompoundVal.
 | 
						|
~JSONWireProtocolReader();
 | 
						|
private:
 | 
						|
JSONWireProtocolInputStream& _istream;
 | 
						|
};
 | 
						|
class SocketWireProtocolStream : public JSONWireProtocolInputStream {
 | 
						|
};
 | 
						|
void test() {
 | 
						|
  SocketWireProtocolStream stream{};
 | 
						|
  JSONWireProtocolReader reader{stream};
 | 
						|
}
 | 
						|
 | 
						|
// This crashed because the analyzer did not understand AttributedStmts.
 | 
						|
void fallthrough() {
 | 
						|
  switch (1) {
 | 
						|
    case 1:
 | 
						|
      [[clang::fallthrough]];
 | 
						|
  }
 | 
						|
}
 |