aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests
diff options
context:
space:
mode:
authorBen Hamilton <benhamilton@google.com>2018-04-27 18:51:12 +0000
committerBen Hamilton <benhamilton@google.com>2018-04-27 18:51:12 +0000
commit345f8739d80eda6d45722e42056d6b5a42a6dc87 (patch)
tree0020620864678a9de04d65233431d5fb3d4efe5f /clang/unittests
parent47aece134448f60b4091a882da604fd7500ae9bd (diff)
downloadllvm-345f8739d80eda6d45722e42056d6b5a42a6dc87.zip
llvm-345f8739d80eda6d45722e42056d6b5a42a6dc87.tar.gz
llvm-345f8739d80eda6d45722e42056d6b5a42a6dc87.tar.bz2
[clang-format/ObjC] Use getIdentifierInfo() instead of tok::identifier
Summary: Previously, we checked tokens for `tok::identifier` to see if they were identifiers inside an Objective-C selector. However, this missed C++ keywords like `new` and `delete`. To fix this, this diff uses `getIdentifierInfo()` to find identifiers or keywords inside Objective-C selectors. Test Plan: New tests added. Ran tests with: % make -j16 FormatTests && ./tools/clang/unittests/Format/FormatTests Reviewers: djasper, jolesiak Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D46143 llvm-svn: 331067
Diffstat (limited to 'clang/unittests')
-rw-r--r--clang/unittests/Format/FormatTestObjC.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/unittests/Format/FormatTestObjC.cpp b/clang/unittests/Format/FormatTestObjC.cpp
index b878d78..c6246fd 100644
--- a/clang/unittests/Format/FormatTestObjC.cpp
+++ b/clang/unittests/Format/FormatTestObjC.cpp
@@ -945,7 +945,7 @@ TEST_F(FormatTestObjC, ObjCForIn) {
" }]) {\n}");
}
-TEST_F(FormatTestObjC, ObjCNew) {
+TEST_F(FormatTestObjC, ObjCCxxKeywords) {
verifyFormat("+ (instancetype)new {\n"
" return nil;\n"
"}\n");
@@ -954,6 +954,17 @@ TEST_F(FormatTestObjC, ObjCNew) {
"}\n");
verifyFormat("SEL NewSelector(void) { return @selector(new); }\n");
verifyFormat("SEL MacroSelector(void) { return MACRO(new); }\n");
+ verifyFormat("+ (instancetype)delete {\n"
+ " return nil;\n"
+ "}\n");
+ verifyFormat("+ (instancetype)myDelete {\n"
+ " return [self delete];\n"
+ "}\n");
+ verifyFormat("SEL DeleteSelector(void) { return @selector(delete); }\n");
+ verifyFormat("SEL MacroSelector(void) { return MACRO(delete); }\n");
+ verifyFormat("MACRO(new:)\n");
+ verifyFormat("MACRO(delete:)\n");
+ verifyFormat("foo = @{MACRO(new:) : MACRO(delete:)}\n");
}
TEST_F(FormatTestObjC, ObjCLiterals) {