This revision was automatically updated to reflect the committed changes.
Closed by commit rG130dbf63ff12: [clangd] Fix broken assertion (authored by 
kadircet).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77664/new/

https://reviews.llvm.org/D77664

Files:
  clang-tools-extra/clangd/TUScheduler.cpp


Index: clang-tools-extra/clangd/TUScheduler.cpp
===================================================================
--- clang-tools-extra/clangd/TUScheduler.cpp
+++ clang-tools-extra/clangd/TUScheduler.cpp
@@ -795,7 +795,7 @@
   // FIXME: It might be better to not reuse this AST. That way queued AST 
builds
   // won't be required for diags.
   llvm::Optional<std::unique_ptr<ParsedAST>> AST = IdleASTs.take(this);
-  if (!AST) {
+  if (!AST || !InputsAreLatest) {
     auto RebuildStartTime = DebouncePolicy::clock::now();
     llvm::Optional<ParsedAST> NewAST = buildAST(
         FileName, std::move(Invocation), CIDiags, Inputs, LatestPreamble);
@@ -817,8 +817,6 @@
     });
     AST = NewAST ? std::make_unique<ParsedAST>(std::move(*NewAST)) : nullptr;
   } else {
-    assert(InputsAreLatest && !RanASTCallback &&
-           "forgot to invalidate cached ast?");
     log("Skipping rebuild of the AST for {0}, inputs are the same.", FileName);
     Status.update([](TUStatus &Status) {
       Status.Details.ReuseAST = true;


Index: clang-tools-extra/clangd/TUScheduler.cpp
===================================================================
--- clang-tools-extra/clangd/TUScheduler.cpp
+++ clang-tools-extra/clangd/TUScheduler.cpp
@@ -795,7 +795,7 @@
   // FIXME: It might be better to not reuse this AST. That way queued AST builds
   // won't be required for diags.
   llvm::Optional<std::unique_ptr<ParsedAST>> AST = IdleASTs.take(this);
-  if (!AST) {
+  if (!AST || !InputsAreLatest) {
     auto RebuildStartTime = DebouncePolicy::clock::now();
     llvm::Optional<ParsedAST> NewAST = buildAST(
         FileName, std::move(Invocation), CIDiags, Inputs, LatestPreamble);
@@ -817,8 +817,6 @@
     });
     AST = NewAST ? std::make_unique<ParsedAST>(std::move(*NewAST)) : nullptr;
   } else {
-    assert(InputsAreLatest && !RanASTCallback &&
-           "forgot to invalidate cached ast?");
     log("Skipping rebuild of the AST for {0}, inputs are the same.", FileName);
     Status.update([](TUStatus &Status) {
       Status.Details.ReuseAST = true;
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to