// RUN: %clang_cc1 -fsyntax-only -verify %s
template<typename T>classSmallVectorImpl{public:explicitSmallVectorImpl(unsignedN){}~SmallVectorImpl(){}};template<typename T,unsigned N>classSmallVector:publicSmallVectorImpl<T>{typedeftypename SmallVectorImpl<T>::U U;// expected-error {{no type named 'U' in 'SmallVectorImpl<CallSite>'}}
enum{
MinUs =(static_cast<unsignedint>(sizeof(T))*N +// expected-error {{invalid application of 'sizeof' to an incomplete type 'CallSite'}}
static_cast<unsignedint>(sizeof(U))-1)/static_cast<unsignedint>(sizeof(U)),
NumInlineEltsElts = MinUs
};U InlineElts[NumInlineEltsElts];public:SmallVector():SmallVectorImpl<T>(NumInlineEltsElts){}};classCallSite;// expected-note {{forward declaration of 'CallSite'}}
classInlineFunctionInfo{public:explicitInlineFunctionInfo(){}
SmallVector<CallSite,2> DevirtualizedCalls;// expected-note {{in instantiation of template class 'SmallVector<CallSite, 2>' requested}}
};