Skip to content

clang-format-18 AlignArrayOfStructures: Left fails when encountering UTF-32 strings #75929

@MartinsSmirnovs

Description

@MartinsSmirnovs

Given following .clang-format file:

AlignArrayOfStructures: Left

And following foo.cpp file:

#include <array>
#include <list>
#include <string>

struct Language {
  std::array<char, 2> code = {};
  std::u32string name;
};

using Languages = std::list<Language>;

Languages languages = {
    Language{{'e', 'n'}, U"Test English" },
    Language{{'l', 'v'}, U"Test Latviešu"},
    Language{{'r', 'u'}, U"Test Русский" },
};

I expect that clang-format foo.cpp will not perform formatting, however, it does:

#include <array>
#include <list>
#include <string>

struct Language {
  std::array<char, 2> code = {};
  std::u32string name;
};

using Languages = std::list<Language>;

Languages languages = {
    Language{{'e', 'n'}, U"Test English"       },
    Language{{'l', 'v'}, U"Test Latviešu"     },
    Language{{'r', 'u'}, U"Test Русский"},
};

If I remove the UTF-32 characters, then formatting happens as expected:

#include <array>
#include <list>
#include <string>

struct Language {
  std::array<char, 2> code = {};
  std::u32string name;
};

using Languages = std::list<Language>;

Languages languages = {
    Language{{'e', 'n'}, U"Test English"},
    Language{{'l', 'v'}, U"Test Latvian"},
    Language{{'r', 'u'}, U"Test Russian"},
};

clang-format version:

$ clang-format --version
Ubuntu clang-format version 18.0.0 (++20231208042253+5fc76e6b6da7-1~exp1~20231208042409.1357)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions