Status: Closed (View Workflow)
GCC 4.9.3 / C++14 (6.06/08)
GCC 4.9.3 / C++14 (6.08/06 + patches from v6-08-00-patches up to approximately 99ff14c61a)
GCC 6.3.0 / C++14 (ditto)
The art team had a bug report from Dr. Paul LeBrun, a member of the NEXT collaboration (a European neutrino-less double beta decay dark matter search experiment), which uses art. They were attempting to update their code to use a more recent version of art, which version uses ROOT 6. Although their code compiled, the generated dictionary source failed to compile. Upon inspection, it appeared that some class names were missing.
Further investigation revealed that the dictionary generation system is doing bad things to entities defined in the, "next" namespace. This would be a bit of a problem for a collaboration whose name is, "NEXT."
Please find attached a minimal reproducer, using no experimental code whatsoever. Instructions are in 00README.txt, but reproduced below:
- Untar the provided tar file.
- Run genreflex:
- Observe the faulty contents of AA_dict.cpp, including (but not limited to) the line:
static TGenericClassInfo *GenerateInitInstanceLocal(const ::*)
and the presence of:
- Make the problem go away:
perl -wapi\~ -e 's&\bnext\b&Next&g' classes_def.xml test-next.hh
- Repeat Step 1.
- Observer the no-longer-faulty contents of AA_dict.cpp.
- Make the problem come back for debugging purposes:
perl -wapi\~ -e 's&\bNext\b&next&g' classes_def.xml test-next.hh
Suffice to say, this is a showstopper for the experiment upgrading to use ROOT 6. Help would be appreciated.