[PATCH] D121103: [clang] Adjust LookupTest for UsingTypeLocs
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 7 03:52:48 PST 2022
kadircet created this revision.
kadircet added a reviewer: sammccall.
Herald added a project: All.
kadircet requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
We no longer traverse the underlying RecordTypeLoc directly, but rather
visit the UsingTypeLoc.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D121103
Files:
clang/unittests/Tooling/LookupTest.cpp
Index: clang/unittests/Tooling/LookupTest.cpp
===================================================================
--- clang/unittests/Tooling/LookupTest.cpp
+++ clang/unittests/Tooling/LookupTest.cpp
@@ -8,12 +8,15 @@
#include "clang/Tooling/Refactoring/Lookup.h"
#include "TestVisitor.h"
+#include "clang/AST/TypeLoc.h"
+#include "clang/Basic/SourceLocation.h"
using namespace clang;
namespace {
struct GetDeclsVisitor : TestVisitor<GetDeclsVisitor> {
std::function<void(CallExpr *)> OnCall;
std::function<void(RecordTypeLoc)> OnRecordTypeLoc;
+ std::function<void(UsingTypeLoc)> OnUsingTypeLoc;
SmallVector<Decl *, 4> DeclStack;
bool VisitCallExpr(CallExpr *Expr) {
@@ -28,6 +31,12 @@
return true;
}
+ bool VisitUsingTypeLoc(UsingTypeLoc Loc) {
+ if (OnUsingTypeLoc)
+ OnUsingTypeLoc(Loc);
+ return true;
+ }
+
bool TraverseDecl(Decl *D) {
DeclStack.push_back(D);
bool Ret = TestVisitor::TraverseDecl(D);
@@ -181,19 +190,19 @@
TEST(LookupTest, replaceNestedClassName) {
GetDeclsVisitor Visitor;
- auto replaceRecordTypeLoc = [&](RecordTypeLoc TLoc,
- StringRef ReplacementString) {
- const auto *FD = cast<CXXRecordDecl>(TLoc.getDecl());
+ auto replaceTypeLoc = [&](const NamedDecl *ND, SourceLocation Loc,
+ StringRef ReplacementString) {
return tooling::replaceNestedName(
- nullptr, TLoc.getBeginLoc(), Visitor.DeclStack.back()->getDeclContext(),
- FD, ReplacementString);
+ nullptr, Loc, Visitor.DeclStack.back()->getDeclContext(), ND,
+ ReplacementString);
};
Visitor.OnRecordTypeLoc = [&](RecordTypeLoc Type) {
// Filter Types by name since there are other `RecordTypeLoc` in the test
// file.
if (Type.getDecl()->getQualifiedNameAsString() == "a::b::Foo") {
- EXPECT_EQ("x::Bar", replaceRecordTypeLoc(Type, "::a::x::Bar"));
+ EXPECT_EQ("x::Bar", replaceTypeLoc(Type.getDecl(), Type.getBeginLoc(),
+ "::a::x::Bar"));
}
};
Visitor.runOver("namespace a { namespace b {\n"
@@ -201,12 +210,13 @@
"namespace c { Foo f();; }\n"
"} }\n");
- Visitor.OnRecordTypeLoc = [&](RecordTypeLoc Type) {
+ Visitor.OnUsingTypeLoc = [&](UsingTypeLoc Type) {
// Filter Types by name since there are other `RecordTypeLoc` in the test
// file.
// `a::b::Foo` in using shadow decl is not `TypeLoc`.
- if (Type.getDecl()->getQualifiedNameAsString() == "a::b::Foo") {
- EXPECT_EQ("Bar", replaceRecordTypeLoc(Type, "::a::x::Bar"));
+ auto *TD = Type.getFoundDecl()->getTargetDecl();
+ if (TD->getQualifiedNameAsString() == "a::b::Foo") {
+ EXPECT_EQ("Bar", replaceTypeLoc(TD, Type.getBeginLoc(), "::a::x::Bar"));
}
};
Visitor.runOver("namespace a { namespace b { class Foo {}; } }\n"
@@ -218,7 +228,8 @@
// it's not visible at [0].
Visitor.OnRecordTypeLoc = [&](RecordTypeLoc Type) {
if (Type.getDecl()->getQualifiedNameAsString() == "x::y::Old") {
- EXPECT_EQ("Foo", replaceRecordTypeLoc(Type, "::x::Foo"));
+ EXPECT_EQ("Foo",
+ replaceTypeLoc(Type.getDecl(), Type.getBeginLoc(), "::x::Foo"));
}
};
Visitor.runOver(R"(
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121103.413415.patch
Type: text/x-patch
Size: 3283 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220307/fc78764e/attachment-0001.bin>
More information about the cfe-commits
mailing list