-
Type:
Bug
-
Status: Closed (View Workflow)
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: master
-
Component/s: Dictionaries
-
Labels:None
-
Environment:
OSX
Hi Philippe,
I am investigating the last remaining modules-related issue on OSX. It pointed a very interesting bug. The output is from ROOT build with -Druntime_cxxmodules=Off.
builds/root$ root.exe -l
|
root [0] #include <MacTypes.h> |
root [1] std::string output |
(std::string &) "" |
root [2] TClassEdit::GetNormalizedName(output,"Pointaa"); |
root [3] output |
(std::string &) "Pointaa" |
root [4] TClassEdit::GetNormalizedName(output,"::Point_t"); |
root [5] output |
(std::string &) "Point" |
root [6] TClassEdit::GetNormalizedName(output,"::Pointaa"); |
root [7] output |
(std::string &) "Point" |
root [8] TClassEdit::GetNormalizedName(output,"::Point_3"); |
root [9] output |
(std::string &) "Point" |
root [10] TClassEdit::GetNormalizedName(output,"::Pointaa"); |
root [11] output |
(std::string &) "Point" |
root [12] TClassEdit::GetNormalizedName(output,"::Pointaaa"); |
root [13] output |
(std::string &) "Pointaaa" |
If I include the header MacTypes.h which defines the struct Point, and normalize the name for ::Point_t, then it suddenly starts resolving things wrongly. I believe something wrong happens here: https://github.com/root-project/root/blob/master/core/foundation/src/TClassEdit.cxx#L1489-L1492
This example a simplified version from https://github.com/root-project/roottest/blob/master/root/meta/naming/execResolveTypedef.cxx#L162 (causing the test failure from the experimental modules nightly build http://cdash.cern.ch/viewTest.php?onlyfailed&buildid=815546)
This issue seems quite severe for ROOT. Also, it is the last issue which prevents us to enable modules on OSX by default.