Как предотвратить добавление новых строк между вызовами оператора потока в clang-формате < - PullRequest
1 голос
/ 21 февраля 2020

Мы сейчас находимся в процессе форматирования нашей кодовой базы с clang-format. Мы нашли ситуацию, когда по какой-то причине оператор потока на std::cout перемещается на следующую строку, если присутствуют два последовательных литерала строки. Помещение переменной между двумя строковыми литералами приводит к тому, что формат clang не меняет формат. Что нужно изменить в файле .clang-format, чтобы избежать этого?

int main()
{
    std::cout << "something" << "something" << std::endl;
}

становится

int main()
{
    std::cout << "something"
              << "something" << std::endl;
}

, в то время как

int main()
{
    int a = 0;
    std::cout << "something" << a << "something" << std::endl;
}

остается нетронутым. Обратите внимание, что, хотя этот последний фрагмент шире, он не разбит на несколько строк, в то время как более короткий фрагмент выше.

Это с установщиком LLVM 9.0.0 Windows и воспроизводится с помощью файл конфигурации по умолчанию.

1 Ответ

2 голосов
/ 25 февраля 2020

Это поведение нельзя изменить с помощью файла .clang-format, поскольку оно является частью кода.

Это поведение было введено в этом коммите: https://github.com/llvm-mirror/clang/commit/df28f7b8dd6a032515109de4ff5b4067be95da8e

Ссылка на отчет об ошибке: https://bugs.llvm.org/show_bug.cgi?id=45018

...