[PATCH] D43902: [clang-format] Don't detect C++11 attribute specifiers as ObjC
Ben Hamilton via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 5 09:03:38 PST 2018
benhamilton added a comment.
Thanks very much for the code review. I fixed those issues.
================
Comment at: lib/Format/TokenAnnotator.cpp:323
+ const FormatToken *parseCpp11Attribute(const FormatToken *Tok,
+ bool NamespaceAllowed) {
----------------
jolesiak wrote:
> I feel like it would be clearer (and more consistent) if we used const& here and just make a copy inside function body.
> I see no benefit of passing nullptr based on usage presented in this patch.
Fixed.
================
Comment at: lib/Format/TokenAnnotator.cpp:325
+ bool NamespaceAllowed) {
+ if (!Tok || !Tok->isOneOf(tok::identifier, tok::ellipsis)) return Tok;
+ Tok = Tok->Next;
----------------
jolesiak wrote:
> For consistency reasons I wouldn't use one line ifs. Let's keep existing format with line break and without braces.
Fixed. (My mistake was using `git-clang-format` without passing `--style llvm` — for some reason that's applying a different style.)
================
Comment at: lib/Format/TokenAnnotator.cpp:337
+ ParamToken = ParamToken->Next;
+ if (!ParamToken || ParamToken->isNot(tok::r_paren)) return nullptr;
+ Tok = ParamToken->Next;
----------------
jolesiak wrote:
> Is second part of this condition necessary?
Not needed. Removed.
================
Comment at: lib/Format/TokenAnnotator.cpp:345
+ // never a valid Objective-C or Objective-C++ method invocation.
+ bool parseCpp11AttributeSpecifier(FormatToken *Tok) {
+ if (!Style.isCpp()) return false;
----------------
jolesiak wrote:
> Pointer should be to const type, but same as above, I feel like const& would be a better choice.
Fixed.
================
Comment at: lib/Format/TokenAnnotator.cpp:351
+ if (!AttributeToken) return false;
+ // C++17 '[[using namespace: foo, bar(baz, blech)]]'
+ if (AttributeToken->startsSequence(tok::kw_using, tok::identifier,
----------------
jolesiak wrote:
> How about:
>
> ```
> bool NamespaceAllowed;
> if (AttributeToken->startsSequence(tok::kw_using, tok::identifier,
> tok::colon)) {
> // C++17 '[[using namespace: foo, bar(baz, blech)]]'
> AttributeToken = AttributeToken->Next->Next->Next;
> NamespaceAllowed = false;
> } else {
> // C++11 '[[namespace::foo, namespace::bar(baz, blech)]]'
> NamespaceAllowed = true;
> }
> while (AttributeToken) {
> AttributeToken =
> parseCpp11Attribute(AttributeToken, NamespaceAllowed);
> if (!AttributeToken || AttributeToken->isNot(tok::comma)) break;
> AttributeToken = AttributeToken->Next;
> }
> ```
Fixed.
Repository:
rC Clang
https://reviews.llvm.org/D43902
More information about the cfe-commits
mailing list