1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 17:15:09 +00:00

AK: Propagate errors from SourceGenerator::fork()

This commit is contained in:
Sam Atkins 2023-06-17 13:12:36 +01:00 committed by Sam Atkins
parent 540cc42618
commit 8e53e5afc4
12 changed files with 136 additions and 129 deletions

View file

@ -65,11 +65,12 @@ namespace Web::CSS {
)~~~");
generator.appendln("enum class TransformFunction {");
transforms_data.for_each_member([&](auto& name, auto&) {
auto member_generator = generator.fork();
TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr<void> {
auto member_generator = TRY(generator.fork());
member_generator.set("name:titlecase", title_casify_transform_function(name));
member_generator.appendln(" @name:titlecase@,");
});
return {};
}));
generator.appendln("};");
generator.appendln("Optional<TransformFunction> transform_function_from_string(StringView);");
@ -116,15 +117,16 @@ namespace Web::CSS {
Optional<TransformFunction> transform_function_from_string(StringView name)
{
)~~~");
transforms_data.for_each_member([&](auto& name, auto&) {
auto member_generator = generator.fork();
TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr<void> {
auto member_generator = TRY(generator.fork());
member_generator.set("name", name);
member_generator.set("name:titlecase", title_casify_transform_function(name));
member_generator.append(R"~~~(
if (name.equals_ignoring_ascii_case("@name@"sv))
return TransformFunction::@name:titlecase@;
)~~~");
});
return {};
}));
generator.append(R"~~~(
return {};
}
@ -135,15 +137,16 @@ StringView to_string(TransformFunction transform_function)
{
switch (transform_function) {
)~~~");
transforms_data.for_each_member([&](auto& name, auto&) {
auto member_generator = generator.fork();
TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr<void> {
auto member_generator = TRY(generator.fork());
member_generator.set("name", name);
member_generator.set("name:titlecase", title_casify_transform_function(name));
member_generator.append(R"~~~(
case TransformFunction::@name:titlecase@:
return "@name@"sv;
)~~~");
});
return {};
}));
generator.append(R"~~~(
default:
VERIFY_NOT_REACHED();
@ -156,10 +159,10 @@ TransformFunctionMetadata transform_function_metadata(TransformFunction transfor
{
switch (transform_function) {
)~~~");
transforms_data.for_each_member([&](auto& name, auto& value) {
TRY(transforms_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr<void> {
VERIFY(value.is_object());
auto member_generator = generator.fork();
auto member_generator = TRY(generator.fork());
member_generator.set("name:titlecase", title_casify_transform_function(name));
member_generator.append(R"~~~(
case TransformFunction::@name:titlecase@:
@ -195,7 +198,8 @@ TransformFunctionMetadata transform_function_metadata(TransformFunction transfor
member_generator.append(R"~~~( }
};
)~~~");
});
return {};
}));
generator.append(R"~~~(
default:
VERIFY_NOT_REACHED();