// RUN: %clang_cc1 -fsyntax-only -verify %s
// This is not well-formed C++ but used to crash in sema.
template<class T>structX{template<class U>structA{// expected-note {{not-yet-instantiated member is declared here}}
template<class V>structB{template<class W>structC{template<class X>structD{template<class Y>structE{template<class Z>voidoperator+=(Z);};};};};};template<class U>template<class V>template<class W>template<class X>template<class Y>template<class Z>friendvoid A<U>::template B<V>::template C<W>::template D<X>::template E<Y>::operator+=(Z);// expected-warning {{not supported}} expected-error {{no member 'A' in 'X<int>'; it has not yet been instantiated}}
};voidtest(){
X<int>::A<int>::B<int>::C<int>::D<int>::E<int>()+=1.0;// expected-note {{in instantiation of template class 'X<int>' requested here}}
}