diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2014-02-20 14:36:14 +0100 |
---|---|---|
committer | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2014-02-27 09:02:30 +0100 |
commit | a7bd805e3394676327df5756b93a28ad83ac046a (patch) | |
tree | 530e629e9677c66c3262ee7a98a07ae61141f231 /src | |
parent | b33c3c88f7003a54dfcd7c34b887f65239bb7b1b (diff) | |
download | qt-creator-a7bd805e3394676327df5756b93a28ad83ac046a.tar.gz |
CppTools: fix showing cyclic in a wrong level of IncludeHierarchy
File path for which we build hierarchy was not consider in cyclic checking.
Added tests for cyclic cases
Change-Id: I0c2e60034c6e8f3aa69ab723350b4c05530fcdfb
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/cppeditor/cppincludehierarchy_test.cpp | 29 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppincludehierarchymodel.cpp | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/cppincludehierarchy_test.cpp b/src/plugins/cppeditor/cppincludehierarchy_test.cpp index d0713209e5..d37448dd16 100644 --- a/src/plugins/cppeditor/cppincludehierarchy_test.cpp +++ b/src/plugins/cppeditor/cppincludehierarchy_test.cpp @@ -143,6 +143,35 @@ void CppEditorPlugin::test_includehierarchy_data() "Included by\n" " file3.h\n" ); + + QTest::newRow("simple-cyclic") + << (QList<QByteArray>() + << QByteArray("#include \"file2.h\"\n") + << QByteArray("#include \"file1.h\"\n")) + << QString::fromLatin1( + "Includes\n" + " file2.h\n" + " file1.h (cyclic)\n" + "Included by\n" + " file2.h\n" + " file1.h (cyclic)\n" + ); + + QTest::newRow("complex-cyclic") + << (QList<QByteArray>() + << QByteArray("#include \"file2.h\"\n") + << QByteArray("#include \"file3.h\"\n") + << QByteArray("#include \"file1.h\"\n")) + << QString::fromLatin1( + "Includes\n" + " file2.h\n" + " file3.h\n" + " file1.h (cyclic)\n" + "Included by\n" + " file3.h\n" + " file2.h\n" + " file1.h (cyclic)\n" + ); } void CppEditorPlugin::test_includehierarchy() diff --git a/src/plugins/cppeditor/cppincludehierarchymodel.cpp b/src/plugins/cppeditor/cppincludehierarchymodel.cpp index f2acf48d1b..b2fc26c1e6 100644 --- a/src/plugins/cppeditor/cppincludehierarchymodel.cpp +++ b/src/plugins/cppeditor/cppincludehierarchymodel.cpp @@ -161,6 +161,7 @@ void CppIncludeHierarchyModel::fetchMore(const QModelIndex &parent) if (parentItem->needChildrenPopulate()) { QSet<QString> cyclic; + cyclic << m_editor->document()->filePath(); CppIncludeHierarchyItem *item = parentItem->parent(); while (!(item == m_includesItem || item == m_includedByItem)) { cyclic << item->filePath(); |