forked from OSchip/llvm-project
clang-format: Add SpaceAfterTemplate
Summary: This is required for compliance with the Mozilla style guide. This is a rebase+minor change of Birunthan Mohanathas's patch Reviewers: djasper Subscribers: klimek, cfe-commits, opilarium Differential Revision: https://reviews.llvm.org/D23317 llvm-svn: 278121
This commit is contained in:
parent
27740d038c
commit
83bbd5731b
|
@ -670,6 +670,9 @@ the configuration (without a prefix: ``Auto``).
|
|||
**SpaceAfterCStyleCast** (``bool``)
|
||||
If ``true``, a space may be inserted after C style casts.
|
||||
|
||||
**SpaceAfterTemplateKeyword** (``bool``)
|
||||
If ``true``, a space will be inserted after the 'template' keyword.
|
||||
|
||||
**SpaceBeforeAssignmentOperators** (``bool``)
|
||||
If ``false``, spaces will be removed before assignment operators.
|
||||
|
||||
|
|
|
@ -549,6 +549,9 @@ struct FormatStyle {
|
|||
/// \brief If ``true``, a space may be inserted after C style casts.
|
||||
bool SpaceAfterCStyleCast;
|
||||
|
||||
/// \brief If \c true, a space will be inserted after the 'template' keyword.
|
||||
bool SpaceAfterTemplateKeyword;
|
||||
|
||||
/// \brief If ``false``, spaces will be removed before assignment operators.
|
||||
bool SpaceBeforeAssignmentOperators;
|
||||
|
||||
|
@ -698,6 +701,7 @@ struct FormatStyle {
|
|||
PenaltyReturnTypeOnItsOwnLine == R.PenaltyReturnTypeOnItsOwnLine &&
|
||||
PointerAlignment == R.PointerAlignment &&
|
||||
SpaceAfterCStyleCast == R.SpaceAfterCStyleCast &&
|
||||
SpaceAfterTemplateKeyword == R.SpaceAfterTemplateKeyword &&
|
||||
SpaceBeforeAssignmentOperators == R.SpaceBeforeAssignmentOperators &&
|
||||
SpaceBeforeParens == R.SpaceBeforeParens &&
|
||||
SpaceInEmptyParentheses == R.SpaceInEmptyParentheses &&
|
||||
|
|
|
@ -338,6 +338,7 @@ template <> struct MappingTraits<FormatStyle> {
|
|||
IO.mapOptional("ReflowComments", Style.ReflowComments);
|
||||
IO.mapOptional("SortIncludes", Style.SortIncludes);
|
||||
IO.mapOptional("SpaceAfterCStyleCast", Style.SpaceAfterCStyleCast);
|
||||
IO.mapOptional("SpaceAfterTemplateKeyword", Style.SpaceAfterTemplateKeyword);
|
||||
IO.mapOptional("SpaceBeforeAssignmentOperators",
|
||||
Style.SpaceBeforeAssignmentOperators);
|
||||
IO.mapOptional("SpaceBeforeParens", Style.SpaceBeforeParens);
|
||||
|
@ -552,6 +553,7 @@ FormatStyle getLLVMStyle() {
|
|||
LLVMStyle.SpacesInContainerLiterals = true;
|
||||
LLVMStyle.SpacesInCStyleCastParentheses = false;
|
||||
LLVMStyle.SpaceAfterCStyleCast = false;
|
||||
LLVMStyle.SpaceAfterTemplateKeyword = true;
|
||||
LLVMStyle.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements;
|
||||
LLVMStyle.SpaceBeforeAssignmentOperators = true;
|
||||
LLVMStyle.SpacesInAngles = false;
|
||||
|
@ -663,6 +665,7 @@ FormatStyle getMozillaStyle() {
|
|||
MozillaStyle.ObjCSpaceBeforeProtocolList = false;
|
||||
MozillaStyle.PenaltyReturnTypeOnItsOwnLine = 200;
|
||||
MozillaStyle.PointerAlignment = FormatStyle::PAS_Left;
|
||||
MozillaStyle.SpaceAfterTemplateKeyword = false;
|
||||
return MozillaStyle;
|
||||
}
|
||||
|
||||
|
|
|
@ -1984,9 +1984,10 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
|
|||
if (Right.isOneOf(tok::semi, tok::comma))
|
||||
return false;
|
||||
if (Right.is(tok::less) &&
|
||||
(Left.is(tok::kw_template) ||
|
||||
(Line.Type == LT_ObjCDecl && Style.ObjCSpaceBeforeProtocolList)))
|
||||
Line.Type == LT_ObjCDecl && Style.ObjCSpaceBeforeProtocolList)
|
||||
return true;
|
||||
if (Right.is(tok::less) && Left.is(tok::kw_template))
|
||||
return Style.SpaceAfterTemplateKeyword;
|
||||
if (Left.isOneOf(tok::exclaim, tok::tilde))
|
||||
return false;
|
||||
if (Left.is(tok::at) &&
|
||||
|
|
|
@ -10191,6 +10191,7 @@ TEST_F(FormatTest, ParsesConfigurationBools) {
|
|||
CHECK_PARSE_BOOL(SpacesInContainerLiterals);
|
||||
CHECK_PARSE_BOOL(SpacesInCStyleCastParentheses);
|
||||
CHECK_PARSE_BOOL(SpaceAfterCStyleCast);
|
||||
CHECK_PARSE_BOOL(SpaceAfterTemplateKeyword);
|
||||
CHECK_PARSE_BOOL(SpaceBeforeAssignmentOperators);
|
||||
|
||||
CHECK_PARSE_NESTED_BOOL(BraceWrapping, AfterClass);
|
||||
|
@ -11329,6 +11330,12 @@ TEST_F(FormatTest, SpacesInAngles) {
|
|||
verifyFormat("A<A<int>>();", Spaces);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, SpaceAfterTemplateKeyword) {
|
||||
FormatStyle Style = getLLVMStyle();
|
||||
Style.SpaceAfterTemplateKeyword = false;
|
||||
verifyFormat("template<int> void foo();", Style);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, TripleAngleBrackets) {
|
||||
verifyFormat("f<<<1, 1>>>();");
|
||||
verifyFormat("f<<<1, 1, 1, s>>>();");
|
||||
|
|
Loading…
Reference in New Issue