diff options
author | Ben Hamilton <benhamilton@google.com> | 2018-04-27 18:51:12 +0000 |
---|---|---|
committer | Ben Hamilton <benhamilton@google.com> | 2018-04-27 18:51:12 +0000 |
commit | 345f8739d80eda6d45722e42056d6b5a42a6dc87 (patch) | |
tree | 0020620864678a9de04d65233431d5fb3d4efe5f /clang/unittests | |
parent | 47aece134448f60b4091a882da604fd7500ae9bd (diff) | |
download | llvm-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.cpp | 13 |
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) { |