mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 18:28:12 +00:00
AK: Support creating known short string literals at compile time
In cases where we know a string literal will fit in the short string storage, we can do so at compile time without needing to handle error propagation. If the provided string literal is too long, a compilation error will be emitted due to the failed VERIFY statement being a non- constant expression.
This commit is contained in:
parent
e634778679
commit
d48266a420
3 changed files with 45 additions and 16 deletions
|
@ -34,15 +34,25 @@ TEST_CASE(move_assignment)
|
|||
TEST_CASE(short_strings)
|
||||
{
|
||||
#ifdef AK_ARCH_64_BIT
|
||||
auto string = MUST(String::from_utf8("abcdefg"sv));
|
||||
EXPECT_EQ(string.is_short_string(), true);
|
||||
EXPECT_EQ(string.bytes().size(), 7u);
|
||||
EXPECT_EQ(string.bytes_as_string_view(), "abcdefg"sv);
|
||||
auto string1 = MUST(String::from_utf8("abcdefg"sv));
|
||||
EXPECT_EQ(string1.is_short_string(), true);
|
||||
EXPECT_EQ(string1.bytes().size(), 7u);
|
||||
EXPECT_EQ(string1.bytes_as_string_view(), "abcdefg"sv);
|
||||
|
||||
constexpr auto string2 = String::from_utf8_short_string("abcdefg"sv);
|
||||
EXPECT_EQ(string2.is_short_string(), true);
|
||||
EXPECT_EQ(string2.bytes().size(), 7u);
|
||||
EXPECT_EQ(string2, string1);
|
||||
#else
|
||||
auto string = MUST(String::from_utf8("abc"sv));
|
||||
EXPECT_EQ(string.is_short_string(), true);
|
||||
EXPECT_EQ(string.bytes().size(), 3u);
|
||||
EXPECT_EQ(string.bytes_as_string_view(), "abc"sv);
|
||||
auto string1 = MUST(String::from_utf8("abc"sv));
|
||||
EXPECT_EQ(string1.is_short_string(), true);
|
||||
EXPECT_EQ(string1.bytes().size(), 3u);
|
||||
EXPECT_EQ(string1.bytes_as_string_view(), "abc"sv);
|
||||
|
||||
constexpr auto string2 = String::from_utf8_short_string("abc"sv);
|
||||
EXPECT_EQ(string2.is_short_string(), true);
|
||||
EXPECT_EQ(string2.bytes().size(), 3u);
|
||||
EXPECT_EQ(string2, string1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue