[cfe-commits] Avoid clang::SourceManger's cache
Vassil Vassilev
vvasilev at cern.ch
Mon Apr 23 07:12:06 PDT 2012
Hi,
I am working on the following example:
[cling]$ #include <iostream>
[cling]$ #include <fstream>
[cling]$ std::ofstream myfile;
[cling]$ myfile.open("TmpClassDef.h");
[cling]$ myfile << "class MyClass{};\n"
[cling]$ myfile << "error_here;";
[cling]$ myfile.close();
[cling]$ #include "TmpClassDef.h" <--- issues error and recovers and
continues:
[cling]$ myfile.open("TmpClassDef.h");
[cling]$ myfile << "class MyClass{ \n";
[cling]$ myfile << "public: \n";
[cling]$ myfile << " int gimme12(){\n";
[cling]$ myfile << " return 12;\n"
[cling]$ myfile << " }\n"
[cling]$ myfile << "};\n";
[cling]$ myfile.close();
[cling]$ #include "TmpClassDef.h" <--- no errors
However at the last line I hit the SourceManager's cache and it picks
up the old
file (containing the errors).
My general question is : Is there a way remove the file from the cache?
I am trying to override the TmpClassDef.h file by using:
SourceManager::overrideFileContents.
The issue is that actually I am overriding the same file with itself. So
if I try to get the
llvm::MemoryBuffer for the same FileID I'd get again the cached one.
Any ideas are very welcome!
Thanks!
Vassil
More information about the cfe-commits
mailing list