1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:17:35 +00:00

AK: Forbid from_utf8 and from_deprecated_{...} with unintended types

Calling `from_utf8` with a DeprecatedString will hide the fact that we
have a DeprecatedString, while using `from_deprecated_string` with a
StringView will silently and needlessly allocate a DeprecatedString,
so let's forbid that.
This commit is contained in:
Hendiadyoin1 2023-06-11 19:49:02 +02:00 committed by Jelle Raaijmakers
parent 02c4b69f16
commit ca0106ba1d
3 changed files with 14 additions and 1 deletions

View file

@ -21,6 +21,10 @@ public:
~FlyString();
static ErrorOr<FlyString> from_utf8(StringView);
template<typename T>
requires(IsOneOf<RemoveCVReference<T>, DeprecatedString, DeprecatedFlyString>)
static ErrorOr<String> from_utf8(T&&) = delete;
FlyString(String const&);
FlyString& operator=(String const&);
@ -54,6 +58,9 @@ public:
// FIXME: Remove these once all code has been ported to FlyString
[[nodiscard]] DeprecatedFlyString to_deprecated_fly_string() const;
static ErrorOr<FlyString> from_deprecated_fly_string(DeprecatedFlyString const&);
template<typename T>
requires(IsSame<RemoveCVReference<T>, StringView>)
static ErrorOr<String> from_deprecated_fly_string(T&&) = delete;
// Compare this FlyString against another string with ASCII caseless matching.
[[nodiscard]] bool equals_ignoring_ascii_case(FlyString const&) const;