more consistent.
Before:
SomeType MemberFunction(const Deleted &)&&;
SomeType MemberFunction(const Deleted &) && { ... }
After:
SomeType MemberFunction(const Deleted &)&&;
SomeType MemberFunction(const Deleted &)&& { ... }
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245843
91177308-0d34-0410-b5e6-
96231b3b80d8
/// properly supported by Clang's lexer.
struct AdditionalKeywords {
AdditionalKeywords(IdentifierTable &IdentTable) {
+ kw_final = &IdentTable.get("final");
+ kw_override = &IdentTable.get("override");
kw_in = &IdentTable.get("in");
kw_CF_ENUM = &IdentTable.get("CF_ENUM");
kw_CF_OPTIONS = &IdentTable.get("CF_OPTIONS");
kw_abstract = &IdentTable.get("abstract");
kw_extends = &IdentTable.get("extends");
- kw_final = &IdentTable.get("final");
kw_implements = &IdentTable.get("implements");
kw_instanceof = &IdentTable.get("instanceof");
kw_interface = &IdentTable.get("interface");
}
// Context sensitive keywords.
+ IdentifierInfo *kw_final;
+ IdentifierInfo *kw_override;
IdentifierInfo *kw_in;
IdentifierInfo *kw_CF_ENUM;
IdentifierInfo *kw_CF_OPTIONS;
// Java keywords.
IdentifierInfo *kw_abstract;
IdentifierInfo *kw_extends;
- IdentifierInfo *kw_final;
IdentifierInfo *kw_implements;
IdentifierInfo *kw_instanceof;
IdentifierInfo *kw_interface;
return TT_UnaryOperator;
const FormatToken *NextToken = Tok.getNextNonComment();
- if (!NextToken || NextToken->is(tok::arrow) ||
+ if (!NextToken ||
+ NextToken->isOneOf(tok::arrow, Keywords.kw_final,
+ Keywords.kw_override) ||
(NextToken->is(tok::l_brace) && !NextToken->getNextNonComment()))
- return TT_Unknown;
+ return TT_PointerOrReference;
if (PrevToken->is(tok::coloncolon))
return TT_PointerOrReference;
!Line.IsMultiVariableDeclStmt)))
return true;
if (Left.is(TT_PointerOrReference))
- return Right.Tok.isLiteral() || Right.is(TT_BlockComment) ||
+ return Right.Tok.isLiteral() ||
+ Right.isOneOf(TT_BlockComment, Keywords.kw_final,
+ Keywords.kw_override) ||
(Right.is(tok::l_brace) && Right.BlockKind == BK_Block) ||
(!Right.isOneOf(TT_PointerOrReference, TT_ArraySubscriptLSquare,
tok::l_paren) &&
verifyFormat("Deleted &operator=(const Deleted &)&&;");
verifyFormat("SomeType MemberFunction(const Deleted &)&;");
verifyFormat("SomeType MemberFunction(const Deleted &)&&;");
+ verifyFormat("SomeType MemberFunction(const Deleted &)&& {}");
+ verifyFormat("SomeType MemberFunction(const Deleted &)&& final {}");
+ verifyFormat("SomeType MemberFunction(const Deleted &)&& override {}");
verifyGoogleFormat("Deleted& operator=(const Deleted&)& = default;");
verifyGoogleFormat("SomeType MemberFunction(const Deleted&)& = delete;");
// Member function reference qualifiers aren't binary operators.
verifyFormat("string // break\n"
- "operator()() & {}");
+ "operator()()& {}");
verifyFormat("string // break\n"
- "operator()() && {}");
+ "operator()()&& {}");
verifyGoogleFormat("template <typename T>\n"
- "auto x() & -> int {}");
+ "auto x()& -> int {}");
}
TEST_F(FormatTest, UnderstandsAttributes) {