djasper added inline comments.

================
Comment at: include/clang/Format/Format.h:358
+  /// \endcode
+  bool BinPackNamespaces;
+
----------------
Typz wrote:
> djasper wrote:
> > This is not bin packing at all. Maybe CompactNamespaces? Or 
> > SingleLineNamespaces?
> > 
> > Also, could you clarify what happens if the namespaces don't fit within the 
> > column limit (both in the comment describing the flag and by adding tests 
> > for it)?
> This is not binpacking, but has a similar effect and made the option name 
> somewhat consistent with the other binpack options :-)
> I'll change to CompactNamespaces then.
How does this option interact with NamespaceIndentation. Do all the values you 
can set there make sense and work as expected?

I am wondering whether we should generally rename this to NamespaceStyle and 
make it an enum. That way, we can start to also support C++17 namespace, but 
people that don't want to use C++17 yet, can still use this style of compact 
namespace.


================
Comment at: include/clang/Format/Format.h:769
+  /// If it does not fit on a single line, the overflowing namespaces get 
wrapped:
+  /// /// \code
+  ///   namespace Foo { namespace Bar {
----------------
What happened here?


================
Comment at: lib/Format/NamespaceEndCommentsFixer.cpp:124
+
+const FormatToken * getNamespaceToken(const AnnotatedLine *line,
+                                      const SmallVectorImpl<AnnotatedLine *> 
&AnnotatedLines) {
----------------
no space after "*"..


================
Comment at: lib/Format/NamespaceEndCommentsFixer.cpp:127
+    if (!line->Affected || line->InPPDirective || 
!line->startsWith(tok::r_brace))
+      return NULL;
+    size_t StartLineIndex = line->MatchingOpeningBlockLineIndex;
----------------
s/NULL/nullptr/


================
Comment at: lib/Format/NamespaceEndCommentsFixer.cpp:172
     }
+    if (StartLineIndex == SIZE_MAX)
+      StartLineIndex = EndLine->MatchingOpeningBlockLineIndex;
----------------
Do we need any of this if CompactNamespaces if false? Maybe we should surround 
the entire thing with an

  if (Style.CompactNamespaces) {




================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:130
 
+bool isNamespaceToken(const FormatToken *NamespaceTok) {
+  // Detect "(inline)? namespace" in the beginning of a line.
----------------
You always seem to call this function with Line->First. Maybe just call it on 
an AnnotatedLine?


================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:134
+    NamespaceTok = NamespaceTok->getNextNonComment();
+  if (!NamespaceTok || NamespaceTok->isNot(tok::kw_namespace))
+    return false;
----------------
just

  return NamespaceTok && NamespaceTok->is(tok::kw_namespace);


================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:139
+
+bool isEndOfNamespace(const AnnotatedLine *line,
+                      const SmallVectorImpl<AnnotatedLine *> &AnnotatedLines) {
----------------
s/line/Line/


================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:221
+      if (isNamespaceToken(TheLine->First)) {
+        int i = 0;
+        while (I + 1 + i != E && isNamespaceToken(I[i + 1]->First) &&
----------------
This looks like you wanted to write a for loop.


================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:223
+        while (I + 1 + i != E && isNamespaceToken(I[i + 1]->First) &&
+            I[i + 1]->Last->TotalLength < Limit) {
+          Limit -= I[i + 1]->Last->TotalLength;
----------------
Indentation


================
Comment at: unittests/Format/FormatTest.cpp:1310
+
+  FormatStyle LLVMWithCompactNamespaces = getLLVMStyle();
+  LLVMWithCompactNamespaces.CompactNamespaces = true;
----------------
There need to be more tests. Specifically:
  // Input is already in the desired format
  namespace A { namespace B { .. }} // namespace A::B

  // Input is contracted, but wrong comment
  namespace A { namespace B {..}} // namespace A

  // Input is partially contracted
  namespace A { namespace B { namespace C {
  }} // namespace B::C
  } // namespace A


https://reviews.llvm.org/D32480



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

Reply via email to