From a451810599f4c63c9ba6275012ecd2d33d26d2db Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Tue, 8 Mar 2022 17:29:45 +0000 Subject: [PATCH] AK: Print a better error message when missing a SourceGenerator key Previously, if you forgot to set a key on a SourceGenerator, you would get this less-than-helpful error message: > Generate_CSS_MediaFeatureID_cpp: /home/sam/serenity/Meta/Lagom/../../AK/Optional.h:174: T AK::Optional::release_value() [with T = AK::String]: Assertion `m_has_value' failed. Now, it instead looks like this: > No key named `name:titlecase` set on SourceGenerator Generate_CSS_MediaFeatureID_cpp: /home/sam/serenity/Meta/Lagom/../../AK/SourceGenerator.h:44: AK::String AK::SourceGenerator::get(AK::StringView) const: Assertion `false' failed. --- AK/SourceGenerator.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/AK/SourceGenerator.h b/AK/SourceGenerator.h index 9c8c4b1155..a97e27e1c1 100644 --- a/AK/SourceGenerator.h +++ b/AK/SourceGenerator.h @@ -36,7 +36,15 @@ public: SourceGenerator fork() { return SourceGenerator { m_builder, m_mapping, m_opening, m_closing }; } void set(StringView key, String value) { m_mapping.set(key, value); } - String get(StringView key) const { return m_mapping.get(key).value(); } + String get(StringView key) const + { + auto result = m_mapping.get(key); + if (!result.has_value()) { + warnln("No key named `{}` set on SourceGenerator", key); + VERIFY_NOT_REACHED(); + } + return result.release_value(); + } StringView as_string_view() const { return m_builder.string_view(); } String as_string() const { return m_builder.build(); }