1*16f94c6eSFariborz Jahanian // RUN: %clang_cc1 -fsyntax-only -verify %s 2*16f94c6eSFariborz Jahanian 3*16f94c6eSFariborz Jahanian template <typename T> 4*16f94c6eSFariborz Jahanian class SmallVectorImpl { 5*16f94c6eSFariborz Jahanian public: SmallVectorImpl(unsigned N)6*16f94c6eSFariborz Jahanian explicit SmallVectorImpl(unsigned N) { 7*16f94c6eSFariborz Jahanian } 8*16f94c6eSFariborz Jahanian ~SmallVectorImpl()9*16f94c6eSFariborz Jahanian ~SmallVectorImpl() { } 10*16f94c6eSFariborz Jahanian 11*16f94c6eSFariborz Jahanian }; 12*16f94c6eSFariborz Jahanian 13*16f94c6eSFariborz Jahanian template <typename T, unsigned N> 14*16f94c6eSFariborz Jahanian class SmallVector : public SmallVectorImpl<T> { 15*16f94c6eSFariborz Jahanian typedef typename SmallVectorImpl<T>::U U; // expected-error {{no type named 'U' in 'SmallVectorImpl<CallSite>'}} 16*16f94c6eSFariborz Jahanian enum { 17*16f94c6eSFariborz Jahanian 18*16f94c6eSFariborz Jahanian MinUs = (static_cast<unsigned int>(sizeof(T))*N + // expected-error {{invalid application of 'sizeof' to an incomplete type 'CallSite'}} 19*16f94c6eSFariborz Jahanian static_cast<unsigned int>(sizeof(U)) - 1) / 20*16f94c6eSFariborz Jahanian static_cast<unsigned int>(sizeof(U)), 21*16f94c6eSFariborz Jahanian NumInlineEltsElts = MinUs 22*16f94c6eSFariborz Jahanian }; 23*16f94c6eSFariborz Jahanian U InlineElts[NumInlineEltsElts]; 24*16f94c6eSFariborz Jahanian public: SmallVector()25*16f94c6eSFariborz Jahanian SmallVector() : SmallVectorImpl<T>(NumInlineEltsElts) { 26*16f94c6eSFariborz Jahanian } 27*16f94c6eSFariborz Jahanian 28*16f94c6eSFariborz Jahanian }; 29*16f94c6eSFariborz Jahanian 30*16f94c6eSFariborz Jahanian class CallSite; // expected-note {{forward declaration of 'CallSite'}} 31*16f94c6eSFariborz Jahanian class InlineFunctionInfo { 32*16f94c6eSFariborz Jahanian public: InlineFunctionInfo()33*16f94c6eSFariborz Jahanian explicit InlineFunctionInfo() {} 34*16f94c6eSFariborz Jahanian SmallVector<CallSite, 2> DevirtualizedCalls; // expected-note {{in instantiation of template class 'SmallVector<CallSite, 2>' requested}} 35*16f94c6eSFariborz Jahanian }; 36