owenca wrote:

This is what I would do:
```diff
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -160,10 +160,9 @@ private:
       return false;
 
     const auto *BeforeLess = Left->Previous;
+    bool InTemplateArgument = false;
 
     if (BeforeLess) {
-      if (BeforeLess->Tok.isLiteral())
-        return false;
       if (BeforeLess->is(tok::r_brace))
         return false;
       if (BeforeLess->is(tok::r_paren) && Contexts.size() > 1 &&
@@ -173,6 +172,14 @@ private:
       }
       if (BeforeLess->is(tok::kw_operator) && CurrentToken->is(tok::l_paren))
         return false;
+      if (BeforeLess->Tok.isLiteral()) {
+        if (const auto *BeforeLiteral = BeforeLess->Previous;
+            !BeforeLiteral || BeforeLiteral->isNot(tok::kw_operator)) {
+          return false;
+        }
+        assert(BeforeLess->is(TT_OverloadedOperator));
+        InTemplateArgument = true;
+      }
     }
 
     Left->ParentBracket = Contexts.back().ContextKind;
@@ -192,7 +199,7 @@ private:
       const bool InExpr = ParentContext.IsExpression;
       if (CurrentToken->is(tok::greater)) {
         const auto *Next = CurrentToken->Next;
-        if (CurrentToken->isNot(TT_TemplateCloser)) {
+        if (!InTemplateArgument && CurrentToken->isNot(TT_TemplateCloser)) {
           // Try to do a better job at looking for ">>" within the condition of
           // a statement. Conservatively insert spaces between consecutive ">"
           // tokens to prevent splitting right shift operators and potentially
@@ -5231,7 +5238,7 @@ bool TokenAnnotator::spaceRequiredBefore(const 
AnnotatedLine &Line,
   const auto *BeforeLeft = Left.Previous;
 
   if (IsCpp) {
-    if (Left.is(TT_OverloadedOperator) &&
+    if (Left.is(TT_OverloadedOperator) && Left.isNot(tok::string_literal) &&
         Right.isOneOf(TT_TemplateOpener, TT_TemplateCloser)) {
       return true;
     }
```

https://github.com/llvm/llvm-project/pull/210630
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to