diff --git a/clang-tools-extra/clangd/ModulesBuilder.cpp b/clang-tools-extra/clangd/ModulesBuilder.cpp index bee31fe51555e..58b9573281ee9 100644 --- a/clang-tools-extra/clangd/ModulesBuilder.cpp +++ b/clang-tools-extra/clangd/ModulesBuilder.cpp @@ -142,10 +142,14 @@ class ReusablePrerequisiteModules : public PrerequisiteModules { public: ReusablePrerequisiteModules() = default; - ReusablePrerequisiteModules(const ReusablePrerequisiteModules &Other) = - default; + ReusablePrerequisiteModules(const ReusablePrerequisiteModules &Other) + : PrerequisiteModules(Other) { + RequiredModules = Other.RequiredModules; + BuiltModuleNames = Other.BuiltModuleNames; + } + ReusablePrerequisiteModules & - operator=(const ReusablePrerequisiteModules &) = default; + operator=(const ReusablePrerequisiteModules &) = delete; ReusablePrerequisiteModules(ReusablePrerequisiteModules &&) = delete; ReusablePrerequisiteModules operator=(ReusablePrerequisiteModules &&) = delete; @@ -310,7 +314,7 @@ bool ReusablePrerequisiteModules::canReuse( llvm::SmallVector BMIPaths; for (auto &MF : RequiredModules) BMIPaths.push_back(MF->getModuleFilePath()); - return IsModuleFilesUpToDate(BMIPaths, *this, VFS); + return IsModuleFilesUpToDate(std::move(BMIPaths), *this, VFS); } class ModuleFileCache {