[PATCH] D135972: [clang-format] Don't crash on malformed preprocessor conditions

sstwcw via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 25 15:19:26 PDT 2022


sstwcw marked 3 inline comments as done.
sstwcw added inline comments.


================
Comment at: clang/unittests/Format/FormatTest.cpp:5196-5206
+  std::function<void(std::string, unsigned)> FormatBadBranches =
+      [&](std::string Prefix, unsigned Lines) {
+        const std::string Directives[] = {"", "#if X\n", "#else X\n",
+                                          "#endif\n"};
+        if (Lines == 0)
+          verifyNoCrash(Prefix);
+        else
----------------
HazardyKnusperkeks wrote:
> sstwcw wrote:
> > owenpan wrote:
> > > Can we have individual `verifyFormat` or `verifyNoCrash`tests for easy reading and to avoid the overhead? Some examples:
> > > ```
> > > #else
> > > a;
> > > #if X
> > > b;
> > > #endif
> > > #endif
> > > 
> > > #elif X
> > > a;
> > > #endif
> > > #ifdef X
> > > b;
> > > #endif
> > > ```
> > I added some tests like the examples.  But I kept the generated cases.  I feel more secure that way.  At first I only found the bug because of the generated cases.  As for overhead, the debug build of this test took 1.6s on my laptop.
> > I added some tests like the examples.  But I kept the generated cases.  I feel more secure that way.  At first I only found the bug because of the generated cases.  As for overhead, the debug build of this test took 1.6s on my laptop.
> 
> Couldn't you just take the previously crashing ones, you find important, as test cases?
> The overhead is not only compile and runtime, it's also while trying to understand what's happening here.
> The overhead is not only compile and runtime, it's also while trying to understand what's happening here.

I see.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135972



More information about the cfe-commits mailing list