diff --git a/src/libs/clangbackendipc/filecontainer.cpp b/src/libs/clangbackendipc/filecontainer.cpp index 9614b0ce481..47337cdc725 100644 --- a/src/libs/clangbackendipc/filecontainer.cpp +++ b/src/libs/clangbackendipc/filecontainer.cpp @@ -54,9 +54,11 @@ FileContainer::FileContainer(const Utf8String &filePath, FileContainer::FileContainer(const Utf8String &filePath, const Utf8String &projectPartId, + const Utf8StringVector &fileArguments, quint32 documentRevision) : filePath_(filePath), projectPartId_(projectPartId), + fileArguments_(fileArguments), documentRevision_(documentRevision), hasUnsavedFileContent_(false) { @@ -72,6 +74,11 @@ const Utf8String &FileContainer::projectPartId() const return projectPartId_; } +const Utf8StringVector &FileContainer::fileArguments() const +{ + return fileArguments_; +} + const Utf8String &FileContainer::unsavedFileContent() const { return unsavedFileContent_; @@ -91,6 +98,7 @@ QDataStream &operator<<(QDataStream &out, const FileContainer &container) { out << container.filePath_; out << container.projectPartId_; + out << container.fileArguments_; out << container.unsavedFileContent_; out << container.documentRevision_; out << container.hasUnsavedFileContent_; @@ -102,6 +110,7 @@ QDataStream &operator>>(QDataStream &in, FileContainer &container) { in >> container.filePath_; in >> container.projectPartId_; + in >> container.fileArguments_; in >> container.unsavedFileContent_; in >> container.documentRevision_; in >> container.hasUnsavedFileContent_; @@ -127,6 +136,7 @@ QDebug operator<<(QDebug debug, const FileContainer &container) debug.nospace() << "FileContainer(" << container.filePath() << ", " << container.projectPartId() << ", " + << container.fileArguments() << ", " << container.documentRevision(); if (container.hasUnsavedFileContent()) { @@ -147,6 +157,7 @@ void PrintTo(const FileContainer &container, ::std::ostream* os) *os << "FileContainer(" << container.filePath().constData() << ", " << container.projectPartId().constData() << ", " + << container.fileArguments().constData() << ", " << container.documentRevision(); if (container.hasUnsavedFileContent()) diff --git a/src/libs/clangbackendipc/filecontainer.h b/src/libs/clangbackendipc/filecontainer.h index 7039dc7653b..4ca60b9b2bc 100644 --- a/src/libs/clangbackendipc/filecontainer.h +++ b/src/libs/clangbackendipc/filecontainer.h @@ -34,6 +34,7 @@ #include #include +#include #include @@ -54,10 +55,12 @@ public: quint32 documentRevision = 0); FileContainer(const Utf8String &filePath, const Utf8String &projectPartId, + const Utf8StringVector &fileArguments, quint32 documentRevision); const Utf8String &filePath() const; const Utf8String &projectPartId() const; + const Utf8StringVector &fileArguments() const; const Utf8String &unsavedFileContent() const; bool hasUnsavedFileContent() const; quint32 documentRevision() const; @@ -65,6 +68,7 @@ public: private: Utf8String filePath_; Utf8String projectPartId_; + Utf8StringVector fileArguments_; Utf8String unsavedFileContent_; quint32 documentRevision_; bool hasUnsavedFileContent_ = false; diff --git a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp index a6606712cd0..f1dd3c47e15 100644 --- a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp +++ b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp @@ -310,8 +310,8 @@ void IpcCommunicator::registerEmptyProjectForProjectLessFiles() { QTC_CHECK(m_connection.isConnected()); registerProjectPartsForEditor({ClangBackEnd::ProjectPartContainer( - Utf8String(), - Utf8StringVector())}); + Utf8String(), + Utf8StringVector())}); } void IpcCommunicator::registerCurrentProjectParts() @@ -466,6 +466,7 @@ void IpcCommunicator::requestDiagnostics(Core::IDocument *document) requestDiagnostics(FileContainer(filePath, projectPartId, + Utf8StringVector(), textDocument->document()->revision())); } diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index fe511ee560a..43617439652 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -294,13 +295,32 @@ void ClangEditorDocumentProcessor::requestDiagnostics() } } +static CppTools::ProjectPart projectPartForLanguageOption(CppTools::ProjectPart *projectPart) +{ + if (projectPart) + return *projectPart; + return *CppTools::CppModelManager::instance()->fallbackProjectPart().data(); +} + +static QStringList languageOptions(const QString &filePath, CppTools::ProjectPart *projectPart) +{ + const auto theProjectPart = CppTools::ProjectPart::Ptr( + new CppTools::ProjectPart(projectPartForLanguageOption(projectPart))); + CppTools::CompilerOptionsBuilder builder(theProjectPart); + builder.addLanguageOption(CppTools::ProjectFile::classify(filePath)); + + return builder.options(); +} + ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainer(CppTools::ProjectPart *projectPart) const { - if (projectPart) - return {filePath(), projectPart->id(), revision()}; + const auto projectPartId = projectPart + ? Utf8String::fromString(projectPart->id()) + : Utf8String(); + const auto theLanguageOption = languageOptions(filePath(), projectPart); - return {filePath(), Utf8String(), revision()}; + return {filePath(), projectPartId, Utf8StringVector(theLanguageOption), revision()}; } } // namespace Internal diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 70012ab682c..61e87cf7a92 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -948,7 +948,12 @@ ProjectPart::Ptr CppModelManager::fallbackProjectPart() const part->projectDefines = d->m_definedMacros; part->headerPaths = d->m_headerPaths; part->languageVersion = ProjectPart::CXX14; + + // Do not activate ObjectiveCExtensions since this will lead to the + // "objective-c++" language option for a project-less *.cpp file. part->languageExtensions = ProjectPart::AllExtensions; + part->languageExtensions &= ~ProjectPart::ObjectiveCExtensions; + part->qtVersion = ProjectPart::Qt5; part->updateLanguageFeatures(); diff --git a/src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri b/src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri index e0e49498e3a..73aa363a959 100644 --- a/src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri +++ b/src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri @@ -24,7 +24,8 @@ HEADERS += $$PWD/clangipcserver.h \ $$PWD/fixit.h \ $$PWD/diagnosticsetiterator.h \ $$PWD/clangfilesystemwatcher.h \ - $$PWD/translationunitalreadyexistsexception.h + $$PWD/translationunitalreadyexistsexception.h \ + $$PWD/commandlinearguments.h SOURCES += $$PWD/clangipcserver.cpp \ $$PWD/codecompleter.cpp \ @@ -49,4 +50,5 @@ SOURCES += $$PWD/clangipcserver.cpp \ $$PWD/sourcerange.cpp \ $$PWD/fixit.cpp \ $$PWD/clangfilesystemwatcher.cpp \ - $$PWD/translationunitalreadyexistsexception.cpp + $$PWD/translationunitalreadyexistsexception.cpp \ + $$PWD/commandlinearguments.cpp diff --git a/src/tools/clangbackend/ipcsource/commandlinearguments.cpp b/src/tools/clangbackend/ipcsource/commandlinearguments.cpp new file mode 100644 index 00000000000..120fe9e2101 --- /dev/null +++ b/src/tools/clangbackend/ipcsource/commandlinearguments.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "commandlinearguments.h" + +namespace ClangBackEnd { + +CommandLineArguments::CommandLineArguments(const std::vector &projectPartArguments, + const Utf8StringVector &fileArguments, + bool addVerboseOption) +{ + const auto elementsToReserve = projectPartArguments.size() + + uint(fileArguments.size()) + + (addVerboseOption ? 1 : 0); + m_arguments.reserve(elementsToReserve); + + m_arguments = projectPartArguments; + for (const auto &argument : fileArguments) + m_arguments.push_back(argument.constData()); + if (addVerboseOption) + m_arguments.push_back("-v"); +} + +const char * const *CommandLineArguments::data() const +{ + return m_arguments.data(); +} + +int CommandLineArguments::count() const +{ + return int(m_arguments.size()); +} + +} // namespace ClangBackEnd diff --git a/src/tools/clangbackend/ipcsource/commandlinearguments.h b/src/tools/clangbackend/ipcsource/commandlinearguments.h new file mode 100644 index 00000000000..a7a4e5aafd9 --- /dev/null +++ b/src/tools/clangbackend/ipcsource/commandlinearguments.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef CLANGBACKEND_COMMANDLINEARGUMENTS_H +#define CLANGBACKEND_COMMANDLINEARGUMENTS_H + +#include + +#include + +namespace ClangBackEnd { + +class CommandLineArguments +{ +public: + CommandLineArguments(const std::vector &projectPartArguments, + const Utf8StringVector &fileArguments, + bool addVerboseOption); + + const char * const *data() const; + int count() const; + +private: + std::vector m_arguments; +}; + +} // namespace ClangBackEnd + +#endif // CLANGBACKEND_COMMANDLINEARGUMENTS_H diff --git a/src/tools/clangbackend/ipcsource/translationunit.cpp b/src/tools/clangbackend/ipcsource/translationunit.cpp index 55e14bca55d..5740c854463 100644 --- a/src/tools/clangbackend/ipcsource/translationunit.cpp +++ b/src/tools/clangbackend/ipcsource/translationunit.cpp @@ -32,6 +32,7 @@ #include "clangstring.h" #include "codecompleter.h" +#include "commandlinearguments.h" #include "diagnosticset.h" #include "projectpart.h" #include "translationunitfilenotexitexception.h" @@ -50,6 +51,11 @@ static Q_LOGGING_CATEGORY(verboseLibLog, "qtc.clangbackend.verboselib"); +static bool isVerboseModeEnabled() +{ + return verboseLibLog().isDebugEnabled(); +} + namespace ClangBackEnd { class TranslationUnitData @@ -57,6 +63,7 @@ class TranslationUnitData public: TranslationUnitData(const Utf8String &filePath, const ProjectPart &projectPart, + const Utf8StringVector &fileArguments, TranslationUnits &translationUnits); ~TranslationUnitData(); @@ -65,6 +72,7 @@ public: time_point lastProjectPartChangeTimePoint; QSet dependedFilePaths; ProjectPart projectPart; + Utf8StringVector fileArguments; Utf8String filePath; CXTranslationUnit translationUnit = nullptr; CXIndex index = nullptr; @@ -75,10 +83,12 @@ public: TranslationUnitData::TranslationUnitData(const Utf8String &filePath, const ProjectPart &projectPart, + const Utf8StringVector &fileArguments, TranslationUnits &translationUnits) : translationUnits(translationUnits), lastProjectPartChangeTimePoint(std::chrono::steady_clock::now()), projectPart(projectPart), + fileArguments(fileArguments), filePath(filePath) { dependedFilePaths.insert(filePath); @@ -92,9 +102,13 @@ TranslationUnitData::~TranslationUnitData() TranslationUnit::TranslationUnit(const Utf8String &filePath, const ProjectPart &projectPart, + const Utf8StringVector &fileArguments, TranslationUnits &translationUnits, FileExistsCheck fileExistsCheck) - : d(std::make_shared(filePath, projectPart, translationUnits)) + : d(std::make_shared(filePath, + projectPart, + fileArguments, + translationUnits)) { if (fileExistsCheck == CheckIfFileExists) checkIfFileExists(); @@ -122,7 +136,7 @@ CXIndex TranslationUnit::index() const checkIfNull(); if (!d->index) { - const bool displayDiagnostics = verboseLibLog().isDebugEnabled(); + const bool displayDiagnostics = isVerboseModeEnabled(); d->index = clang_createIndex(1, displayDiagnostics); } @@ -261,10 +275,14 @@ void TranslationUnit::createTranslationUnitIfNeeded() const { if (!d->translationUnit) { d->translationUnit = CXTranslationUnit(); + + const bool verboseMode = isVerboseModeEnabled(); + const CommandLineArguments args(d->projectPart.arguments(), d->fileArguments, verboseMode); + CXErrorCode errorCode = clang_parseTranslationUnit2(index(), d->filePath.constData(), - d->projectPart.cxArguments(), - d->projectPart.argumentCount(), + args.data(), + args.count(), unsavedFiles().cxUnsavedFiles(), unsavedFiles().count(), defaultOptions(), diff --git a/src/tools/clangbackend/ipcsource/translationunit.h b/src/tools/clangbackend/ipcsource/translationunit.h index 2bd1f153a0a..afad398b22f 100644 --- a/src/tools/clangbackend/ipcsource/translationunit.h +++ b/src/tools/clangbackend/ipcsource/translationunit.h @@ -66,6 +66,7 @@ public: TranslationUnit() = default; TranslationUnit(const Utf8String &filePath, const ProjectPart &projectPart, + const Utf8StringVector &fileArguments, TranslationUnits &translationUnits, FileExistsCheck fileExistsCheck = CheckIfFileExists); ~TranslationUnit(); diff --git a/src/tools/clangbackend/ipcsource/translationunits.cpp b/src/tools/clangbackend/ipcsource/translationunits.cpp index b0790ac5738..c542b2d98ca 100644 --- a/src/tools/clangbackend/ipcsource/translationunits.cpp +++ b/src/tools/clangbackend/ipcsource/translationunits.cpp @@ -200,6 +200,7 @@ void TranslationUnits::createTranslationUnit(const FileContainer &fileContainer) if (findIterator == translationUnits_.end()) { translationUnits_.push_back(TranslationUnit(fileContainer.filePath(), projectParts.project(fileContainer.projectPartId()), + fileContainer.fileArguments(), *this, checkIfFileExists)); translationUnits_.back().setDocumentRevision(fileContainer.documentRevision()); diff --git a/tests/unit/unittest/clangcodecompleteresultstest.cpp b/tests/unit/unittest/clangcodecompleteresultstest.cpp index dd7d3264514..c91c80ec932 100644 --- a/tests/unit/unittest/clangcodecompleteresultstest.cpp +++ b/tests/unit/unittest/clangcodecompleteresultstest.cpp @@ -58,6 +58,7 @@ TEST(ClangCodeCompleteResults, GetData) ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), projectPart, + Utf8StringVector(), translationUnits); CXCodeCompleteResults *cxCodeCompleteResults = clang_codeCompleteAt(translationUnit.cxTranslationUnit(), translationUnit.filePath().constData(), 49, 1, 0, 0, 0); @@ -83,6 +84,7 @@ TEST(ClangCodeCompleteResults, MoveClangCodeCompleteResults) ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), projectPart, + Utf8StringVector(), translationUnits); CXCodeCompleteResults *cxCodeCompleteResults = clang_codeCompleteAt(translationUnit.cxTranslationUnit(), translationUnit.filePath().constData(), 49, 1, 0, 0, 0); diff --git a/tests/unit/unittest/clangipcservertest.cpp b/tests/unit/unittest/clangipcservertest.cpp index 93182ab8d92..175e19e5213 100644 --- a/tests/unit/unittest/clangipcservertest.cpp +++ b/tests/unit/unittest/clangipcservertest.cpp @@ -259,7 +259,8 @@ TEST_F(ClangIpcServer, GetCodeCompletionForUnsavedFile) TEST_F(ClangIpcServer, GetNoCodeCompletionAfterRemovingUnsavedFile) { - clangServer.updateTranslationUnitsForEditor(UpdateTranslationUnitsForEditorMessage({FileContainer(functionTestFilePath, projectPartId, 74)})); + clangServer.updateTranslationUnitsForEditor(UpdateTranslationUnitsForEditorMessage( + {FileContainer(functionTestFilePath, projectPartId, Utf8StringVector(), 74)})); CompleteCodeMessage completeCodeMessage(functionTestFilePath, 20, 1, diff --git a/tests/unit/unittest/codecompletionsextractortest.cpp b/tests/unit/unittest/codecompletionsextractortest.cpp index c0e79f75057..42b5a6152b4 100644 --- a/tests/unit/unittest/codecompletionsextractortest.cpp +++ b/tests/unit/unittest/codecompletionsextractortest.cpp @@ -160,13 +160,13 @@ protected: ClangBackEnd::ProjectParts projects; ClangBackEnd::UnsavedFiles unsavedFiles; ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; - TranslationUnit functionTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_function.cpp"), project, translationUnits}; - TranslationUnit variableTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_variable.cpp"), project, translationUnits}; - TranslationUnit classTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_class.cpp"), project, translationUnits}; - TranslationUnit namespaceTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_namespace.cpp"), project, translationUnits}; - TranslationUnit enumerationTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_enumeration.cpp"), project, translationUnits}; - TranslationUnit constructorTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_constructor.cpp"), project, translationUnits}; - TranslationUnit briefCommentTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_brief_comment.cpp"), project, translationUnits}; + TranslationUnit functionTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_function.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit variableTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_variable.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit classTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_class.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit namespaceTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_namespace.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit enumerationTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_enumeration.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit constructorTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_constructor.cpp"), project, Utf8StringVector(), translationUnits}; + TranslationUnit briefCommentTranslationUnit{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_brief_comment.cpp"), project, Utf8StringVector(), translationUnits}; }; TEST_F(CodeCompletionsExtractor, Function) @@ -527,7 +527,7 @@ TEST_F(CodeCompletionsExtractor, NotAvailableFunction) TEST_F(CodeCompletionsExtractor, UnsavedFile) { - TranslationUnit translationUnit(Utf8String::fromUtf8(TESTDATA_DIR"/complete_extractor_function.cpp"), project, translationUnits); + TranslationUnit translationUnit(Utf8String::fromUtf8(TESTDATA_DIR"/complete_extractor_function.cpp"), project, Utf8StringVector(), translationUnits); unsavedFiles.createOrUpdate({unsavedDataFileContainer(TESTDATA_DIR"/complete_extractor_function.cpp", TESTDATA_DIR"/complete_extractor_function_unsaved.cpp")}); ClangCodeCompleteResults completeResults(getResults(translationUnit, 20)); @@ -542,7 +542,7 @@ TEST_F(CodeCompletionsExtractor, UnsavedFile) TEST_F(CodeCompletionsExtractor, ChangeUnsavedFile) { - TranslationUnit translationUnit(Utf8String::fromUtf8(TESTDATA_DIR"/complete_extractor_function.cpp"), project, translationUnits); + TranslationUnit translationUnit(Utf8String::fromUtf8(TESTDATA_DIR"/complete_extractor_function.cpp"), project, Utf8StringVector(), translationUnits); unsavedFiles.createOrUpdate({unsavedDataFileContainer(TESTDATA_DIR"/complete_extractor_function.cpp", TESTDATA_DIR"/complete_extractor_function_unsaved.cpp")}); ClangCodeCompleteResults completeResults(getResults(translationUnit, 20)); diff --git a/tests/unit/unittest/diagnosticsettest.cpp b/tests/unit/unittest/diagnosticsettest.cpp index 3949bbcbc88..6b5da58a10f 100644 --- a/tests/unit/unittest/diagnosticsettest.cpp +++ b/tests/unit/unittest/diagnosticsettest.cpp @@ -58,6 +58,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit{Utf8StringLiteral(TESTDATA_DIR"/diagnostic_diagnosticset.cpp"), projectPart, + Utf8StringVector(), translationUnits}; }; diff --git a/tests/unit/unittest/diagnostictest.cpp b/tests/unit/unittest/diagnostictest.cpp index 9ad2fbecdc9..11294493107 100644 --- a/tests/unit/unittest/diagnostictest.cpp +++ b/tests/unit/unittest/diagnostictest.cpp @@ -83,6 +83,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit{Utf8StringLiteral(TESTDATA_DIR"/diagnostic_diagnostic.cpp"), projectPart, + Utf8StringVector(), translationUnits}; DiagnosticSet diagnosticSet{translationUnit.diagnostics()}; ::Diagnostic diagnostic{diagnosticSet.back()}; diff --git a/tests/unit/unittest/fixittest.cpp b/tests/unit/unittest/fixittest.cpp index e5327f6279f..6942bf6e323 100644 --- a/tests/unit/unittest/fixittest.cpp +++ b/tests/unit/unittest/fixittest.cpp @@ -82,6 +82,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit{Utf8StringLiteral(TESTDATA_DIR"/diagnostic_semicolon_fixit.cpp"), projectPart, + Utf8StringVector(), translationUnits}; DiagnosticSet diagnosticSet{translationUnit.diagnostics()}; Diagnostic diagnostic{diagnosticSet.front()}; diff --git a/tests/unit/unittest/sourcelocationtest.cpp b/tests/unit/unittest/sourcelocationtest.cpp index d3b5a2deb61..9db922c282b 100644 --- a/tests/unit/unittest/sourcelocationtest.cpp +++ b/tests/unit/unittest/sourcelocationtest.cpp @@ -63,6 +63,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit{Utf8StringLiteral(TESTDATA_DIR"/diagnostic_source_location.cpp"), projectPart, + Utf8StringVector(), translationUnits}; DiagnosticSet diagnosticSet{translationUnit.diagnostics()}; Diagnostic diagnostic{diagnosticSet.front()}; diff --git a/tests/unit/unittest/sourcerangetest.cpp b/tests/unit/unittest/sourcerangetest.cpp index df9c4a37099..771bd49ccff 100644 --- a/tests/unit/unittest/sourcerangetest.cpp +++ b/tests/unit/unittest/sourcerangetest.cpp @@ -82,6 +82,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; TranslationUnit translationUnit{Utf8StringLiteral(TESTDATA_DIR"/diagnostic_source_range.cpp"), projectPart, + Utf8StringVector(), translationUnits}; DiagnosticSet diagnosticSet{translationUnit.diagnostics()}; Diagnostic diagnostic{diagnosticSet.front()}; diff --git a/tests/unit/unittest/translationunitstest.cpp b/tests/unit/unittest/translationunitstest.cpp index d291c368b09..ec2dfb9951d 100644 --- a/tests/unit/unittest/translationunitstest.cpp +++ b/tests/unit/unittest/translationunitstest.cpp @@ -129,7 +129,7 @@ TEST_F(TranslationUnits, DoNotThrowForAddingNonExistingFileWithUnsavedContent) TEST_F(TranslationUnits, Add) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); translationUnits.create({fileContainer}); @@ -139,7 +139,7 @@ TEST_F(TranslationUnits, Add) TEST_F(TranslationUnits, ThrowForCreatingAnExistingTranslationUnit) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); translationUnits.create({fileContainer}); ASSERT_THROW(translationUnits.create({fileContainer}), @@ -148,15 +148,15 @@ TEST_F(TranslationUnits, ThrowForCreatingAnExistingTranslationUnit) TEST_F(TranslationUnits, ThrowForUpdatingANonExistingTranslationUnit) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); ASSERT_THROW(translationUnits.update({fileContainer}), ClangBackEnd::TranslationUnitDoesNotExistException); } TEST_F(TranslationUnits, Update) { - ClangBackEnd::FileContainer createFileContainer(filePath, projectPartId, 74u); - ClangBackEnd::FileContainer updateFileContainer(filePath, Utf8String(), 75u); + ClangBackEnd::FileContainer createFileContainer(filePath, projectPartId, Utf8StringVector(), 74u); + ClangBackEnd::FileContainer updateFileContainer(filePath, Utf8String(), Utf8StringVector(), 75u); translationUnits.create({createFileContainer}); translationUnits.update({updateFileContainer}); @@ -167,8 +167,8 @@ TEST_F(TranslationUnits, Update) TEST_F(TranslationUnits, UpdateUnsavedFileAndCheckForReparse) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); - ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); + ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, Utf8StringVector(), 74u); ClangBackEnd::FileContainer headerContainerWithUnsavedContent(headerPath, projectPartId, Utf8String(), true, 75u); translationUnits.create({fileContainer, headerContainer}); translationUnits.translationUnit(filePath, projectPartId).cxTranslationUnit(); @@ -180,8 +180,8 @@ TEST_F(TranslationUnits, UpdateUnsavedFileAndCheckForReparse) TEST_F(TranslationUnits, UpdateUnsavedFileAndCheckForDiagnostics) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); - ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); + ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, Utf8StringVector(), 74u); ClangBackEnd::FileContainer headerContainerWithUnsavedContent(headerPath, projectPartId, Utf8String(), true, 75u); translationUnits.create({fileContainer, headerContainer}); translationUnits.translationUnit(filePath, projectPartId).diagnostics(); @@ -193,8 +193,8 @@ TEST_F(TranslationUnits, UpdateUnsavedFileAndCheckForDiagnostics) TEST_F(TranslationUnits, RemoveFileAndCheckForDiagnostics) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); - ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); + ClangBackEnd::FileContainer headerContainer(headerPath, projectPartId, Utf8StringVector(), 74u); ClangBackEnd::FileContainer headerContainerWithUnsavedContent(headerPath, projectPartId, Utf8String(), true, 75u); translationUnits.create({fileContainer, headerContainer}); translationUnits.translationUnit(filePath, projectPartId).diagnostics(); @@ -206,7 +206,7 @@ TEST_F(TranslationUnits, RemoveFileAndCheckForDiagnostics) TEST_F(TranslationUnits, DontGetNewerFileContainerIfRevisionIsTheSame) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); translationUnits.create({fileContainer}); auto newerFileContainers = translationUnits.newerFileContainers({fileContainer}); @@ -216,8 +216,8 @@ TEST_F(TranslationUnits, DontGetNewerFileContainerIfRevisionIsTheSame) TEST_F(TranslationUnits, GetNewerFileContainerIfRevisionIsDifferent) { - ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, 74u); - ClangBackEnd::FileContainer newerContainer(filePath, projectPartId, 75u); + ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u); + ClangBackEnd::FileContainer newerContainer(filePath, projectPartId, Utf8StringVector(), 75u); translationUnits.create({fileContainer}); auto newerFileContainers = translationUnits.newerFileContainers({newerContainer}); @@ -263,6 +263,7 @@ TEST_F(TranslationUnits, RemoveAllValidIfExceptionIsThrown) ASSERT_THAT(translationUnits.translationUnits(), Not(Contains(TranslationUnit(filePath, projects.project(projectPartId), + Utf8StringVector(), translationUnits)))); } diff --git a/tests/unit/unittest/translationunittest.cpp b/tests/unit/unittest/translationunittest.cpp index f03ff889991..ebd5027b9dc 100644 --- a/tests/unit/unittest/translationunittest.cpp +++ b/tests/unit/unittest/translationunittest.cpp @@ -82,6 +82,7 @@ protected: ClangBackEnd::TranslationUnits translationUnits{projects, unsavedFiles}; ::TranslationUnit translationUnit{translationUnitFilePath, projectPart, + Utf8StringVector(), translationUnits}; }; @@ -94,13 +95,13 @@ TEST_F(TranslationUnit, DefaultTranslationUnitIsInvalid) TEST_F(TranslationUnit, ThrowExceptionForNonExistingFilePath) { - ASSERT_THROW(::TranslationUnit(Utf8StringLiteral("file.cpp"), projectPart, translationUnits), + ASSERT_THROW(::TranslationUnit(Utf8StringLiteral("file.cpp"), projectPart, Utf8StringVector(), translationUnits), ClangBackEnd::TranslationUnitFileNotExitsException); } TEST_F(TranslationUnit, ThrowNoExceptionForNonExistingFilePathIfDoNotCheckIfFileExistsIsSet) { - ASSERT_NO_THROW(::TranslationUnit(Utf8StringLiteral("file.cpp"), projectPart, translationUnits, ::TranslationUnit::DoNotCheckIfFileExists)); + ASSERT_NO_THROW(::TranslationUnit(Utf8StringLiteral("file.cpp"), projectPart, Utf8StringVector(), translationUnits, ::TranslationUnit::DoNotCheckIfFileExists)); } TEST_F(TranslationUnit, TranslationUnitIsValid) @@ -274,6 +275,7 @@ TEST_F(TranslationUnit, DeletedFileShouldBeNotSetDirty) EXPECT_TRUE(temporaryFile.write(readContentFromTranslationUnitFile())); ::TranslationUnit translationUnit(temporaryFile.fileName(), projectPart, + Utf8StringVector(), translationUnits); return translationUnit;