clang-format: Allow unbroken ::: in inline assembly.

Before:
  asm volatile("nop" :: : "memory");

After:
  asm volatile("nop" ::: "memory");

Patch by Eugene Toder. Thank you.

llvm-svn: 217883
This commit is contained in:
Daniel Jasper 2014-09-16 16:36:57 +00:00
parent eef9f4dc74
commit b23e20b7f5
2 changed files with 3 additions and 0 deletions

View File

@ -1653,6 +1653,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
return !Line.First->isOneOf(tok::kw_case, tok::kw_default) &&
Tok.getNextNonComment() && Tok.Type != TT_ObjCMethodExpr &&
!Tok.Previous->is(tok::question) &&
!(Tok.Type == TT_InlineASMColon &&
Tok.Previous->is(tok::coloncolon)) &&
(Tok.Type != TT_DictLiteral || Style.SpacesInContainerLiterals);
if (Tok.Previous->Type == TT_UnaryOperator)
return Tok.Type == TT_BinaryOperator;

View File

@ -2105,6 +2105,7 @@ TEST_F(FormatTest, FormatsExternC) { verifyFormat("extern \"C\" {\nint a;"); }
TEST_F(FormatTest, FormatsInlineASM) {
verifyFormat("asm(\"xyz\" : \"=a\"(a), \"=d\"(b) : \"a\"(data));");
verifyFormat("asm(\"nop\" ::: \"memory\");");
verifyFormat(
"asm(\"movq\\t%%rbx, %%rsi\\n\\t\"\n"
" \"cpuid\\n\\t\"\n"