From 8a1e2d0fc5a451524821fd1e5a9353abd6c045b1 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 19 Nov 2013 18:12:20 +0100 Subject: [PATCH] CppEditor: Fix type hierarchy for forward declarations The wrong LookupContext/Document was used to lookup the type. Task-number: QTCREATORBUG-10353 Change-Id: Iac501ca368543716b5f38b6d2bec474ab585e189 Reviewed-by: David Schulz --- src/plugins/cppeditor/cppelementevaluator.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp index fe7dacbbd8..75646085cc 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cppeditor/cppelementevaluator.cpp @@ -176,14 +176,21 @@ void CppElementEvaluator::handleLookupItemMatch(const Snapshot &snapshot, || (declaration->isTemplate() && declaration->asTemplate()->declaration() && (declaration->asTemplate()->declaration()->isClass() || declaration->asTemplate()->declaration()->isForwardClassDeclaration()))) { + LookupContext contextToUse = context; if (declaration->isForwardClassDeclaration()) if (Symbol *classDeclaration = m_symbolFinder.findMatchingClassDeclaration(declaration, snapshot)) { declaration = classDeclaration; + const QString fileName = QString::fromUtf8(declaration->fileName(), + declaration->fileNameLength()); + const Document::Ptr declarationDocument = snapshot.document(fileName); + if (declarationDocument != context.thisDocument()) + contextToUse = LookupContext(declarationDocument, snapshot); } + CppClass *cppClass = new CppClass(declaration); if (m_lookupBaseClasses) - cppClass->lookupBases(declaration, context); + cppClass->lookupBases(declaration, contextToUse); if (m_lookupDerivedClasses) cppClass->lookupDerived(declaration, snapshot); m_element = QSharedPointer(cppClass); -- GitLab