Commit 5ba40cb7 authored by Nikolai Kosjar's avatar Nikolai Kosjar

Clang: Require LLVM/Clang >= 5.0.0

...for the code model parts and declare 5.0 as the supported version for
the clang static analyzer.

Adapt versions and tests, remove code assuming clang <= 5.0.

LLVM/Clang 5 was released on 07 Sep 2017.

Task-number: QTCREATORBUG-18931
Task-number: QTCREATORBUG-18657
Task-number: QTCREATORBUG-17187
Task-number: QTCREATORBUG-14881
Change-Id: I53b00258ca06a1d2e57f9379dacc54b310687295
Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
parent 6de3eb7a
......@@ -22,7 +22,7 @@ Prerequisites:
* jom
* On Mac OS X: latest Xcode
* On Linux: g++ 4.9 or later
* LLVM/Clang 3.9.0 or later (optional, needed for the Clang Code Model, see the
* LLVM/Clang 5.0.0 or later (optional, needed for the Clang Code Model, see the
section "Get LLVM/Clang for the Clang Code Model")
* CMake (only for manual builds of LLVM/Clang)
* Qbs 1.7.x (optional, sources also contain Qbs itself)
......@@ -203,7 +203,7 @@ or using shadow builds.
## Get LLVM/Clang for the Clang Code Model
The Clang Code Model depends on the LLVM/Clang libraries. The currently
supported LLVM/Clang version is 3.9.
supported LLVM/Clang version is 5.0.
### Prebuilt LLVM/Clang packages
......@@ -224,9 +224,9 @@ GCC 4 binaries. On Ubuntu, you can download the package from
http://apt.llvm.org/ with:
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/`lsb_release -cs`/ llvm-toolchain-`lsb_release -cs`-3.9 main"
sudo apt-add-repository "deb http://apt.llvm.org/`lsb_release -cs`/ llvm-toolchain-`lsb_release -cs`-5.0 main"
sudo apt-get update
sudo apt-get install llvm-3.9 libclang-3.9-dev
sudo apt-get install llvm-5.0 libclang-5.0-dev
There is a workaround to set _GLIBCXX_USE_CXX11_ABI to 1 or 0, but we recommend
to download the package from http://apt.llvm.org/.
......
var Environment = require("qbs.Environment")
var File = require("qbs.File")
var FileInfo = require("qbs.FileInfo")
var MinimumLLVMVersion = "3.9.0" // CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
var MinimumLLVMVersion = "5.0.0" // CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
var Process = require("qbs.Process")
function readOutput(executable, args)
......@@ -33,7 +33,7 @@ function llvmConfig(qbs, qtcFunctions)
{
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
var llvmConfigVariants = [
"llvm-config", "llvm-config-3.9", "llvm-config-4.0", "llvm-config-4.1"
"llvm-config", "llvm-config-5.0", "llvm-config-6.0", "llvm-config-7.0", "llvm-config-8.0",
];
// Prefer llvm-config* from LLVM_INSTALL_DIR
......
......@@ -50,8 +50,8 @@ Module {
})
property stringList llvmToolingCxxFlags: clangProbe.llvmToolingCxxFlags
property bool toolingEnabled: !Environment.getEnv("QTC_NO_CLANG_LIBTOOLING")
&& Utilities.versionCompare(llvmVersion, "3.9") > 0
&& Utilities.versionCompare(llvmVersion, "4") < 0
&& Utilities.versionCompare(llvmVersion, "5") > 0
&& Utilities.versionCompare(llvmVersion, "6") < 0
validate: {
if (!clangProbe.found) {
......
......@@ -71,7 +71,7 @@ Utils::SmallString DynamicASTMatcherDiagnosticMessageContainer::errorTypeText()
RETURN_CASE(ParserInvalidToken)
RETURN_CASE(ParserMalformedBindExpr)
RETURN_CASE(ParserTrailingCode)
RETURN_CASE(ParserUnsignedError)
RETURN_CASE(ParserNumberError)
RETURN_CASE(ParserOverloadedType)
}
......
......@@ -51,7 +51,7 @@ enum class ClangQueryDiagnosticErrorType {
ParserInvalidToken,
ParserMalformedBindExpr,
ParserTrailingCode,
ParserUnsignedError,
ParserNumberError,
ParserOverloadedType
};
......
......@@ -59,12 +59,12 @@ public:
bool isSupportedVersion() const
{
return majorVersion() == 3 && minorVersion() == 9;
return majorVersion() == 5 && minorVersion() == 0;
}
static QString supportedVersionAsString()
{
return QLatin1String("3.9");
return QLatin1String("5.0");
}
};
......
......@@ -55,7 +55,6 @@ QStringList CompilerOptionsBuilder::build(CppTools::ProjectFile::Kind fileKind,
addOptionsForLanguage(/*checkForBorlandExtensions*/ true);
enableExceptions();
addDefineFloat128ForMingw();
addToolchainAndProjectMacros();
undefineClangVersionMacrosForMsvc();
undefineCppLanguageFeatureMacrosForMsvc2015();
......@@ -271,15 +270,13 @@ void CompilerOptionsBuilder::addOptionsForLanguage(bool checkForBorlandExtension
opts << (gnuExtensions ? QLatin1String("-std=gnu++98") : QLatin1String("-std=c++98"));
break;
case ProjectPart::CXX03:
// CLANG-UPGRADE-CHECK: Clang 3.6/3.9 does not know -std=gnu++03, but 5.0 does.
opts << QLatin1String("-std=c++03");
opts << (gnuExtensions ? QLatin1String("-std=gnu++03") : QLatin1String("-std=c++03"));
break;
case ProjectPart::CXX14:
opts << (gnuExtensions ? QLatin1String("-std=gnu++14") : QLatin1String("-std=c++14"));
break;
case ProjectPart::CXX17:
// CLANG-UPGRADE-CHECK: Change to "gnu++17"/"c++17" for clang 5.0.
opts << (gnuExtensions ? QLatin1String("-std=gnu++1z") : QLatin1String("-std=c++1z"));
opts << (gnuExtensions ? QLatin1String("-std=gnu++17") : QLatin1String("-std=c++17"));
break;
}
......@@ -326,24 +323,39 @@ void CompilerOptionsBuilder::addMsvcCompatibilityVersion()
static QStringList languageFeatureMacros()
{
// CLANG-UPGRADE-CHECK: Update known language features macros.
// Collected with:
// $ CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
// $ D:\usr\llvm-3.8.0\bin\clang++.exe -fms-compatibility-version=19 -std=c++1y -dM -E D:\empty.cpp | grep __cpp_
// Collected with the following command line.
// * Use latest -fms-compatibility-version and -std possible.
// * Compatibility version 19 vs 1910 did not matter.
// $ clang++ -fms-compatibility-version=19 -std=c++1z -dM -E D:\empty.cpp | grep __cpp_
static QStringList macros{
QLatin1String("__cpp_aggregate_bases"),
QLatin1String("__cpp_aggregate_nsdmi"),
QLatin1String("__cpp_alias_templates"),
QLatin1String("__cpp_aligned_new"),
QLatin1String("__cpp_attributes"),
QLatin1String("__cpp_binary_literals"),
QLatin1String("__cpp_capture_star_this"),
QLatin1String("__cpp_constexpr"),
QLatin1String("__cpp_decltype"),
QLatin1String("__cpp_decltype_auto"),
QLatin1String("__cpp_deduction_guides"),
QLatin1String("__cpp_delegating_constructors"),
QLatin1String("__cpp_digit_separators"),
QLatin1String("__cpp_enumerator_attributes"),
QLatin1String("__cpp_exceptions"),
QLatin1String("__cpp_fold_expressions"),
QLatin1String("__cpp_generic_lambdas"),
QLatin1String("__cpp_hex_float"),
QLatin1String("__cpp_if_constexpr"),
QLatin1String("__cpp_inheriting_constructors"),
QLatin1String("__cpp_init_captures"),
QLatin1String("__cpp_initializer_lists"),
QLatin1String("__cpp_inline_variables"),
QLatin1String("__cpp_lambdas"),
QLatin1String("__cpp_namespace_attributes"),
QLatin1String("__cpp_nested_namespace_definitions"),
QLatin1String("__cpp_noexcept_function_type"),
QLatin1String("__cpp_nontype_template_args"),
QLatin1String("__cpp_nsdmi"),
QLatin1String("__cpp_range_based_for"),
QLatin1String("__cpp_raw_strings"),
......@@ -352,11 +364,15 @@ static QStringList languageFeatureMacros()
QLatin1String("__cpp_rtti"),
QLatin1String("__cpp_rvalue_references"),
QLatin1String("__cpp_static_assert"),
QLatin1String("__cpp_structured_bindings"),
QLatin1String("__cpp_template_auto"),
QLatin1String("__cpp_threadsafe_static_init"),
QLatin1String("__cpp_unicode_characters"),
QLatin1String("__cpp_unicode_literals"),
QLatin1String("__cpp_user_defined_literals"),
QLatin1String("__cpp_variable_templates"),
QLatin1String("__cpp_variadic_templates"),
QLatin1String("__cpp_variadic_using"),
};
return macros;
......@@ -366,21 +382,13 @@ void CompilerOptionsBuilder::undefineCppLanguageFeatureMacrosForMsvc2015()
{
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
&& m_projectPart.isMsvc2015Toolchain) {
// Undefine the language feature macros that are pre-defined in clang-cl 3.8.0,
// but not in MSVC2015's cl.exe.
// Undefine the language feature macros that are pre-defined in clang-cl,
// but not in MSVC's cl.exe.
foreach (const QString &macroName, languageFeatureMacros())
m_options.append(undefineOption() + macroName);
}
}
void CompilerOptionsBuilder::addDefineFloat128ForMingw()
{
// CLANG-UPGRADE-CHECK: Workaround still needed?
// https://llvm.org/bugs/show_bug.cgi?id=30685
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID)
addDefine({"__float128", "short", ProjectExplorer::MacroType::Define});
}
QString CompilerOptionsBuilder::includeDirOption() const
{
return QLatin1String("-I");
......
......@@ -70,7 +70,6 @@ public:
void addMsvcCompatibilityVersion();
void undefineCppLanguageFeatureMacrosForMsvc2015();
void addDefineFloat128ForMingw();
void addProjectConfigFileInclude();
void undefineClangVersionMacrosForMsvc();
......
......@@ -119,20 +119,20 @@ LIBCLANG_LIBS += $${CLANG_LIB}
QTC_NO_CLANG_LIBTOOLING=$$(QTC_NO_CLANG_LIBTOOLING)
isEmpty(QTC_NO_CLANG_LIBTOOLING) {
QTC_FORCE_CLANG_LIBTOOLING = $$(QTC_FORCE_CLANG_LIBTOOLING)
versionIsEqual($$LLVM_VERSION, 3, 9)|!isEmpty(QTC_FORCE_CLANG_LIBTOOLING) {
versionIsEqual($$LLVM_VERSION, 5, 0)|!isEmpty(QTC_FORCE_CLANG_LIBTOOLING) {
!contains(QMAKE_DEFAULT_LIBDIRS, $$LLVM_LIBDIR): LIBTOOLING_LIBS = -L$${LLVM_LIBDIR}
LIBTOOLING_LIBS += $$CLANGTOOLING_LIBS $$LLVM_STATIC_LIBS
contains(QMAKE_DEFAULT_INCDIRS, $$LLVM_INCLUDEPATH): LLVM_INCLUDEPATH =
} else {
warning("Clang LibTooling is disabled because only version 3.9 is supported.")
warning("Clang LibTooling is disabled because only version 5.0 is supported.")
}
} else {
warning("Clang LibTooling is disabled.")
}
isEmpty(LLVM_VERSION): error("Cannot determine clang version at $$LLVM_INSTALL_DIR")
!versionIsAtLeast($$LLVM_VERSION, 3, 9, 0): { # CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
error("LLVM/Clang version >= 3.9.0 required, version provided: $$LLVM_VERSION")
!versionIsAtLeast($$LLVM_VERSION, 5, 0, 0): { # CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
error("LLVM/Clang version >= 5.0.0 required, version provided: $$LLVM_VERSION")
}
# Remove unwanted flags. It is a workaround for linking. It is not intended for cross compiler linking.
......
......@@ -36,9 +36,4 @@ enum class PreferredTranslationUnit
LastUninitialized,
};
// CLANG-UPGRADE-CHECK: Remove IS_SUSPEND_SUPPORTED once we require clang >= 5.0
#if defined(CINDEX_VERSION_HAS_BACKPORTED_SUSPEND) || CINDEX_VERSION_MINOR >= 41
# define IS_SUSPEND_SUPPORTED
#endif
} // namespace ClangBackEnd
......@@ -64,7 +64,6 @@ void categorizeHotColdDocuments(int hotDocumentsSize,
}
}
#ifdef IS_SUSPEND_SUPPORTED
static int hotDocumentsSize()
{
static int hotDocuments = -1;
......@@ -108,17 +107,11 @@ static bool isResumable(const Document &document)
&& document.isVisibleInEditor();
}
#endif // IS_SUSPEND_SUPPORTED
SuspendResumeJobs createSuspendResumeJobs(const std::vector<Document> &documents,
int customHotDocumentSize)
{
Q_UNUSED(documents);
Q_UNUSED(customHotDocumentSize);
SuspendResumeJobs jobs;
#ifdef IS_SUSPEND_SUPPORTED
std::vector<Document> hotDocuments;
std::vector<Document> coldDocuments;
......@@ -134,7 +127,6 @@ SuspendResumeJobs createSuspendResumeJobs(const std::vector<Document> &documents
const std::vector<Document> toResume = Utils::filtered(hotDocuments, &isResumable);
for (const Document &document : toResume)
jobs += createJobs(document, JobRequest::Type::ResumeDocument);
#endif // IS_SUSPEND_SUPPORTED
return jobs;
}
......
......@@ -108,12 +108,7 @@ TranslationUnitUpdateResult TranslationUnit::reparse(
bool TranslationUnit::suspend() const
{
#ifdef IS_SUSPEND_SUPPORTED
return clang_suspendTranslationUnit(cxTranslationUnit());
#else
QTC_CHECK(false && "clang_suspendTranslationUnit() not supported.");
return false;
#endif
}
TranslationUnit::CodeCompletionResult TranslationUnit::complete(
......
......@@ -50,20 +50,21 @@ public:
{
}
bool BeginSourceFileAction(clang::CompilerInstance &compilerInstance,
llvm::StringRef filename) override
bool BeginSourceFileAction(clang::CompilerInstance &compilerInstance) override
{
if (clang::PreprocessOnlyAction::BeginSourceFileAction(compilerInstance, filename)) {
if (clang::PreprocessOnlyAction::BeginSourceFileAction(compilerInstance)) {
auto &preprocessor = compilerInstance.getPreprocessor();
auto &headerSearch = preprocessor.getHeaderSearchInfo();
preprocessor.SetSuppressIncludeNotFoundError(true);
auto macroPreprocessorCallbacks = new CollectIncludesPreprocessorCallbacks(headerSearch,
m_includeIds,
m_filePathCache,
m_excludedIncludeUID,
m_alreadyIncludedFileUIDs);
auto macroPreprocessorCallbacks = new CollectIncludesPreprocessorCallbacks(
headerSearch,
m_includeIds,
m_filePathCache,
m_excludedIncludeUID,
m_alreadyIncludedFileUIDs,
compilerInstance.getSourceManager());
preprocessor.addPPCallbacks(std::unique_ptr<clang::PPCallbacks>(macroPreprocessorCallbacks));
......
......@@ -25,6 +25,7 @@
#pragma once
#include "sourcelocationsutils.h"
#include <filepathcachinginterface.h>
#include <filepathid.h>
......@@ -51,15 +52,17 @@ public:
FilePathIds &includeIds,
FilePathCachingInterface &filePathCache,
const std::vector<uint> &excludedIncludeUID,
std::vector<uint> &alreadyIncludedFileUIDs)
std::vector<uint> &alreadyIncludedFileUIDs,
clang::SourceManager &sourceManager)
: m_headerSearch(headerSearch),
m_includeIds(includeIds),
m_filePathCache(filePathCache),
m_excludedIncludeUID(excludedIncludeUID),
m_alreadyIncludedFileUIDs(alreadyIncludedFileUIDs)
m_alreadyIncludedFileUIDs(alreadyIncludedFileUIDs),
m_sourceManager(sourceManager)
{}
void InclusionDirective(clang::SourceLocation /*hashLocation*/,
void InclusionDirective(clang::SourceLocation hashLocation,
const clang::Token &/*includeToken*/,
llvm::StringRef /*fileName*/,
bool /*isAngled*/,
......@@ -71,8 +74,9 @@ public:
{
if (!m_skipInclude && file) {
auto fileUID = file->getUID();
if (isNotInExcludedIncludeUID(fileUID)) {
flagIncludeAlreadyRead(file);
auto sourceFileID = m_sourceManager.getFileID(hashLocation);
auto sourceFileUID = m_sourceManager.getFileEntryForID(sourceFileID)->getUID();
if (isNotInExcludedIncludeUID(fileUID) && isNotAlreadyIncluded(sourceFileUID).first) {
auto notAlreadyIncluded = isNotAlreadyIncluded(fileUID);
if (notAlreadyIncluded.first) {
......@@ -142,35 +146,13 @@ public:
return {range.first == range.second, range.first};
}
void flagIncludeAlreadyRead(const clang::FileEntry *file)
{
auto &headerFileInfo = m_headerSearch.getFileInfo(file);
headerFileInfo.isImport = true;
++headerFileInfo.NumIncludes;
}
static Utils::PathString fromNativePath(Utils::PathString &&filePath)
{
#ifdef _WIN32
if (filePath.startsWith("\\\\?\\"))
filePath = Utils::PathString(filePath.mid(4));
filePath.replace('\\', '/');
#endif
return std::move(filePath);
}
static Utils::PathString filePathFromFile(const clang::FileEntry *file)
{
clang::StringRef realPath = file->tryGetRealPathName();
if (!realPath.empty())
return fromNativePath({realPath.data(), realPath.size()});
return fromNativePath(realPath);
#if LLVM_VERSION_MAJOR >= 4
return fromNativePath({file->getName().data(), file->getName().size()});
#else
return fromNativePath(file->getName());
#endif
return fromNativePath(absolutePath(file->getName()));
}
private:
......@@ -179,6 +161,7 @@ private:
FilePathCachingInterface &m_filePathCache;
const std::vector<uint> &m_excludedIncludeUID;
std::vector<uint> &m_alreadyIncludedFileUIDs;
clang::SourceManager &m_sourceManager;
bool m_skipInclude = false;
};
......
......@@ -46,12 +46,7 @@ public:
{}
bool runInvocation(
#if LLVM_VERSION_MAJOR >= 4
std::shared_ptr<clang::CompilerInvocation> invocation,
#else
clang::CompilerInvocation *invocation,
#endif
bool runInvocation(std::shared_ptr<clang::CompilerInvocation> invocation,
clang::FileManager *fileManager,
std::shared_ptr<clang::PCHContainerOperations> pchContainerOperations,
clang::DiagnosticConsumer *diagnosticConsumer) override
......
......@@ -132,7 +132,7 @@ ClangQueryDiagnosticErrorType convertToErrorType(Diagnostics::ErrorType clangErr
ERROR_RETURN_CASE(ParserInvalidToken)
ERROR_RETURN_CASE(ParserMalformedBindExpr)
ERROR_RETURN_CASE(ParserTrailingCode)
ERROR_RETURN_CASE(ParserUnsignedError)
ERROR_RETURN_CASE(ParserNumberError)
ERROR_RETURN_CASE(ParserOverloadedType)
}
......
......@@ -57,7 +57,7 @@ LocationSourceFileCallbacks::LocationSourceFileCallbacks(uint line,
{
}
bool LocationSourceFileCallbacks::handleBeginSource(clang::CompilerInstance &compilerInstance, llvm::StringRef /*fileName*/)
bool LocationSourceFileCallbacks::handleBeginSource(clang::CompilerInstance &compilerInstance)
{
auto &preprocessor = compilerInstance.getPreprocessor();
......
......@@ -48,8 +48,7 @@ class LocationSourceFileCallbacks : public clang::tooling::SourceFileCallbacks
public:
LocationSourceFileCallbacks(uint line, uint column, FilePathCachingInterface &filePathCache);
bool handleBeginSource(clang::CompilerInstance &compilerInstance,
llvm::StringRef fileName) override;
bool handleBeginSource(clang::CompilerInstance &compilerInstance) override;
SourceLocationsContainer takeSourceLocations();
Utils::SmallString takeSymbolName();
......
......@@ -82,11 +82,8 @@ void RefactoringCompilationDatabase::addFile(const std::string &directory,
const std::string &fileName,
const std::vector<std::string> &commandLine)
{
#if LLVM_VERSION_MAJOR >= 4
compileCommands.emplace_back(directory, fileName, commandLine, std::string());
#else
compileCommands.emplace_back(directory, fileName, commandLine);
#endif
compileCommands.emplace_back(directory, fileName, commandLine, llvm::StringRef());
}
} // namespace ClangBackEnd
......@@ -42,9 +42,11 @@ namespace ClangBackEnd {
inline
llvm::SmallString<256> absolutePath(clang::StringRef path)
{
llvm::SmallString<256> absolutePath(path);
llvm::SmallString<256> absolutePath;
if (!llvm::sys::path::is_absolute(absolutePath))
std::error_code errorCode = llvm::sys::fs::real_path(path, absolutePath, true);
if (!errorCode && !llvm::sys::path::is_absolute(absolutePath))
llvm::sys::fs::make_absolute(absolutePath);
return absolutePath;
......
......@@ -183,7 +183,7 @@ TEST_F(DocumentSuspenderResumer, CategorizeWithMoreVisibleDocumentsThanHotDocume
ASSERT_THAT(coldDocuments, IsEmpty());
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateSuspendJobForInvisible))
TEST_F(DocumentSuspenderResumer, CreateSuspendJobForInvisible)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(false);
......@@ -199,7 +199,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateSuspendJob
ASSERT_THAT(jobs, ContainerEq(expectedJobs));
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateSuspendJobForVisible))
TEST_F(DocumentSuspenderResumer, DoNotCreateSuspendJobForVisible)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(false);
......@@ -210,7 +210,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateSuspe
ASSERT_THAT(jobs, IsEmpty());
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateSuspendJobForUnparsed))
TEST_F(DocumentSuspenderResumer, DoNotCreateSuspendJobForUnparsed)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(false);
......@@ -221,7 +221,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateSuspe
ASSERT_THAT(jobs, IsEmpty());
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateSuspendJobsForDocumentWithSupportiveTranslationUnit))
TEST_F(DocumentSuspenderResumer, CreateSuspendJobsForDocumentWithSupportiveTranslationUnit)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(false);
......@@ -238,7 +238,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateSuspendJob
ASSERT_THAT(jobs, ContainerEq(expectedJobs));
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateResumeJob))
TEST_F(DocumentSuspenderResumer, CreateResumeJob)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(true);
......@@ -252,7 +252,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateResumeJob)
ASSERT_THAT(jobs, ContainerEq(expectedJobs));
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateResumeJobForInvisible))
TEST_F(DocumentSuspenderResumer, DoNotCreateResumeJobForInvisible)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(true);
......@@ -263,7 +263,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(DoNotCreateResum
ASSERT_THAT(jobs, IsEmpty());
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateResumeJobsForDocumentWithSupportiveTranslationUnit))
TEST_F(DocumentSuspenderResumer, CreateResumeJobsForDocumentWithSupportiveTranslationUnit)
{
Document document = documents.create({fileContainer1})[0];
document.setIsSuspended(true);
......@@ -279,7 +279,7 @@ TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateResumeJobs
ASSERT_THAT(jobs, ContainerEq(expectedJobs));
}
TEST_F(DocumentSuspenderResumer, DISABLED_WITHOUT_SUSPEND_PATCH(CreateSuspendAndResumeJobs))
TEST_F(DocumentSuspenderResumer, CreateSuspendAndResumeJobs)
{
Document hotDocument = documents.create({fileContainer1})[0];
hotDocument.setIsSuspended(true);
......
......@@ -58,7 +58,7 @@ TEST_F(SuspendDocumentJob, RunAsync)
ASSERT_TRUE(waitUntilJobFinished(job));
}
TEST_F(SuspendDocumentJob, DISABLED_WITHOUT_SUSPEND_PATCH(DocumentIsSuspendedAfterRun))
TEST_F(SuspendDocumentJob, DocumentIsSuspendedAfterRun)
{
document.parse();
job.setContext(jobContext);
......
......@@ -622,9 +622,9 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksFunctionWithOptionalChu
{CodeCompletionChunk::LeftParen, Utf8StringLiteral("(")},
{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int x")},
{CodeCompletionChunk::Comma, Utf8StringLiteral(", "), true},
{CodeCompletionChunk::Placeholder, Utf8StringLiteral("char y"), true},
{CodeCompletionChunk::Placeholder, Utf8StringLiteral("char y = 1"), true},
{CodeCompletionChunk::Comma, Utf8StringLiteral(", "), true},
{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z"), true},
{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z = 5"), true},
{CodeCompletionChunk::RightParen, Utf8StringLiteral(")")}})));
}
......
......@@ -39,9 +39,3 @@
#else
# define DISABLED_ON_CLANG3(x) x
#endif
#ifdef IS_SUSPEND_SUPPORTED
# define DISABLED_WITHOUT_SUSPEND_PATCH(x) x
#else
# define DISABLED_WITHOUT_SUSPEND_PATCH(x) DISABLED_##x
#endif
......@@ -19,7 +19,7 @@ include($$PWD/../../../src/shared/clang/clang_defines.pri)
include($$PWD/../../../src/tools/clangbackend/source/clangbackendclangipc-source.pri)
include($$PWD/../../../src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri)
} else {
DEFINES += CLANG_VERSION=\\\"3.9.1\\\"
DEFINES += CLANG_VERSION=\\\"5.0.0\\\"
DEFINES += "\"CLANG_RESOURCE_DIR=\\\"/usr/include\\\"\""
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment