Hello,

When inline assembly has only clobber constraints it's common to write all
three colons without spaces, for example:

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

Currently clang-format splits ::: into coloncolon and colon, and inserts a
space before the colon, which looks strange:

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

I suggest to allow having ::: without spaces in this case. Attached is a
simple patch to that effect.

Thanks,
Eugene
diff --git a/llvm/tools/clang/lib/Format/TokenAnnotator.cpp b/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
index 4f3ec0b..94cb99c 100644
--- a/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
+++ b/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
@@ -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;
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to