forked from qt-creator/qt-creator
C++: Guard against parent binding loop
Task-number: QTCREATORBUG-16146 Change-Id: Ib2a790954517859acd7ca5f16c7d889d28208fb0 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
This commit is contained in:
committed by
Erik Verbruggen
parent
c4f9c6f265
commit
a717e980e7
@@ -222,6 +222,7 @@ private slots:
|
||||
void test_checkForValidSymbolFileId();
|
||||
|
||||
void test_parentOfBlock();
|
||||
void test_infiniteLoop();
|
||||
|
||||
void findField();
|
||||
void findField_data();
|
||||
@@ -1203,6 +1204,41 @@ void tst_CheckSymbols::test_parentOfBlock()
|
||||
BaseTestCase tc(source);
|
||||
}
|
||||
|
||||
void tst_CheckSymbols::test_infiniteLoop()
|
||||
{
|
||||
const QByteArray source =
|
||||
"template <class> struct TNode;\n"
|
||||
"template <class> struct TMetaNode;\n"
|
||||
"\n"
|
||||
"template <class X>\n"
|
||||
"struct TTraits {\n"
|
||||
" using TX = X;\n"
|
||||
" using TNodeType = TNode<TX>;\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"template <class X>\n"
|
||||
"struct TMetaNode {\n"
|
||||
" using TTraitsType = TTraits<X>;\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"template <class X>\n"
|
||||
"void nonmember() {\n"
|
||||
" using TMetaNodeType = TMetaNode<X>;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"template <class X>\n"
|
||||
"struct TNode {\n"
|
||||
" using TTraitsType = TTraits<X>;\n"
|
||||
" void member();\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"template <class X>\n"
|
||||
"void TNode<X>::member() {}\n"
|
||||
;
|
||||
|
||||
BaseTestCase tc(source);
|
||||
}
|
||||
|
||||
void tst_CheckSymbols::test_checksymbols_infiniteLoop_data()
|
||||
{
|
||||
QTest::addColumn<QByteArray>("source1");
|
||||
|
||||
Reference in New Issue
Block a user