aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Tooling/RangeSelectorTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/Tooling/RangeSelectorTest.cpp')
-rw-r--r--clang/unittests/Tooling/RangeSelectorTest.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/unittests/Tooling/RangeSelectorTest.cpp b/clang/unittests/Tooling/RangeSelectorTest.cpp
index adf5e74..a1fcbb0 100644
--- a/clang/unittests/Tooling/RangeSelectorTest.cpp
+++ b/clang/unittests/Tooling/RangeSelectorTest.cpp
@@ -527,6 +527,31 @@ TEST(RangeSelectorTest, NameOpDeclRefError) {
AllOf(HasSubstr(Ref), HasSubstr("requires property 'identifier'")))));
}
+TEST(RangeSelectorTest, NameOpDeclInMacroArg) {
+ StringRef Code = R"cc(
+ #define MACRO(name) int name;
+ MACRO(x)
+ )cc";
+ const char *ID = "id";
+ TestMatch Match = matchCode(Code, varDecl().bind(ID));
+ EXPECT_THAT_EXPECTED(select(name(ID), Match), HasValue("x"));
+}
+
+TEST(RangeSelectorTest, NameOpDeclInMacroBodyError) {
+ StringRef Code = R"cc(
+ #define MACRO int x;
+ MACRO
+ )cc";
+ const char *ID = "id";
+ TestMatch Match = matchCode(Code, varDecl().bind(ID));
+ EXPECT_THAT_EXPECTED(
+ name(ID)(Match.Result),
+ Failed<StringError>(testing::Property(
+ &StringError::getMessage,
+ AllOf(HasSubstr("range selected by name(node id="),
+ HasSubstr("' is different from decl name 'x'")))));
+}
+
TEST(RangeSelectorTest, CallArgsOp) {
const StringRef Code = R"cc(
struct C {