Clang: Handle generated files

We don't handled generated files so we got internal parse errors.

Change-Id: If75e202f93fe3f71f43e3b1d15c0fb77e20c2248
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2017-02-01 13:43:28 +01:00
parent 55400d5bec
commit b860d46579
23 changed files with 402 additions and 124 deletions

View File

@@ -58,10 +58,11 @@ void ClangTool::addFile(std::string &&directory,
sourceFilePaths.push_back(fileContent.filePath);
}
void ClangTool::addFiles(const Utils::SmallStringVector &filePaths,
template <typename Container>
void ClangTool::addFiles(const Container &filePaths,
const Utils::SmallStringVector &arguments)
{
for (const Utils::SmallString &filePath : filePaths) {
for (const typename Container::value_type &filePath : filePaths) {
auto found = std::find(filePath.rbegin(), filePath.rend(), '/');
auto fileNameBegin = found.base();
@@ -76,6 +77,13 @@ void ClangTool::addFiles(const Utils::SmallStringVector &filePaths,
}
}
template
void ClangTool::addFiles<Utils::SmallStringVector>(const Utils::SmallStringVector &filePaths,
const Utils::SmallStringVector &arguments);
template
void ClangTool::addFiles<Utils::PathStringVector>(const Utils::PathStringVector &filePaths,
const Utils::SmallStringVector &arguments);
namespace {
Utils::SmallString toNativeFilePath(const FilePath &filePath)
{
@@ -87,13 +95,13 @@ Utils::SmallString toNativeFilePath(const FilePath &filePath)
}
}
void ClangTool::addUnsavedFiles(std::vector<V2::FileContainer> &&unsavedFiles)
void ClangTool::addUnsavedFiles(const V2::FileContainers &unsavedFiles)
{
unsavedFileContents.reserve(unsavedFileContents.size() + unsavedFiles.size());
auto convertToUnsavedFileContent = [] (V2::FileContainer &unsavedFile) {
auto convertToUnsavedFileContent = [] (const V2::FileContainer &unsavedFile) {
return UnsavedFileContent{toNativeFilePath(unsavedFile.filePath()),
unsavedFile.takeUnsavedFileContent()};
unsavedFile.unsavedFileContent().clone()};
};
std::transform(unsavedFiles.begin(),

View File

@@ -94,10 +94,12 @@ public:
std::string &&fileName,
std::string &&content,
std::vector<std::string> &&commandLine);
void addFiles(const Utils::SmallStringVector &filePaths,
template <typename Container>
void addFiles(const Container &filePaths,
const Utils::SmallStringVector &arguments);
void addUnsavedFiles(std::vector<V2::FileContainer> &&unsavedFiles);
void addUnsavedFiles(const V2::FileContainers &unsavedFiles);
clang::tooling::ClangTool createTool() const;