forked from qt-creator/qt-creator
Clang: Pass on file paths with native separators
libclang 3.8 seems to be sensitive to file paths separators [1]. On Windows, this led to not updated document annotations and/or crashes after reparsing. When passing file paths to libclang, convert to native separators. When getting file paths from libclang, convert back. This handles: * main file path * file paths of the unsaved files * -I<DIR> arguments, the resource path (for builtins) and the paths to the wrapped qt headers * included header files from libclang * source locations from libclang Also, minimize the conversion in SourceLocation to a minimum by making filePath() lazy. [1] https://llvm.org/bugs/show_bug.cgi?id=28381 Change-Id: If5866f34a6fdc6b34b16c022d3988e8e6eae2a0a Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -27,6 +27,8 @@
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
|
||||
#include <QDir>
|
||||
|
||||
namespace CppTools {
|
||||
|
||||
CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart)
|
||||
@@ -98,7 +100,7 @@ void CompilerOptionsBuilder::enableExceptions()
|
||||
add(QLatin1String("-fexceptions"));
|
||||
}
|
||||
|
||||
void CompilerOptionsBuilder::addHeaderPathOptions()
|
||||
void CompilerOptionsBuilder::addHeaderPathOptions(bool addAsNativePath)
|
||||
{
|
||||
typedef ProjectPartHeaderPath HeaderPath;
|
||||
const QString defaultPrefix = includeOption();
|
||||
@@ -124,7 +126,10 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
|
||||
break;
|
||||
}
|
||||
|
||||
result.append(prefix + headerPath.path);
|
||||
QString path = prefix + headerPath.path;
|
||||
path = addAsNativePath ? QDir::toNativeSeparators(path) : path;
|
||||
|
||||
result.append(path);
|
||||
}
|
||||
|
||||
m_options.append(result);
|
||||
|
||||
Reference in New Issue
Block a user