[PATCH] D137181: [clang-format] Don't use 'PPIndentWidth' inside multi-line macros

Owen Pan via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 8 23:42:54 PST 2022


owenpan added a comment.

In D137181#3916558 <https://reviews.llvm.org/D137181#3916558>, @goldstein.w.n wrote:

> In D137181#3916547 <https://reviews.llvm.org/D137181#3916547>, @owenpan wrote:
>
>> Yes, if there is a header guard. Otherwise, set `PPLevel` to `PPBranchLevel + 1`.
>
> That fails alot of the tests for me.
>
> maybe you did something different?

Here is what I did:

  $ git diff UnwrappedLineParser.cpp
  diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
  index 25d9018fa109..ab3b9c53ee54 100644
  --- a/clang/lib/Format/UnwrappedLineParser.cpp
  +++ b/clang/lib/Format/UnwrappedLineParser.cpp
  @@ -197,6 +197,7 @@ public:
       PreBlockLine = std::move(Parser.Line);
       Parser.Line = std::make_unique<UnwrappedLine>();
       Parser.Line->Level = PreBlockLine->Level;
  +    Parser.Line->PPLevel = PreBlockLine->PPLevel;
       Parser.Line->InPPDirective = PreBlockLine->InPPDirective;
       Parser.Line->InMacroBody = PreBlockLine->InMacroBody;
     }
  @@ -1274,6 +1275,10 @@ void UnwrappedLineParser::parsePPDefine() {
     addUnwrappedLine();
     ++Line->Level;
     Line->InMacroBody = true;
  +  if (Style.IndentPPDirectives != FormatStyle::PPDIS_None) {
  +    Line->PPLevel =
  +        IncludeGuard == IG_Defined ? PPBranchLevel : PPBranchLevel + 1;
  +  }
   
     // Errors during a preprocessor directive can only affect the layout of the
     // preprocessor directive, and thus we ignore them. An alternative approach


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D137181



More information about the cfe-commits mailing list