Quuxplusone added a comment.

Peanut gallery says: A priori, I don't see any reason for clang-format's 
`LanguageStandard` options to diverge from Clang's own `-std=` options. It 
sounds like currently they're very different, and you're proposing to make them 
basically the same. I think that's a good thing.

GCC and Clang still treat "lack of any `-std=` option" as a synonym for 
"`-std=c++03`". A priori this is an absolutely terrible default, but there 
would be some logic in making clang-format follow their lead. The only sensible 
alternative, IMHO, would be for you to treat "lack of any `-std=` option" as a 
synonym for MSVC's `-std:c++latest`, which means "`-std=c++2a` today and 
`-std=c++2b` tomorrow."



================
Comment at: clang/docs/ClangFormatStyleOptions.rst:2227
+  * ``LS_Cpp20`` (in configuration: ``Cpp20``)
+    Use features of C++20 and C++2a (e.g.: treating ``co_yield`` as a keyword,
+    not an identifier, so ``co_yield++ i`` is formatted as ``co_yield ++i``).
----------------
C++2a //will// be C++20, barring any radically unforeseen events. So saying 
"C++20 and C++2a" is redundant. Personally I would follow GCC/Clang's lead and 
say "C++2a" until the standard is actually out.


================
Comment at: clang/include/clang/Format/Format.h:1878
     LS_Cpp11,
+    /// Use features of C++20 and C++2a (e.g.: treating ``co_yield`` as a
+    /// keyword, not an identifier, so ``co_yield++ i`` is formatted as
----------------
Again, C++2a is likely a synonym for C++20.
Three lines earlier, you might want to change "C++1z" to "C++17" (and grep the 
codebase for other instances of "1z").


================
Comment at: clang/unittests/Format/FormatTest.cpp:3721
+      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) <= >\n"
+      "    5) {\n"
       "}");
----------------
This doesn't seem to test what you set out to test, does it? `(x) <= > 5` isn't 
a valid C++ expression anyway. Maybe what you want to test here is that 
clang-format is willing to reformat pre-C++2a code

    LongName<&LongerName::operator<=> x;

into

    LongName<
        &LongerName::operator<=
    > x;

(that is, that it's willing to insert a line break between `<=` and `>`). 
However, if clang-format //refused// to insert a line break in that one 
position even in C++11 mode, would anything of value really be lost?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D65043



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to