Author: ibiryukov Date: Wed Jan 31 01:50:21 2018 New Revision: 323859 URL: http://llvm.org/viewvc/llvm-project?rev=323859&view=rev Log: [clangd] Attempt to fix compilation breakage with MSVC.
Modified: clang-tools-extra/trunk/clangd/ClangdServer.cpp Modified: clang-tools-extra/trunk/clangd/ClangdServer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.cpp?rev=323859&r1=323858&r2=323859&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/ClangdServer.cpp (original) +++ clang-tools-extra/trunk/clangd/ClangdServer.cpp Wed Jan 31 01:50:21 2018 @@ -34,21 +34,25 @@ namespace { // Issues an async read of AST and waits for results. template <class Ret, class Func> Ret blockingRunWithAST(TUScheduler &S, PathRef File, Func &&F) { - std::packaged_task<Ret(llvm::Expected<InputsAndAST>)> Task( + // Using Optional to workaround MSVC bug. It requires future<> arguments to + // have default ctor. + std::packaged_task<llvm::Optional<Ret>(llvm::Expected<InputsAndAST>)> Task( std::forward<Func>(F)); auto Future = Task.get_future(); S.runWithAST(File, std::move(Task)); - return Future.get(); + return *Future.get(); } // Issues an async read of preamble and waits for results. template <class Ret, class Func> Ret blockingRunWithPreamble(TUScheduler &S, PathRef File, Func &&F) { - std::packaged_task<Ret(llvm::Expected<InputsAndPreamble>)> Task( - std::forward<Func>(F)); + // Using Optional to workaround MSVC bug. It requires future<> arguments to + // have default ctor. + std::packaged_task<llvm::Optional<Ret>(llvm::Expected<InputsAndPreamble>)> + Task(std::forward<Func>(F)); auto Future = Task.get_future(); S.runWithPreamble(File, std::move(Task)); - return Future.get(); + return *Future.get(); } void ignoreError(llvm::Error Err) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits