forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -fsyntax-only -verify %s
 | 
						|
 | 
						|
template <typename T>
 | 
						|
class SmallVectorImpl  {
 | 
						|
public:
 | 
						|
  explicit SmallVectorImpl(unsigned N) {
 | 
						|
  }
 | 
						|
 | 
						|
  ~SmallVectorImpl() { }
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
template <typename T, unsigned N>
 | 
						|
class SmallVector : public SmallVectorImpl<T> {
 | 
						|
  typedef typename SmallVectorImpl<T>::U U; // expected-error {{no type named 'U' in 'SmallVectorImpl<CallSite>'}}
 | 
						|
  enum {
 | 
						|
 | 
						|
    MinUs = (static_cast<unsigned int>(sizeof(T))*N +	// expected-error {{invalid application of 'sizeof' to an incomplete type 'CallSite'}}
 | 
						|
             static_cast<unsigned int>(sizeof(U)) - 1) /
 | 
						|
            static_cast<unsigned int>(sizeof(U)),
 | 
						|
    NumInlineEltsElts = MinUs 
 | 
						|
  };
 | 
						|
  U InlineElts[NumInlineEltsElts];
 | 
						|
public:
 | 
						|
  SmallVector() : SmallVectorImpl<T>(NumInlineEltsElts) {
 | 
						|
  }
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
class CallSite;	// expected-note {{forward declaration of 'CallSite'}}
 | 
						|
class InlineFunctionInfo {
 | 
						|
public:
 | 
						|
  explicit InlineFunctionInfo() {}
 | 
						|
  SmallVector<CallSite, 2> DevirtualizedCalls;	// expected-note {{in instantiation of template class 'SmallVector<CallSite, 2>' requested}}
 | 
						|
};
 |