[PATCH] D97803: [clangd] Overload bundles are only deprecated if each overloads is.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 2 13:26:51 PST 2021
sammccall created this revision.
sammccall added a reviewer: kbobyrev.
Herald added subscribers: usaxena95, kadircet, arphaman.
sammccall requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay, ilya-biryukov.
Herald added a project: clang.
Fixes https://github.com/clangd/clangd/issues/707
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D97803
Files:
clang-tools-extra/clangd/CodeComplete.cpp
clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -1644,7 +1644,7 @@
std::string Context = R"cpp(
struct X {
// Overload with int
- int a(int);
+ int a(int) __attribute__((deprecated("", "")));
// Overload with bool
int a(bool);
int b(float);
@@ -1682,6 +1682,7 @@
EXPECT_EQ(A.ReturnType, "int"); // All overloads return int.
// For now we just return one of the doc strings arbitrarily.
ASSERT_TRUE(A.Documentation);
+ ASSERT_FALSE(A.Deprecated); // Not all overloads deprecated.
EXPECT_THAT(
A.Documentation->asPlainText(),
AnyOf(HasSubstr("Overload with int"), HasSubstr("Overload with bool")));
Index: clang-tools-extra/clangd/CodeComplete.cpp
===================================================================
--- clang-tools-extra/clangd/CodeComplete.cpp
+++ clang-tools-extra/clangd/CodeComplete.cpp
@@ -249,6 +249,12 @@
return RankedIncludeHeaders[0];
}
+ bool isDeprecated() const {
+ return (SemaResult &&
+ SemaResult->Availability == CXAvailability_Deprecated) ||
+ (IndexResult && IndexResult->Flags & Symbol::Deprecated);
+ }
+
using Bundle = llvm::SmallVector<CompletionCandidate, 4>;
};
using ScoredBundle =
@@ -309,8 +315,6 @@
return std::tie(X.range.start.line, X.range.start.character) <
std::tie(Y.range.start.line, Y.range.start.character);
});
- Completion.Deprecated |=
- (C.SemaResult->Availability == CXAvailability_Deprecated);
}
if (C.IndexResult) {
Completion.Origin |= C.IndexResult->Origin;
@@ -332,13 +336,13 @@
}
Completion.RequiredQualifier = std::string(ShortestQualifier);
}
- Completion.Deprecated |= (C.IndexResult->Flags & Symbol::Deprecated);
}
if (C.IdentifierResult) {
Completion.Origin |= SymbolOrigin::Identifier;
Completion.Kind = CompletionItemKind::Text;
Completion.Name = std::string(C.IdentifierResult->Name);
}
+ Completion.Deprecated |= C.isDeprecated();
// Turn absolute path into a literal string that can be #included.
auto Inserted = [&](llvm::StringRef Header)
@@ -408,6 +412,7 @@
/*CommentsFromHeader=*/false));
}
}
+ Completion.Deprecated = Completion.Deprecated && C.isDeprecated();
}
CodeCompletion build() {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D97803.327564.patch
Type: text/x-patch
Size: 2587 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210302/01172ca9/attachment.bin>
More information about the cfe-commits
mailing list