Skip to content

Commit d16613e

Browse files
committed
bit-simpler
1 parent 9ba8d90 commit d16613e

File tree

1 file changed

+42
-50
lines changed

1 file changed

+42
-50
lines changed

toolchain/check/type_completion.cpp

Lines changed: 42 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,6 @@ static auto NoteIncompleteNamedConstraint(
7272
}
7373
}
7474

75-
template <typename T>
76-
requires SameAsOneOf<T, SemIR::Interface, SemIR::NamedConstraint>
77-
static auto ForEachRequireImpls(
78-
Context& context, const T& entity,
79-
llvm::function_ref<auto(const SemIR::RequireImpls&)->void> f) -> void {
80-
for (auto require_impls_id :
81-
context.require_impls_blocks().Get(entity.require_impls_block_id)) {
82-
const auto& require = context.require_impls().Get(require_impls_id);
83-
f(require);
84-
}
85-
}
86-
8775
// Makes a copy of a Specific from one generic to apply to another given
8876
// `generic_id`, with a given `Self` argument appended to the end.
8977
static auto MakeCopyOfSpecificAndAppendSelf(
@@ -151,19 +139,20 @@ static auto RequireCompleteFacetType(Context& context, SemIR::LocId loc_id,
151139
return false;
152140
}
153141

154-
ForEachRequireImpls(
155-
context, interface, [&](const SemIR::RequireImpls& require) {
156-
if (require.extend_self) {
157-
auto require_specific_id = MakeCopyOfSpecificAndAppendSelf(
158-
context, loc_id, extends.specific_id, require.generic_id,
159-
GetRequireImplsSpecificSelf(context, require));
160-
auto facet_type_id = GetFacetTypeInSpecific(
161-
context, require.facet_type_inst_id, require_specific_id);
162-
if (facet_type_id.has_value()) {
163-
work.push_back(facet_type_id);
164-
}
165-
}
166-
});
142+
for (auto require_impls_id : context.require_impls_blocks().Get(
143+
interface.require_impls_block_id)) {
144+
const auto& require = context.require_impls().Get(require_impls_id);
145+
if (require.extend_self) {
146+
auto require_specific_id = MakeCopyOfSpecificAndAppendSelf(
147+
context, loc_id, extends.specific_id, require.generic_id,
148+
GetRequireImplsSpecificSelf(context, require));
149+
auto facet_type_id = GetFacetTypeInSpecific(
150+
context, require.facet_type_inst_id, require_specific_id);
151+
if (facet_type_id.has_value()) {
152+
work.push_back(facet_type_id);
153+
}
154+
}
155+
}
167156

168157
if (extends.specific_id.has_value()) {
169158
ResolveSpecificDefinition(context, loc_id, extends.specific_id);
@@ -182,19 +171,20 @@ static auto RequireCompleteFacetType(Context& context, SemIR::LocId loc_id,
182171
return false;
183172
}
184173

185-
ForEachRequireImpls(
186-
context, constraint, [&](const SemIR::RequireImpls& require) {
187-
if (require.extend_self) {
188-
auto require_specific_id = MakeCopyOfSpecificAndAppendSelf(
189-
context, loc_id, extends.specific_id, require.generic_id,
190-
GetRequireImplsSpecificSelf(context, require));
191-
auto facet_type_id = GetFacetTypeInSpecific(
192-
context, require.facet_type_inst_id, require_specific_id);
193-
if (facet_type_id.has_value()) {
194-
work.push_back(facet_type_id);
195-
}
196-
}
197-
});
174+
for (auto require_impls_id : context.require_impls_blocks().Get(
175+
constraint.require_impls_block_id)) {
176+
const auto& require = context.require_impls().Get(require_impls_id);
177+
if (require.extend_self) {
178+
auto require_specific_id = MakeCopyOfSpecificAndAppendSelf(
179+
context, loc_id, extends.specific_id, require.generic_id,
180+
GetRequireImplsSpecificSelf(context, require));
181+
auto facet_type_id = GetFacetTypeInSpecific(
182+
context, require.facet_type_inst_id, require_specific_id);
183+
if (facet_type_id.has_value()) {
184+
work.push_back(facet_type_id);
185+
}
186+
}
187+
}
198188

199189
if (extends.specific_id.has_value()) {
200190
ResolveSpecificDefinition(context, loc_id, extends.specific_id);
@@ -958,23 +948,25 @@ auto RequireIdentifiedFacetType(Context& context,
958948
for (auto extend : facet_type_info.extend_named_constraints) {
959949
const auto& constraint =
960950
context.named_constraints().Get(extend.named_constraint_id);
961-
ForEachRequireImpls(
962-
context, constraint, [&](const SemIR::RequireImpls& require) {
963-
if (facet_type_extends && require.extend_self) {
964-
extend_facet_types.push_back(require.facet_type_id);
965-
} else {
966-
impls_facet_types.push_back(require.facet_type_id);
967-
}
968-
});
951+
for (auto require_impls_id : context.require_impls_blocks().Get(
952+
constraint.require_impls_block_id)) {
953+
const auto& require = context.require_impls().Get(require_impls_id);
954+
if (facet_type_extends && require.extend_self) {
955+
extend_facet_types.push_back(require.facet_type_id);
956+
} else {
957+
impls_facet_types.push_back(require.facet_type_id);
958+
}
959+
}
969960
}
970961

971962
for (auto impls : facet_type_info.self_impls_named_constraints) {
972963
const auto& constraint =
973964
context.named_constraints().Get(impls.named_constraint_id);
974-
ForEachRequireImpls(context, constraint,
975-
[&](const SemIR::RequireImpls& require) {
976-
impls_facet_types.push_back(require.facet_type_id);
977-
});
965+
for (auto require_impls_id : context.require_impls_blocks().Get(
966+
constraint.require_impls_block_id)) {
967+
const auto& require = context.require_impls().Get(require_impls_id);
968+
impls_facet_types.push_back(require.facet_type_id);
969+
}
978970
}
979971
}
980972

0 commit comments

Comments
 (0)