[PATCH] D79773: [clang-format] Improve clang-formats handling of concepts

Michael Schellenberger Costa via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 19 03:45:10 PDT 2020


miscco added inline comments.


================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3499
     return true;
   if (Right.Previous->ClosesTemplateDeclaration &&
       Right.Previous->MatchingParen &&
----------------
I think that your change should actually come in here where we determine what to do after a `ClosesTemplateDeclaration` 

With an potential new option `AlwaysBreakConceptDeclarations ` that should probably default to `AlwaysBreakTemplateDeclarations ` this would read
```
  if (Right.Previous->ClosesTemplateDeclaration &&
      Right.Previous->MatchingParen &&
      Right.Previous->MatchingParen->NestingLevel == 0) { 
      if (Right.is(tok::kw_requires)) {
        switch(Style.AllowShortRequiresClause) {
          case FormatStyle::SRCS_Never: 
            return true;
          case FormatStyle::SRCS_Always: 
            return false;
          case FormatStyle::SRCS_Single:
            // TODO: Determine whether there is a single constraint 
            return true;
          case FormatStyle::SRCS_Short: 
            // TODO: Determine whether the constraint clause is short enough
            return true;
        } 
      } else if (Right.is(tok::kw_concept)) {
        return Style.AlwaysBreakConceptDeclarations == FormatStyle::BTCS_Yes);
      } else {
        return Style.AlwaysBreakTemplateDeclarations == FormatStyle::BTDS_Yes);
      }
  }
```


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79773/new/

https://reviews.llvm.org/D79773





More information about the cfe-commits mailing list