[clang-tools-extra] [clang] [clangd] Prevent printing huge initializer lists in hover definitions (PR #79746)

kadir çetinkaya via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 2 11:52:16 PST 2024


================
@@ -138,15 +138,9 @@ std::string getNamespaceScope(const Decl *D) {
 
 std::string printDefinition(const Decl *D, PrintingPolicy PP,
                             const syntax::TokenBuffer &TB) {
-  if (auto *VD = llvm::dyn_cast<VarDecl>(D)) {
-    if (auto *IE = VD->getInit()) {
-      // Initializers might be huge and result in lots of memory allocations in
-      // some catostrophic cases. Such long lists are not useful in hover cards
-      // anyway.
-      if (200 < TB.expandedTokens(IE->getSourceRange()).size())
-        PP.SuppressInitializers = true;
-    }
-  }
+  // Initializers might be huge and result in lots of memory allocations in some
+  // catostrophic cases. Such long lists are not useful in hover cards anyway.
+  PP.EntireContentsOfLargeArray = false;
----------------
kadircet wrote:

I wasn't suggesting to use tokens, but rather count the number of elements directly through the AST.
we've got the expression available already, so we can go over its `chidlren()` and count total elements we **might** encounter, and suppress intializers based on that (when the tokens aren't available)

https://github.com/llvm/llvm-project/pull/79746


More information about the cfe-commits mailing list