[libcxx-commits] [PATCH] D99691: [libcxx] adjusts formatting rules

Marek Kurdej via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed Mar 31 23:52:43 PDT 2021

curdeius added inline comments.

Comment at: libcxx/.clang-format:5
 Language: Cpp
-Standard: Cpp03
+Standard: Cpp11
Mordante wrote:
> Quuxplusone wrote:
> > Actually, I'd turn this all the way up to Cpp20 or however high it goes. The only interesting thing controlled by this option AFAIK is whether clang-format will do
> > ```
> > foo<bar<baz> > x;  // we must do this anywhere C++03-portability is required
> > ```
> > or
> > ```
> > foo<bar<baz>> x;  // we prefer this wherever possible
> > ```
> > Either way, blindly applying clang-format to //actual// libc++ code is going to screw it up one way or the other. But given that you're the only person relying on clang-format to format your patches AFAIK, and you're working exclusively on C++20 code (never on C++03 code), I think it's totally reasonable to check in a style file that specifies `Cpp20`.
>  I also rely on clang-format for my patches and I'm not fond that this change allows to break C++98 code. So I prefer `std::vector<std::pair<int, int> >` over `std::vector<std::pair<int, int>>` and my C++03 unit tests break. Ideally I would like to have this option in clang format
> ```
> // clang-format Cpp03
> std::vector<std::pair<int, int> > v3;
> // clang-format Cpp11
> std::vector<std::pair<int, int>> v11;
> ```
> Then we can use a sane default and override it where applicable. I'll reach out to the clang-format developers to see how feasible this would be.
Same for me. Changing to `Standard: Cpp11` will possibly break code with no huge benefit IMO.

Now, taking my clang-format dev's hat...
Concerning @Mordante's suggestion, that may be doable (preferably in a more general form e.g. `// clang-format Option: Value` or even `// clang-format {Style...}`), but not sure if worth doing, as it will possibly make the formatting inconsistent between different parts of the code if used injudiciously.
And, the whole purpose of using clang-format is consistency.

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list