From 97a1d71473f7633062123a295751fa0f1846212f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 13 Jul 2021 15:47:49 +0200 Subject: [PATCH] [dictgen] Also forward declare namespaces, typedefs, enums: They were picked up as side effects of classes, but not forward declared as and by themselves. This fixes namespaces and enums not being available / known at the ROOT prompt despite their dictionary being loaded: https://root-forum.cern.ch/t/enum-in-namespace-not-available-after-loading-dictionary/45757 --- core/dictgen/src/rootcling_impl.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/dictgen/src/rootcling_impl.cxx b/core/dictgen/src/rootcling_impl.cxx index 4d2b03714a358..330a51e5104ff 100644 --- a/core/dictgen/src/rootcling_impl.cxx +++ b/core/dictgen/src/rootcling_impl.cxx @@ -3192,8 +3192,9 @@ static std::string GenerateFwdDeclString(const RScanner &scan, selectedDecls.begin(), [](const ROOT::TMetaUtils::AnnotatedRecordDecl& rcd){return rcd.GetRecordDecl();}); - for (auto* TD: scan.fSelectedTypedefs) - selectedDecls.push_back(TD); + selectedDecls.insert(selectedDecls.begin(), scan.fSelectedNamespaces.begin(), scan.fSelectedNamespaces.end()); + selectedDecls.insert(selectedDecls.begin(), scan.fSelectedTypedefs.begin(), scan.fSelectedTypedefs.end()); + selectedDecls.insert(selectedDecls.begin(), scan.fSelectedEnums.begin(), scan.fSelectedEnums.end()); // for (auto* VAR: scan.fSelectedVariables) // selectedDecls.push_back(VAR);