[clang-tools-extra] dc10bd4 - [clangd] don't add inlay hint for dependent type in structured binding
Yuanjing Hong via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 20 20:11:58 PDT 2023
Author: Yuanjing Hong
Date: 2023-08-21T11:10:40+08:00
New Revision: dc10bd43a103d0e252c4fb4d30913f99b4f418fe
URL: https://github.com/llvm/llvm-project/commit/dc10bd43a103d0e252c4fb4d30913f99b4f418fe
DIFF: https://github.com/llvm/llvm-project/commit/dc10bd43a103d0e252c4fb4d30913f99b4f418fe.diff
LOG: [clangd] don't add inlay hint for dependent type in structured binding
Currently clangd will display useless inlay hint for dependent type in
structured binding, e.g.
```
template <class T>
void foobar(T arg) {
auto [a/*: <dependent type>*/, b/*: <dependent type>*/] = arg;
}
```
Differential Revision: https://reviews.llvm.org/D157956
Added:
Modified:
clang-tools-extra/clangd/InlayHints.cpp
clang-tools-extra/clangd/unittests/InlayHintTests.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/InlayHints.cpp b/clang-tools-extra/clangd/InlayHints.cpp
index d403269f5a68f4..56f85ee155cb23 100644
--- a/clang-tools-extra/clangd/InlayHints.cpp
+++ b/clang-tools-extra/clangd/InlayHints.cpp
@@ -733,7 +733,8 @@ class InlayHintVisitor : public RecursiveASTVisitor<InlayHintVisitor> {
// For structured bindings, print canonical types. This is important
// because for bindings that use the tuple_element protocol, the
// non-canonical types would be "tuple_element<I, A>::type".
- if (auto Type = Binding->getType(); !Type.isNull())
+ if (auto Type = Binding->getType();
+ !Type.isNull() && !Type->isDependentType())
addTypeHint(Binding->getLocation(), Type.getCanonicalType(),
/*Prefix=*/": ");
}
diff --git a/clang-tools-extra/clangd/unittests/InlayHintTests.cpp b/clang-tools-extra/clangd/unittests/InlayHintTests.cpp
index 3c1e6c826ec259..1d12db3661c9eb 100644
--- a/clang-tools-extra/clangd/unittests/InlayHintTests.cpp
+++ b/clang-tools-extra/clangd/unittests/InlayHintTests.cpp
@@ -1353,6 +1353,11 @@ TEST(TypeHints, DependentType) {
// FIXME: It would be nice to show "T" as the hint.
auto $var2[[var2]] = arg;
}
+
+ template <typename T>
+ void bar(T arg) {
+ auto [a, b] = arg;
+ }
)cpp");
}
More information about the cfe-commits
mailing list