diff options
authorMatthew Woehlke <matthew.woehlke@kitware.com>2015-02-20 16:31:23 -0500
committerJohn Cummings <jcummings2@users.sf.net>2015-03-07 13:04:26 +0000
commitaa39374b419c535dd56145ffebcef97c8c20eb39 (patch)
parent0fd6bc31ee9f2b9fe7d1bff40542ef8e51d1adac (diff)
Don't ignore classes in topologysb-4.8-head
When building the class topology, don't skip classes, even if we are not going to generate code for them. This is necessary to get the topology order correct in a case such as C derived from B derived from A, where B is not generated, but initializing C depends on A being initialized first. Without this change, there is no guaranteed ordering between A and C in such a case. (In particular, this comes up in the Photon test; Photon::ValueIdentity derives from Photon::TemplateBase, which derives from Photon::Base. However, this was not being reflected in the topology, and as a result, it was just luck that the initialization order was correct anyway.) Change-Id: I4b99a50acef3b06e77100a70f2db8236d06af2be Reviewed-by: John Cummings <jcummings2@users.sf.net>
1 files changed, 0 insertions, 3 deletions
diff --git a/ApiExtractor/abstractmetabuilder.cpp b/ApiExtractor/abstractmetabuilder.cpp
index ebb3134ec..f956d7c08 100644
--- a/ApiExtractor/abstractmetabuilder.cpp
+++ b/ApiExtractor/abstractmetabuilder.cpp
@@ -2952,9 +2952,6 @@ AbstractMetaClassList AbstractMetaBuilder::classesTopologicalSorted(const Abstra
QRegExp regex1("\\(.*\\)");
QRegExp regex2("::.*");
foreach (AbstractMetaClass* clazz, classList) {
- if (clazz->isInterface() || !clazz->typeEntry()->generateCode())
- continue;
if (clazz->enclosingClass() && map.contains(clazz->enclosingClass()->qualifiedCppName()))
graph.addEdge(map[clazz->enclosingClass()->qualifiedCppName()], map[clazz->qualifiedCppName()]);