Use explicit target types for gather calls to bypass clang regression
Since clang-16 there has been a regression in the P0522R0 support. (Bug report at https://github.com/llvm/llvm-project/issue/63281) Closes #4892
This commit is contained in:
parent
c889c0329c
commit
7577fa1b66
|
@ -95,7 +95,7 @@ HashSet<String> CommandManager::loaded_modules() const
|
||||||
{
|
{
|
||||||
return m_modules | filter([](auto&& elem) { return elem.value.state == Module::State::Loaded; })
|
return m_modules | filter([](auto&& elem) { return elem.value.state == Module::State::Loaded; })
|
||||||
| transform([](auto&& elem) { return elem.key; })
|
| transform([](auto&& elem) { return elem.key; })
|
||||||
| gather<HashSet>();
|
| gather<HashSet<String>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct parse_error : runtime_error
|
struct parse_error : runtime_error
|
||||||
|
|
|
@ -2161,7 +2161,7 @@ const CommandDesc evaluate_commands_cmd = {
|
||||||
ScopedSetBool disable_hooks(context.hooks_disabled(), no_hooks);
|
ScopedSetBool disable_hooks(context.hooks_disabled(), no_hooks);
|
||||||
|
|
||||||
if (parser.get_switch("verbatim"))
|
if (parser.get_switch("verbatim"))
|
||||||
CommandManager::instance().execute_single_command(parser | gather<Vector>(), context, shell_context);
|
CommandManager::instance().execute_single_command(parser | gather<Vector<String>>(), context, shell_context);
|
||||||
else
|
else
|
||||||
CommandManager::instance().execute(join(parser, ' ', false), context, shell_context);
|
CommandManager::instance().execute(join(parser, ' ', false), context, shell_context);
|
||||||
});
|
});
|
||||||
|
|
|
@ -197,7 +197,7 @@ public:
|
||||||
|
|
||||||
const auto faces = m_faces | transform([&faces = context.context.faces()](auto&& spec) {
|
const auto faces = m_faces | transform([&faces = context.context.faces()](auto&& spec) {
|
||||||
return faces[spec.second];
|
return faces[spec.second];
|
||||||
}) | gather<Vector>();
|
}) | gather<Vector<Face>>();
|
||||||
|
|
||||||
const auto& matches = get_matches(context.context.buffer(), display_buffer.range(), range);
|
const auto& matches = get_matches(context.context.buffer(), display_buffer.range(), range);
|
||||||
kak_assert(matches.size() % m_faces.size() == 0);
|
kak_assert(matches.size() % m_faces.size() == 0);
|
||||||
|
|
|
@ -123,9 +123,9 @@ InsertCompletion complete_word(const SelectionList& sels,
|
||||||
};
|
};
|
||||||
|
|
||||||
auto& word_db = get_word_db(buffer);
|
auto& word_db = get_word_db(buffer);
|
||||||
Vector<RankedMatchAndBuffer> matches = word_db.find_matching(prefix)
|
auto matches = word_db.find_matching(prefix)
|
||||||
| transform([&](auto& m) { return RankedMatchAndBuffer{m, &buffer}; })
|
| transform([&](auto& m) { return RankedMatchAndBuffer{m, &buffer}; })
|
||||||
| gather<Vector>();
|
| gather<Vector<RankedMatchAndBuffer>>();
|
||||||
// Remove words that are being edited
|
// Remove words that are being edited
|
||||||
for (auto& word_count : sel_word_counts)
|
for (auto& word_count : sel_word_counts)
|
||||||
{
|
{
|
||||||
|
|
10
src/main.cc
10
src/main.cc
|
@ -226,7 +226,7 @@ static const EnvVarDesc builtin_env_vars[] = { {
|
||||||
}, {
|
}, {
|
||||||
"buflist", false,
|
"buflist", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
{ return BufferManager::instance() | transform(&Buffer::display_name) | gather<Vector>(); }
|
{ return BufferManager::instance() | transform(&Buffer::display_name) | gather<Vector<String>>(); }
|
||||||
}, {
|
}, {
|
||||||
"buf_line_count", false,
|
"buf_line_count", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
|
@ -294,7 +294,7 @@ static const EnvVarDesc builtin_env_vars[] = { {
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
{ return ClientManager::instance() |
|
{ return ClientManager::instance() |
|
||||||
transform([](const std::unique_ptr<Client>& c) -> const String&
|
transform([](const std::unique_ptr<Client>& c) -> const String&
|
||||||
{ return c->context().name(); }) | gather<Vector>(); }
|
{ return c->context().name(); }) | gather<Vector<String>>(); }
|
||||||
}, {
|
}, {
|
||||||
"modified", false,
|
"modified", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
|
@ -340,21 +340,21 @@ static const EnvVarDesc builtin_env_vars[] = { {
|
||||||
{ return main_sel_first(context.selections()) |
|
{ return main_sel_first(context.selections()) |
|
||||||
transform([&buffer=context.buffer()](const Selection& sel) {
|
transform([&buffer=context.buffer()](const Selection& sel) {
|
||||||
return selection_to_string(ColumnType::Byte, buffer, sel);
|
return selection_to_string(ColumnType::Byte, buffer, sel);
|
||||||
}) | gather<Vector>(); }
|
}) | gather<Vector<String>>(); }
|
||||||
}, {
|
}, {
|
||||||
"selections_char_desc", false,
|
"selections_char_desc", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
{ return main_sel_first(context.selections()) |
|
{ return main_sel_first(context.selections()) |
|
||||||
transform([&buffer=context.buffer()](const Selection& sel) {
|
transform([&buffer=context.buffer()](const Selection& sel) {
|
||||||
return selection_to_string(ColumnType::Codepoint, buffer, sel);
|
return selection_to_string(ColumnType::Codepoint, buffer, sel);
|
||||||
}) | gather<Vector>(); }
|
}) | gather<Vector<String>>(); }
|
||||||
}, {
|
}, {
|
||||||
"selections_display_column_desc", false,
|
"selections_display_column_desc", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
{ return main_sel_first(context.selections()) |
|
{ return main_sel_first(context.selections()) |
|
||||||
transform([&buffer=context.buffer(), tabstop=context.options()["tabstop"].get<int>()](const Selection& sel) {
|
transform([&buffer=context.buffer(), tabstop=context.options()["tabstop"].get<int>()](const Selection& sel) {
|
||||||
return selection_to_string(ColumnType::DisplayColumn, buffer, sel, tabstop);
|
return selection_to_string(ColumnType::DisplayColumn, buffer, sel, tabstop);
|
||||||
}) | gather<Vector>(); }
|
}) | gather<Vector<String>>(); }
|
||||||
}, {
|
}, {
|
||||||
"selection_length", false,
|
"selection_length", false,
|
||||||
[](StringView name, const Context& context) -> Vector<String>
|
[](StringView name, const Context& context) -> Vector<String>
|
||||||
|
|
|
@ -998,7 +998,7 @@ void use_selection_as_search_pattern(Context& context, NormalParams params)
|
||||||
smart and is_bow(buffer, beg) ? "\\b" : "",
|
smart and is_bow(buffer, beg) ? "\\b" : "",
|
||||||
escape(buffer.string(beg, end), "^$\\.*+?()[]{}|", '\\'),
|
escape(buffer.string(beg, end), "^$\\.*+?()[]{}|", '\\'),
|
||||||
smart and is_eow(buffer, end) ? "\\b" : "");
|
smart and is_eow(buffer, end) ? "\\b" : "");
|
||||||
}) | gather<HashSet>();
|
}) | gather<HashSet<String>>();
|
||||||
String pattern = join(patterns, '|', false);
|
String pattern = join(patterns, '|', false);
|
||||||
|
|
||||||
const char reg = to_lower(params.reg ? params.reg : '/');
|
const char reg = to_lower(params.reg ? params.reg : '/');
|
||||||
|
|
|
@ -438,7 +438,7 @@ UnitTest test_string{[]()
|
||||||
kak_assert(StringView{"youpi"}.ends_with("youpi"));
|
kak_assert(StringView{"youpi"}.ends_with("youpi"));
|
||||||
kak_assert(not StringView{"youpi"}.ends_with("oup"));
|
kak_assert(not StringView{"youpi"}.ends_with("oup"));
|
||||||
|
|
||||||
auto wrapped = "wrap this paragraph\n respecting whitespaces and much_too_long_words" | wrap_at(16) | gather<Vector>();
|
auto wrapped = "wrap this paragraph\n respecting whitespaces and much_too_long_words" | wrap_at(16) | gather<Vector<String>>();
|
||||||
kak_assert(wrapped.size() == 6);
|
kak_assert(wrapped.size() == 6);
|
||||||
kak_assert(wrapped[0] == "wrap this");
|
kak_assert(wrapped[0] == "wrap this");
|
||||||
kak_assert(wrapped[1] == "paragraph");
|
kak_assert(wrapped[1] == "paragraph");
|
||||||
|
@ -447,7 +447,7 @@ UnitTest test_string{[]()
|
||||||
kak_assert(wrapped[4] == "much_too_long_wo");
|
kak_assert(wrapped[4] == "much_too_long_wo");
|
||||||
kak_assert(wrapped[5] == "rds");
|
kak_assert(wrapped[5] == "rds");
|
||||||
|
|
||||||
auto wrapped2 = "error: unknown type" | wrap_at(7) | gather<Vector>();
|
auto wrapped2 = "error: unknown type" | wrap_at(7) | gather<Vector<String>>();
|
||||||
kak_assert(wrapped2.size() == 3);
|
kak_assert(wrapped2.size() == 3);
|
||||||
kak_assert(wrapped2[0] == "error:");
|
kak_assert(wrapped2[0] == "error:");
|
||||||
kak_assert(wrapped2[1] == "unknown");
|
kak_assert(wrapped2[1] == "unknown");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user