[PATCH] D80933: [clang-format] [PR46157] Wrong spacing of negative literals with use of operator
MyDeveloperDay via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 3 06:33:18 PDT 2020
MyDeveloperDay updated this revision to Diff 268166.
MyDeveloperDay added a comment.
Ensure no crash when CurrentToken is nullptr
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80933/new/
https://reviews.llvm.org/D80933
Files:
clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -16417,6 +16417,17 @@
verifyFormat("operator&&(int(&&)(), class Foo);", Style);
}
+TEST_F(FormatTest, OperatorPassedAsAFunctionPtr) {
+ FormatStyle Style = getLLVMStyle();
+ // PR46157
+ verifyFormat("foo(operator+, -42);", Style);
+ verifyFormat("foo(operator++, -42);", Style);
+ verifyFormat("foo(operator--, -42);", Style);
+ verifyFormat("foo(-42, operator--);", Style);
+ verifyFormat("foo(-42, operator, );", Style);
+ verifyFormat("foo(operator, , -42);", Style);
+}
+
TEST_F(FormatTest, VeryLongNamespaceCommentSplit) {
// These tests are not in NamespaceFixer because that doesn't
// test its interaction with line wrapping
Index: clang/lib/Format/TokenAnnotator.cpp
===================================================================
--- clang/lib/Format/TokenAnnotator.cpp
+++ clang/lib/Format/TokenAnnotator.cpp
@@ -978,16 +978,18 @@
if (CurrentToken->isOneOf(tok::star, tok::amp))
CurrentToken->setType(TT_PointerOrReference);
consumeToken();
+ if (CurrentToken && CurrentToken->is(tok::comma) &&
+ CurrentToken->Previous->isNot(tok::kw_operator))
+ break;
if (CurrentToken && CurrentToken->Previous->isOneOf(
TT_BinaryOperator, TT_UnaryOperator, tok::comma,
tok::star, tok::arrow, tok::amp, tok::ampamp))
CurrentToken->Previous->setType(TT_OverloadedOperator);
}
- if (CurrentToken) {
+ if (CurrentToken && CurrentToken->is(tok::l_paren))
CurrentToken->setType(TT_OverloadedOperatorLParen);
- if (CurrentToken->Previous->is(TT_BinaryOperator))
- CurrentToken->Previous->setType(TT_OverloadedOperator);
- }
+ if (CurrentToken && CurrentToken->Previous->is(TT_BinaryOperator))
+ CurrentToken->Previous->setType(TT_OverloadedOperator);
break;
case tok::question:
if (Tok->is(TT_CSharpNullConditionalLSquare)) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80933.268166.patch
Type: text/x-patch
Size: 2164 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200603/398f9d0f/attachment-0001.bin>
More information about the cfe-commits
mailing list