diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index ba322bdc9f..80ee476c55 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -3439,18 +3439,31 @@ ErrorOr> Parser::parse_dynamic_value(ComponentValue const& co if (component_value.is_function()) { auto const& function = component_value.function(); - if (function.name().equals_ignoring_ascii_case("calc"sv)) - return parse_calculated_value(function.values()); - if (function.name().equals_ignoring_ascii_case("var"sv)) { // Declarations using `var()` should already be parsed as an UnresolvedStyleValue before this point. VERIFY_NOT_REACHED(); } + + auto function_node = TRY(parse_a_calc_function_node(function)); + if (!function_node) + return nullptr; + + auto function_type = function_node->resolved_type().value(); + return CalculatedStyleValue::create(function_node.release_nonnull(), function_type); } return nullptr; } +ErrorOr> Parser::parse_a_calc_function_node(Function const& function) +{ + if (function.name().equals_ignoring_ascii_case("calc"sv)) + return TRY(parse_a_calculation(function.values())); + + dbgln_if(CSS_PARSER_DEBUG, "We didn't implement `{}` function yet", function.name()); + return nullptr; +} + Optional Parser::parse_dimension(ComponentValue const& component_value) { if (component_value.is(Token::Type::Dimension)) { @@ -8068,19 +8081,14 @@ ErrorOr> Parser::parse_a_calculation(Vector> parse_builtin_value(ComponentValue const&); ErrorOr> parse_dynamic_value(ComponentValue const&); ErrorOr> parse_calculated_value(Vector const&); + ErrorOr> parse_a_calc_function_node(Function const&); ErrorOr> parse_dimension_value(ComponentValue const&); ErrorOr> parse_integer_value(TokenStream&); ErrorOr> parse_number_value(TokenStream&);