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

Noah Goldstein via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 17 22:27:50 PST 2022


goldstein.w.n added inline comments.


================
Comment at: clang/lib/Format/UnwrappedLineFormatter.cpp:69-75
+      if (Line.InMacroBody) {
+        Indent = (Line.PPLevel + 1) * PPIndentWidth;
+        Indent += (Line.Level - Line.PPLevel - 1) * Style.IndentWidth;
+        Indent += Style.IndentWidth - PPIndentWidth;
+      } else {
+        Indent = Line.Level * PPIndentWidth;
+      }
----------------
owenpan wrote:
> To make it simpler and clearer.
Done.


================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:838
+  // If this changes PPLevel needs to be used for get correct indentation.
+  assert(!(Line.InMacroBody && InPPDirective));
   return Line.Level * Style.IndentWidth + Length <= ColumnLimit;
----------------
owenpan wrote:
> Shouldn't it be `assert(!Line.InMacroBody && !InPPDirective)` instead? You can also assert `Line.PPLevel == 0`.
I guess the goal was to assert condition where `PPLevel` would be used to calculate if a line might find (if both `InMacroBody` and `InPPDirective`) are true. But your assert should also works fine so fixed.


================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:1280
+
+  if (Style.IndentPPDirectives != FormatStyle::PPDIS_None)
+    Line->PPLevel = PPBranchLevel + (IncludeGuard == IG_Defined ? 0 : 1);
----------------
owenpan wrote:
> We don't need the `if` statement anymore. Actually, it's better to always set `PPLevel` for `InMacroBody` lines.
Fixed.


================
Comment at: clang/unittests/Format/FormatTest.cpp:5382-5384
+
+  style.IndentWidth = 4;
+  style.PPIndentWidth = 1;
----------------
owenpan wrote:
> Please delete.
Fixed.


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