[PATCH] D69573: [clang-format] [PR36294] AlwaysBreakAfterReturnType works incorrectly for some operator functions
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 30 07:10:06 PDT 2019
sammccall added inline comments.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:955
CurrentToken->Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator,
- tok::comma))
+ tok::comma, tok::star, tok::arrow))
CurrentToken->Previous->Type = TT_OverloadedOperator;
----------------
I'm confused about this: ISTM that where we were previously always treating star as a pointer, now we're always treating it as an operator name.
Whereas it's sometimes an operator name (immediately after the `operator` keyword) and sometimes a pointer (following a type name).
Maybe we should shift the OverloadedOperator labelling outside the loop (since AFAICT it should only apply to the first token) and then keep the loop to mark stars/amps elsewhere in the operator name as PointerOrReference?
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2626
+ Left.Previous && Left.Previous->is(tok::kw_operator))
+ // No space between the type and the *
+ // operator void*(), operator char*(), operator Foo*().
----------------
why?
================
Comment at: clang/unittests/Format/FormatTest.cpp:6989
verifyFormat("operator int();");
- verifyFormat("operator void *();");
+ verifyFormat("operator void*();");
verifyFormat("operator SomeType<int>();");
----------------
this looks like a regression at first glance, in LLVM style there's a space between type and *
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69573/new/
https://reviews.llvm.org/D69573
More information about the cfe-commits
mailing list