FixNamespaceComment не работает должным образом в формате .clang - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть код cpp как:

#include<bits/stdc++.h>
using namespace std;

namespace a {
    const int b=1;
}

int main() {
    cout << "hello" << endl;
    return 0;
}

Я попробовал следующую конфигурацию .clang-формата

Language:        Cpp 
BreakBeforeBraces: Custom
BraceWrapping:
  AfterClass:      false
  AfterStruct:     true
  BeforeCatch:     false
  BeforeElse:      false

FixNamespaceComments: true # add commend at end:
NamespaceIndentation: All #intend content of namespace

Ожидаемый вывод включает комментарий в конце закрывающей скобки пространства имен // namespace a. но он не отображается, если в пространстве имен есть только int.

Когда я пытался поместить еще одну переменную в пространство имен, она работала нормально.

Я использую clang-format-6.0

1 Ответ

0 голосов
/ 23 декабря 2018

В формате clang жестко задано, что конечные комментарии пространства имен не добавляются в пространства имен только с одной строкой, что кажется совершенно произвольным, поскольку между пространствами имен с 1 или 2 или 3 операторами нет большой разницы.

Код обидчика:

// The maximal number of unwrapped lines that a short namespace spans.
// Short namespaces don't need an end comment.
static const int kShortNamespaceMaxLines = 1;

https://github.com/llvm-mirror/clang/blob/release_70/lib/Format/NamespaceEndCommentsFixer.cpp

...