mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:22:45 +00:00 
			
		
		
		
	AK+Everywhere: Rename FlyString to DeprecatedFlyString
DeprecatedFlyString relies heavily on DeprecatedString's StringImpl, so let's rename it to A) match the name of DeprecatedString, B) write a new FlyString class that is tied to String.
This commit is contained in:
		
							parent
							
								
									2eacc7aec1
								
							
						
					
					
						commit
						f3db548a3d
					
				
					 316 changed files with 1177 additions and 1177 deletions
				
			
		|  | @ -2,9 +2,9 @@ set(AK_SOURCES | ||||||
|     Assertions.cpp |     Assertions.cpp | ||||||
|     Base64.cpp |     Base64.cpp | ||||||
|     CircularBuffer.cpp |     CircularBuffer.cpp | ||||||
|  |     DeprecatedFlyString.cpp | ||||||
|     DeprecatedString.cpp |     DeprecatedString.cpp | ||||||
|     FloatingPointStringConversions.cpp |     FloatingPointStringConversions.cpp | ||||||
|     FlyString.cpp |  | ||||||
|     Format.cpp |     Format.cpp | ||||||
|     FuzzyMatch.cpp |     FuzzyMatch.cpp | ||||||
|     GenericLexer.cpp |     GenericLexer.cpp | ||||||
|  |  | ||||||
|  | @ -4,8 +4,8 @@ | ||||||
|  * SPDX-License-Identifier: BSD-2-Clause |  * SPDX-License-Identifier: BSD-2-Clause | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/HashTable.h> | #include <AK/HashTable.h> | ||||||
| #include <AK/Optional.h> | #include <AK/Optional.h> | ||||||
| #include <AK/Singleton.h> | #include <AK/Singleton.h> | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace AK { | namespace AK { | ||||||
| 
 | 
 | ||||||
| struct FlyStringImplTraits : public Traits<StringImpl*> { | struct DeprecatedFlyStringImplTraits : public Traits<StringImpl*> { | ||||||
|     static unsigned hash(StringImpl const* s) { return s ? s->hash() : 0; } |     static unsigned hash(StringImpl const* s) { return s ? s->hash() : 0; } | ||||||
|     static bool equals(StringImpl const* a, StringImpl const* b) |     static bool equals(StringImpl const* a, StringImpl const* b) | ||||||
|     { |     { | ||||||
|  | @ -24,19 +24,19 @@ struct FlyStringImplTraits : public Traits<StringImpl*> { | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static Singleton<HashTable<StringImpl*, FlyStringImplTraits>> s_table; | static Singleton<HashTable<StringImpl*, DeprecatedFlyStringImplTraits>> s_table; | ||||||
| 
 | 
 | ||||||
| static HashTable<StringImpl*, FlyStringImplTraits>& fly_impls() | static HashTable<StringImpl*, DeprecatedFlyStringImplTraits>& fly_impls() | ||||||
| { | { | ||||||
|     return *s_table; |     return *s_table; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void FlyString::did_destroy_impl(Badge<StringImpl>, StringImpl& impl) | void DeprecatedFlyString::did_destroy_impl(Badge<StringImpl>, StringImpl& impl) | ||||||
| { | { | ||||||
|     fly_impls().remove(&impl); |     fly_impls().remove(&impl); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString::FlyString(DeprecatedString const& string) | DeprecatedFlyString::DeprecatedFlyString(DeprecatedString const& string) | ||||||
| { | { | ||||||
|     if (string.is_null()) |     if (string.is_null()) | ||||||
|         return; |         return; | ||||||
|  | @ -55,7 +55,7 @@ FlyString::FlyString(DeprecatedString const& string) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString::FlyString(StringView string) | DeprecatedFlyString::DeprecatedFlyString(StringView string) | ||||||
| { | { | ||||||
|     if (string.is_null()) |     if (string.is_null()) | ||||||
|         return; |         return; | ||||||
|  | @ -74,70 +74,70 @@ FlyString::FlyString(StringView string) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
| Optional<T> FlyString::to_int(TrimWhitespace trim_whitespace) const | Optional<T> DeprecatedFlyString::to_int(TrimWhitespace trim_whitespace) const | ||||||
| { | { | ||||||
|     return StringUtils::convert_to_int<T>(view(), trim_whitespace); |     return StringUtils::convert_to_int<T>(view(), trim_whitespace); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template Optional<i8> FlyString::to_int(TrimWhitespace) const; | template Optional<i8> DeprecatedFlyString::to_int(TrimWhitespace) const; | ||||||
| template Optional<i16> FlyString::to_int(TrimWhitespace) const; | template Optional<i16> DeprecatedFlyString::to_int(TrimWhitespace) const; | ||||||
| template Optional<i32> FlyString::to_int(TrimWhitespace) const; | template Optional<i32> DeprecatedFlyString::to_int(TrimWhitespace) const; | ||||||
| template Optional<i64> FlyString::to_int(TrimWhitespace) const; | template Optional<i64> DeprecatedFlyString::to_int(TrimWhitespace) const; | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
| Optional<T> FlyString::to_uint(TrimWhitespace trim_whitespace) const | Optional<T> DeprecatedFlyString::to_uint(TrimWhitespace trim_whitespace) const | ||||||
| { | { | ||||||
|     return StringUtils::convert_to_uint<T>(view(), trim_whitespace); |     return StringUtils::convert_to_uint<T>(view(), trim_whitespace); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template Optional<u8> FlyString::to_uint(TrimWhitespace) const; | template Optional<u8> DeprecatedFlyString::to_uint(TrimWhitespace) const; | ||||||
| template Optional<u16> FlyString::to_uint(TrimWhitespace) const; | template Optional<u16> DeprecatedFlyString::to_uint(TrimWhitespace) const; | ||||||
| template Optional<u32> FlyString::to_uint(TrimWhitespace) const; | template Optional<u32> DeprecatedFlyString::to_uint(TrimWhitespace) const; | ||||||
| template Optional<u64> FlyString::to_uint(TrimWhitespace) const; | template Optional<u64> DeprecatedFlyString::to_uint(TrimWhitespace) const; | ||||||
| 
 | 
 | ||||||
| #ifndef KERNEL | #ifndef KERNEL | ||||||
| Optional<double> FlyString::to_double(TrimWhitespace trim_whitespace) const | Optional<double> DeprecatedFlyString::to_double(TrimWhitespace trim_whitespace) const | ||||||
| { | { | ||||||
|     return StringUtils::convert_to_floating_point<double>(view(), trim_whitespace); |     return StringUtils::convert_to_floating_point<double>(view(), trim_whitespace); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Optional<float> FlyString::to_float(TrimWhitespace trim_whitespace) const | Optional<float> DeprecatedFlyString::to_float(TrimWhitespace trim_whitespace) const | ||||||
| { | { | ||||||
|     return StringUtils::convert_to_floating_point<float>(view(), trim_whitespace); |     return StringUtils::convert_to_floating_point<float>(view(), trim_whitespace); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| bool FlyString::equals_ignoring_case(StringView other) const | bool DeprecatedFlyString::equals_ignoring_case(StringView other) const | ||||||
| { | { | ||||||
|     return StringUtils::equals_ignoring_case(view(), other); |     return StringUtils::equals_ignoring_case(view(), other); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool FlyString::starts_with(StringView str, CaseSensitivity case_sensitivity) const | bool DeprecatedFlyString::starts_with(StringView str, CaseSensitivity case_sensitivity) const | ||||||
| { | { | ||||||
|     return StringUtils::starts_with(view(), str, case_sensitivity); |     return StringUtils::starts_with(view(), str, case_sensitivity); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool FlyString::ends_with(StringView str, CaseSensitivity case_sensitivity) const | bool DeprecatedFlyString::ends_with(StringView str, CaseSensitivity case_sensitivity) const | ||||||
| { | { | ||||||
|     return StringUtils::ends_with(view(), str, case_sensitivity); |     return StringUtils::ends_with(view(), str, case_sensitivity); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString FlyString::to_lowercase() const | DeprecatedFlyString DeprecatedFlyString::to_lowercase() const | ||||||
| { | { | ||||||
|     return DeprecatedString(*m_impl).to_lowercase(); |     return DeprecatedString(*m_impl).to_lowercase(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool FlyString::operator==(DeprecatedString const& other) const | bool DeprecatedFlyString::operator==(DeprecatedString const& other) const | ||||||
| { | { | ||||||
|     return m_impl == other.impl() || view() == other.view(); |     return m_impl == other.impl() || view() == other.view(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool FlyString::operator==(StringView string) const | bool DeprecatedFlyString::operator==(StringView string) const | ||||||
| { | { | ||||||
|     return view() == string; |     return view() == string; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool FlyString::operator==(char const* string) const | bool DeprecatedFlyString::operator==(char const* string) const | ||||||
| { | { | ||||||
|     return view() == string; |     return view() == string; | ||||||
| } | } | ||||||
|  | @ -11,39 +11,39 @@ | ||||||
| 
 | 
 | ||||||
| namespace AK { | namespace AK { | ||||||
| 
 | 
 | ||||||
| class FlyString { | class DeprecatedFlyString { | ||||||
| public: | public: | ||||||
|     FlyString() = default; |     DeprecatedFlyString() = default; | ||||||
|     FlyString(FlyString const& other) |     DeprecatedFlyString(DeprecatedFlyString const& other) | ||||||
|         : m_impl(other.impl()) |         : m_impl(other.impl()) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     FlyString(FlyString&& other) |     DeprecatedFlyString(DeprecatedFlyString&& other) | ||||||
|         : m_impl(move(other.m_impl)) |         : m_impl(move(other.m_impl)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     FlyString(DeprecatedString const&); |     DeprecatedFlyString(DeprecatedString const&); | ||||||
|     FlyString(StringView); |     DeprecatedFlyString(StringView); | ||||||
|     FlyString(char const* string) |     DeprecatedFlyString(char const* string) | ||||||
|         : FlyString(static_cast<DeprecatedString>(string)) |         : DeprecatedFlyString(static_cast<DeprecatedString>(string)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static FlyString from_fly_impl(NonnullRefPtr<StringImpl> impl) |     static DeprecatedFlyString from_fly_impl(NonnullRefPtr<StringImpl> impl) | ||||||
|     { |     { | ||||||
|         VERIFY(impl->is_fly()); |         VERIFY(impl->is_fly()); | ||||||
|         FlyString string; |         DeprecatedFlyString string; | ||||||
|         string.m_impl = move(impl); |         string.m_impl = move(impl); | ||||||
|         return string; |         return string; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString& operator=(FlyString const& other) |     DeprecatedFlyString& operator=(DeprecatedFlyString const& other) | ||||||
|     { |     { | ||||||
|         m_impl = other.m_impl; |         m_impl = other.m_impl; | ||||||
|         return *this; |         return *this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString& operator=(FlyString&& other) |     DeprecatedFlyString& operator=(DeprecatedFlyString&& other) | ||||||
|     { |     { | ||||||
|         m_impl = move(other.m_impl); |         m_impl = move(other.m_impl); | ||||||
|         return *this; |         return *this; | ||||||
|  | @ -52,7 +52,7 @@ public: | ||||||
|     bool is_empty() const { return !m_impl || !m_impl->length(); } |     bool is_empty() const { return !m_impl || !m_impl->length(); } | ||||||
|     bool is_null() const { return !m_impl; } |     bool is_null() const { return !m_impl; } | ||||||
| 
 | 
 | ||||||
|     bool operator==(FlyString const& other) const { return m_impl == other.m_impl; } |     bool operator==(DeprecatedFlyString const& other) const { return m_impl == other.m_impl; } | ||||||
| 
 | 
 | ||||||
|     bool operator==(DeprecatedString const&) const; |     bool operator==(DeprecatedString const&) const; | ||||||
| 
 | 
 | ||||||
|  | @ -67,7 +67,7 @@ public: | ||||||
|     ALWAYS_INLINE u32 hash() const { return m_impl ? m_impl->existing_hash() : 0; } |     ALWAYS_INLINE u32 hash() const { return m_impl ? m_impl->existing_hash() : 0; } | ||||||
|     ALWAYS_INLINE StringView view() const { return m_impl ? m_impl->view() : StringView {}; } |     ALWAYS_INLINE StringView view() const { return m_impl ? m_impl->view() : StringView {}; } | ||||||
| 
 | 
 | ||||||
|     FlyString to_lowercase() const; |     DeprecatedFlyString to_lowercase() const; | ||||||
| 
 | 
 | ||||||
|     template<typename T = int> |     template<typename T = int> | ||||||
|     Optional<T> to_int(TrimWhitespace = TrimWhitespace::Yes) const; |     Optional<T> to_int(TrimWhitespace = TrimWhitespace::Yes) const; | ||||||
|  | @ -95,12 +95,12 @@ private: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<> | template<> | ||||||
| struct Traits<FlyString> : public GenericTraits<FlyString> { | struct Traits<DeprecatedFlyString> : public GenericTraits<DeprecatedFlyString> { | ||||||
|     static unsigned hash(FlyString const& s) { return s.hash(); } |     static unsigned hash(DeprecatedFlyString const& s) { return s.hash(); } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #if USING_AK_GLOBALLY | #if USING_AK_GLOBALLY | ||||||
| using AK::FlyString; | using AK::DeprecatedFlyString; | ||||||
| #endif | #endif | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <AK/ByteBuffer.h> | #include <AK/ByteBuffer.h> | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/Format.h> | #include <AK/Format.h> | ||||||
| #include <AK/Function.h> | #include <AK/Function.h> | ||||||
| #include <AK/StdLibExtras.h> | #include <AK/StdLibExtras.h> | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace AK { | namespace AK { | ||||||
| 
 | 
 | ||||||
| bool DeprecatedString::operator==(FlyString const& fly_string) const | bool DeprecatedString::operator==(DeprecatedFlyString const& fly_string) const | ||||||
| { | { | ||||||
|     return m_impl == fly_string.impl() || view() == fly_string.view(); |     return m_impl == fly_string.impl() || view() == fly_string.view(); | ||||||
| } | } | ||||||
|  | @ -375,7 +375,7 @@ DeprecatedString escape_html_entities(StringView html) | ||||||
|     return builder.to_deprecated_string(); |     return builder.to_deprecated_string(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| DeprecatedString::DeprecatedString(FlyString const& string) | DeprecatedString::DeprecatedString(DeprecatedFlyString const& string) | ||||||
|     : m_impl(string.impl()) |     : m_impl(string.impl()) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -93,7 +93,7 @@ public: | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     DeprecatedString(FlyString const&); |     DeprecatedString(DeprecatedFlyString const&); | ||||||
| 
 | 
 | ||||||
|     [[nodiscard]] static DeprecatedString repeated(char, size_t count); |     [[nodiscard]] static DeprecatedString repeated(char, size_t count); | ||||||
|     [[nodiscard]] static DeprecatedString repeated(StringView, size_t count); |     [[nodiscard]] static DeprecatedString repeated(StringView, size_t count); | ||||||
|  | @ -212,7 +212,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     bool operator==(StringView) const; |     bool operator==(StringView) const; | ||||||
| 
 | 
 | ||||||
|     bool operator==(FlyString const&) const; |     bool operator==(DeprecatedFlyString const&) const; | ||||||
| 
 | 
 | ||||||
|     bool operator<(DeprecatedString const&) const; |     bool operator<(DeprecatedString const&) const; | ||||||
|     bool operator<(char const*) const; |     bool operator<(char const*) const; | ||||||
|  |  | ||||||
|  | @ -461,7 +461,7 @@ template<> | ||||||
| struct Formatter<DeprecatedString> : Formatter<StringView> { | struct Formatter<DeprecatedString> : Formatter<StringView> { | ||||||
| }; | }; | ||||||
| template<> | template<> | ||||||
| struct Formatter<FlyString> : Formatter<StringView> { | struct Formatter<DeprecatedFlyString> : Formatter<StringView> { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<typename T> | template<typename T> | ||||||
|  |  | ||||||
|  | @ -27,13 +27,13 @@ class JsonArray; | ||||||
| class JsonObject; | class JsonObject; | ||||||
| class JsonValue; | class JsonValue; | ||||||
| class StackInfo; | class StackInfo; | ||||||
|  | class DeprecatedFlyString; | ||||||
| class DeprecatedString; | class DeprecatedString; | ||||||
| class StringBuilder; | class StringBuilder; | ||||||
| class StringImpl; | class StringImpl; | ||||||
| class StringView; | class StringView; | ||||||
| class Time; | class Time; | ||||||
| class URL; | class URL; | ||||||
| class FlyString; |  | ||||||
| class String; | class String; | ||||||
| class Utf16View; | class Utf16View; | ||||||
| class Utf32View; | class Utf32View; | ||||||
|  | @ -160,6 +160,7 @@ using AK::Bytes; | ||||||
| using AK::CircularBuffer; | using AK::CircularBuffer; | ||||||
| using AK::CircularDuplexStream; | using AK::CircularDuplexStream; | ||||||
| using AK::CircularQueue; | using AK::CircularQueue; | ||||||
|  | using AK::DeprecatedFlyString; | ||||||
| using AK::DeprecatedString; | using AK::DeprecatedString; | ||||||
| using AK::DoublyLinkedList; | using AK::DoublyLinkedList; | ||||||
| using AK::DuplexMemoryStream; | using AK::DuplexMemoryStream; | ||||||
|  | @ -167,7 +168,6 @@ using AK::Error; | ||||||
| using AK::ErrorOr; | using AK::ErrorOr; | ||||||
| using AK::FixedArray; | using AK::FixedArray; | ||||||
| using AK::FixedPoint; | using AK::FixedPoint; | ||||||
| using AK::FlyString; |  | ||||||
| using AK::Function; | using AK::Function; | ||||||
| using AK::GenericLexer; | using AK::GenericLexer; | ||||||
| using AK::HashMap; | using AK::HashMap; | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <AK/CharacterTypes.h> | #include <AK/CharacterTypes.h> | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/HashTable.h> | #include <AK/HashTable.h> | ||||||
| #include <AK/StringHash.h> | #include <AK/StringHash.h> | ||||||
| #include <AK/StringImpl.h> | #include <AK/StringImpl.h> | ||||||
|  | @ -32,7 +32,7 @@ StringImpl::StringImpl(ConstructWithInlineBufferTag, size_t length) | ||||||
| StringImpl::~StringImpl() | StringImpl::~StringImpl() | ||||||
| { | { | ||||||
|     if (m_fly) |     if (m_fly) | ||||||
|         FlyString::did_destroy_impl({}, *this); |         DeprecatedFlyString::did_destroy_impl({}, *this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NonnullRefPtr<StringImpl> StringImpl::create_uninitialized(size_t length, char*& buffer) | NonnullRefPtr<StringImpl> StringImpl::create_uninitialized(size_t length, char*& buffer) | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ public: | ||||||
|     unsigned case_insensitive_hash() const; |     unsigned case_insensitive_hash() const; | ||||||
| 
 | 
 | ||||||
|     bool is_fly() const { return m_fly; } |     bool is_fly() const { return m_fly; } | ||||||
|     void set_fly(Badge<FlyString>, bool fly) const { m_fly = fly; } |     void set_fly(Badge<DeprecatedFlyString>, bool fly) const { m_fly = fly; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     enum ConstructTheEmptyStringImplTag { |     enum ConstructTheEmptyStringImplTag { | ||||||
|  |  | ||||||
|  | @ -13,8 +13,8 @@ | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| 
 | 
 | ||||||
| #ifndef KERNEL | #ifndef KERNEL | ||||||
|  | #    include <AK/DeprecatedFlyString.h> | ||||||
| #    include <AK/DeprecatedString.h> | #    include <AK/DeprecatedString.h> | ||||||
| #    include <AK/FlyString.h> |  | ||||||
| #    include <AK/String.h> | #    include <AK/String.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | @ -33,7 +33,7 @@ StringView::StringView(DeprecatedString const& string) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| StringView::StringView(FlyString const& string) | StringView::StringView(DeprecatedFlyString const& string) | ||||||
|     : m_characters(string.characters()) |     : m_characters(string.characters()) | ||||||
|     , m_length(string.length()) |     , m_length(string.length()) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -50,14 +50,14 @@ public: | ||||||
| #ifndef KERNEL | #ifndef KERNEL | ||||||
|     StringView(String const&); |     StringView(String const&); | ||||||
|     StringView(DeprecatedString const&); |     StringView(DeprecatedString const&); | ||||||
|     StringView(FlyString const&); |     StringView(DeprecatedFlyString const&); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|     explicit StringView(ByteBuffer&&) = delete; |     explicit StringView(ByteBuffer&&) = delete; | ||||||
| #ifndef KERNEL | #ifndef KERNEL | ||||||
|     explicit StringView(String&&) = delete; |     explicit StringView(String&&) = delete; | ||||||
|     explicit StringView(DeprecatedString&&) = delete; |     explicit StringView(DeprecatedString&&) = delete; | ||||||
|     explicit StringView(FlyString&&) = delete; |     explicit StringView(DeprecatedFlyString&&) = delete; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|     [[nodiscard]] constexpr bool is_null() const |     [[nodiscard]] constexpr bool is_null() const | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #include <LibTest/TestCase.h> | #include <LibTest/TestCase.h> | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/StringBuilder.h> | #include <AK/StringBuilder.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| #include <cstring> | #include <cstring> | ||||||
|  | @ -145,18 +145,18 @@ TEST_CASE(to_uppercase) | ||||||
| TEST_CASE(flystring) | TEST_CASE(flystring) | ||||||
| { | { | ||||||
|     { |     { | ||||||
|         FlyString a("foo"); |         DeprecatedFlyString a("foo"); | ||||||
|         FlyString b("foo"); |         DeprecatedFlyString b("foo"); | ||||||
|         EXPECT_EQ(a.impl(), b.impl()); |         EXPECT_EQ(a.impl(), b.impl()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     { |     { | ||||||
|         DeprecatedString a = "foo"; |         DeprecatedString a = "foo"; | ||||||
|         FlyString b = a; |         DeprecatedFlyString b = a; | ||||||
|         StringBuilder builder; |         StringBuilder builder; | ||||||
|         builder.append('f'); |         builder.append('f'); | ||||||
|         builder.append("oo"sv); |         builder.append("oo"sv); | ||||||
|         FlyString c = builder.to_deprecated_string(); |         DeprecatedFlyString c = builder.to_deprecated_string(); | ||||||
|         EXPECT_EQ(a.impl(), b.impl()); |         EXPECT_EQ(a.impl(), b.impl()); | ||||||
|         EXPECT_EQ(a.impl(), c.impl()); |         EXPECT_EQ(a.impl(), c.impl()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -410,7 +410,7 @@ ErrorOr<NonnullOwnPtr<Profile>> Profile::load_from_perfcore_file(StringView path | ||||||
|             auto const& frame = stack_array.at(i); |             auto const& frame = stack_array.at(i); | ||||||
|             auto ptr = frame.to_number<u64>(); |             auto ptr = frame.to_number<u64>(); | ||||||
|             u32 offset = 0; |             u32 offset = 0; | ||||||
|             FlyString object_name; |             DeprecatedFlyString object_name; | ||||||
|             DeprecatedString symbol; |             DeprecatedString symbol; | ||||||
| 
 | 
 | ||||||
|             if (maybe_kernel_base.has_value() && ptr >= maybe_kernel_base.value()) { |             if (maybe_kernel_base.has_value() && ptr >= maybe_kernel_base.value()) { | ||||||
|  | @ -610,7 +610,7 @@ ProfileNode::ProfileNode(Process const& process) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ProfileNode::ProfileNode(Process const& process, FlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) | ProfileNode::ProfileNode(Process const& process, DeprecatedFlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) | ||||||
|     : m_process(process) |     : m_process(process) | ||||||
|     , m_symbol(move(symbol)) |     , m_symbol(move(symbol)) | ||||||
|     , m_pid(pid) |     , m_pid(pid) | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
| #include "SignpostsModel.h" | #include "SignpostsModel.h" | ||||||
| #include "SourceModel.h" | #include "SourceModel.h" | ||||||
| #include <AK/Bitmap.h> | #include <AK/Bitmap.h> | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/JsonArray.h> | #include <AK/JsonArray.h> | ||||||
| #include <AK/JsonObject.h> | #include <AK/JsonObject.h> | ||||||
| #include <AK/JsonValue.h> | #include <AK/JsonValue.h> | ||||||
|  | @ -34,7 +34,7 @@ extern OwnPtr<Debug::DebugInfo> g_kernel_debug_info; | ||||||
| 
 | 
 | ||||||
| class ProfileNode : public RefCounted<ProfileNode> { | class ProfileNode : public RefCounted<ProfileNode> { | ||||||
| public: | public: | ||||||
|     static NonnullRefPtr<ProfileNode> create(Process const& process, FlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) |     static NonnullRefPtr<ProfileNode> create(Process const& process, DeprecatedFlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) | ||||||
|     { |     { | ||||||
|         return adopt_ref(*new ProfileNode(process, object_name, move(symbol), address, offset, timestamp, pid)); |         return adopt_ref(*new ProfileNode(process, object_name, move(symbol), address, offset, timestamp, pid)); | ||||||
|     } |     } | ||||||
|  | @ -53,7 +53,7 @@ public: | ||||||
|     bool has_seen_event(size_t event_index) const { return m_seen_events.get(event_index); } |     bool has_seen_event(size_t event_index) const { return m_seen_events.get(event_index); } | ||||||
|     void did_see_event(size_t event_index) { m_seen_events.set(event_index, true); } |     void did_see_event(size_t event_index) { m_seen_events.set(event_index, true); } | ||||||
| 
 | 
 | ||||||
|     FlyString const& object_name() const { return m_object_name; } |     DeprecatedFlyString const& object_name() const { return m_object_name; } | ||||||
|     DeprecatedString const& symbol() const { return m_symbol; } |     DeprecatedString const& symbol() const { return m_symbol; } | ||||||
|     FlatPtr address() const { return m_address; } |     FlatPtr address() const { return m_address; } | ||||||
|     u32 offset() const { return m_offset; } |     u32 offset() const { return m_offset; } | ||||||
|  | @ -74,7 +74,7 @@ public: | ||||||
|         m_children.append(child); |         m_children.append(child); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     ProfileNode& find_or_create_child(FlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) |     ProfileNode& find_or_create_child(DeprecatedFlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t pid) | ||||||
|     { |     { | ||||||
|         for (size_t i = 0; i < m_children.size(); ++i) { |         for (size_t i = 0; i < m_children.size(); ++i) { | ||||||
|             auto& child = m_children[i]; |             auto& child = m_children[i]; | ||||||
|  | @ -112,12 +112,12 @@ public: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit ProfileNode(Process const&); |     explicit ProfileNode(Process const&); | ||||||
|     explicit ProfileNode(Process const&, FlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t); |     explicit ProfileNode(Process const&, DeprecatedFlyString const& object_name, DeprecatedString symbol, FlatPtr address, u32 offset, u64 timestamp, pid_t); | ||||||
| 
 | 
 | ||||||
|     bool m_root { false }; |     bool m_root { false }; | ||||||
|     Process const& m_process; |     Process const& m_process; | ||||||
|     ProfileNode* m_parent { nullptr }; |     ProfileNode* m_parent { nullptr }; | ||||||
|     FlyString m_object_name; |     DeprecatedFlyString m_object_name; | ||||||
|     DeprecatedString m_symbol; |     DeprecatedString m_symbol; | ||||||
|     pid_t m_pid { 0 }; |     pid_t m_pid { 0 }; | ||||||
|     FlatPtr m_address { 0 }; |     FlatPtr m_address { 0 }; | ||||||
|  | @ -166,7 +166,7 @@ public: | ||||||
|     Vector<NonnullRefPtr<ProfileNode>> const& roots() const { return m_roots; } |     Vector<NonnullRefPtr<ProfileNode>> const& roots() const { return m_roots; } | ||||||
| 
 | 
 | ||||||
|     struct Frame { |     struct Frame { | ||||||
|         FlyString object_name; |         DeprecatedFlyString object_name; | ||||||
|         DeprecatedString symbol; |         DeprecatedString symbol; | ||||||
|         FlatPtr address { 0 }; |         FlatPtr address { 0 }; | ||||||
|         u32 offset { 0 }; |         u32 offset { 0 }; | ||||||
|  |  | ||||||
|  | @ -5,9 +5,9 @@ | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <AK/Debug.h> | #include <AK/Debug.h> | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FixedArray.h> | #include <AK/FixedArray.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/Format.h> | #include <AK/Format.h> | ||||||
| #include <AK/IntegralMath.h> | #include <AK/IntegralMath.h> | ||||||
| #include <AK/Math.h> | #include <AK/Math.h> | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Error.h> | #include <AK/Error.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| namespace Audio { | namespace Audio { | ||||||
|  | @ -28,20 +28,20 @@ struct LoaderError { | ||||||
|     Category category { Category::Unknown }; |     Category category { Category::Unknown }; | ||||||
|     // Binary index: where in the file the error occurred.
 |     // Binary index: where in the file the error occurred.
 | ||||||
|     size_t index { 0 }; |     size_t index { 0 }; | ||||||
|     FlyString description { DeprecatedString::empty() }; |     DeprecatedFlyString description { DeprecatedString::empty() }; | ||||||
| 
 | 
 | ||||||
|     constexpr LoaderError() = default; |     constexpr LoaderError() = default; | ||||||
|     LoaderError(Category category, size_t index, FlyString description) |     LoaderError(Category category, size_t index, DeprecatedFlyString description) | ||||||
|         : category(category) |         : category(category) | ||||||
|         , index(index) |         , index(index) | ||||||
|         , description(move(description)) |         , description(move(description)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     LoaderError(FlyString description) |     LoaderError(DeprecatedFlyString description) | ||||||
|         : description(move(description)) |         : description(move(description)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|     LoaderError(Category category, FlyString description) |     LoaderError(Category category, DeprecatedFlyString description) | ||||||
|         : category(category) |         : category(category) | ||||||
|         , description(move(description)) |         , description(move(description)) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/NonnullRefPtrVector.h> | #include <AK/NonnullRefPtrVector.h> | ||||||
| #include <AK/Optional.h> | #include <AK/Optional.h> | ||||||
| #include <AK/RefCounted.h> | #include <AK/RefCounted.h> | ||||||
|  | @ -47,7 +47,7 @@ public: | ||||||
|         VERIFY(m_end.has_value()); |         VERIFY(m_end.has_value()); | ||||||
|         return m_end.value(); |         return m_end.value(); | ||||||
|     } |     } | ||||||
|     FlyString const& filename() const |     DeprecatedFlyString const& filename() const | ||||||
|     { |     { | ||||||
|         return m_filename; |         return m_filename; | ||||||
|     } |     } | ||||||
|  | @ -78,7 +78,7 @@ private: | ||||||
|     ASTNode* m_parent { nullptr }; |     ASTNode* m_parent { nullptr }; | ||||||
|     Optional<Position> m_start; |     Optional<Position> m_start; | ||||||
|     Optional<Position> m_end; |     Optional<Position> m_end; | ||||||
|     FlyString m_filename; |     DeprecatedFlyString m_filename; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class TranslationUnit : public ASTNode { | class TranslationUnit : public ASTNode { | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/Function.h> | #include <AK/Function.h> | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <AK/Optional.h> | #include <AK/Optional.h> | ||||||
|  | @ -28,7 +28,7 @@ public: | ||||||
|         DeprecatedString key; |         DeprecatedString key; | ||||||
|         Vector<DeprecatedString> parameters; |         Vector<DeprecatedString> parameters; | ||||||
|         DeprecatedString value; |         DeprecatedString value; | ||||||
|         FlyString filename; |         DeprecatedFlyString filename; | ||||||
|         size_t line { 0 }; |         size_t line { 0 }; | ||||||
|         size_t column { 0 }; |         size_t column { 0 }; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  | @ -86,8 +86,8 @@ void DebugInfo::prepare_lines() | ||||||
|         all_lines.extend(unit.line_program().lines()); |         all_lines.extend(unit.line_program().lines()); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     HashMap<FlyString, Optional<DeprecatedString>> memoized_full_paths; |     HashMap<DeprecatedFlyString, Optional<DeprecatedString>> memoized_full_paths; | ||||||
|     auto compute_full_path = [&](FlyString const& file_path) -> Optional<DeprecatedString> { |     auto compute_full_path = [&](DeprecatedFlyString const& file_path) -> Optional<DeprecatedString> { | ||||||
|         if (file_path.view().contains("Toolchain/"sv) || file_path.view().contains("libgcc"sv)) |         if (file_path.view().contains("Toolchain/"sv) || file_path.view().contains("libgcc"sv)) | ||||||
|             return {}; |             return {}; | ||||||
|         if (file_path.view().starts_with("./"sv) && !m_source_root.is_null()) |         if (file_path.view().starts_with("./"sv) && !m_source_root.is_null()) | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ public: | ||||||
|     ELF::Image const& elf() const { return m_elf; } |     ELF::Image const& elf() const { return m_elf; } | ||||||
| 
 | 
 | ||||||
|     struct SourcePosition { |     struct SourcePosition { | ||||||
|         FlyString file_path; |         DeprecatedFlyString file_path; | ||||||
|         size_t line_number { 0 }; |         size_t line_number { 0 }; | ||||||
|         Optional<FlatPtr> address_of_first_statement; |         Optional<FlatPtr> address_of_first_statement; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -138,7 +138,7 @@ void LineProgram::append_to_line_info() | ||||||
|     full_path.append('/'); |     full_path.append('/'); | ||||||
|     full_path.append(m_source_files[m_file_index].name); |     full_path.append(m_source_files[m_file_index].name); | ||||||
| 
 | 
 | ||||||
|     m_lines.append({ m_address, FlyString { full_path.string_view() }, m_line }); |     m_lines.append({ m_address, DeprecatedFlyString { full_path.string_view() }, m_line }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void LineProgram::reset_registers() | void LineProgram::reset_registers() | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/MemoryStream.h> | #include <AK/MemoryStream.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| #include <LibDebug/Dwarf/DwarfTypes.h> | #include <LibDebug/Dwarf/DwarfTypes.h> | ||||||
|  | @ -112,20 +112,20 @@ public: | ||||||
| 
 | 
 | ||||||
|     struct LineInfo { |     struct LineInfo { | ||||||
|         FlatPtr address { 0 }; |         FlatPtr address { 0 }; | ||||||
|         FlyString file; |         DeprecatedFlyString file; | ||||||
|         size_t line { 0 }; |         size_t line { 0 }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     Vector<LineInfo> const& lines() const { return m_lines; } |     Vector<LineInfo> const& lines() const { return m_lines; } | ||||||
| 
 | 
 | ||||||
|     struct DirectoryAndFile { |     struct DirectoryAndFile { | ||||||
|         FlyString directory; |         DeprecatedFlyString directory; | ||||||
|         FlyString filename; |         DeprecatedFlyString filename; | ||||||
|     }; |     }; | ||||||
|     DirectoryAndFile get_directory_and_file(size_t file_index) const; |     DirectoryAndFile get_directory_and_file(size_t file_index) const; | ||||||
| 
 | 
 | ||||||
|     struct FileEntry { |     struct FileEntry { | ||||||
|         FlyString name; |         DeprecatedFlyString name; | ||||||
|         size_t directory_index { 0 }; |         size_t directory_index { 0 }; | ||||||
|     }; |     }; | ||||||
|     Vector<FileEntry> const& source_files() const { return m_source_files; } |     Vector<FileEntry> const& source_files() const { return m_source_files; } | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
|  * SPDX-License-Identifier: BSD-2-Clause |  * SPDX-License-Identifier: BSD-2-Clause | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/NonnullRefPtrVector.h> | #include <AK/NonnullRefPtrVector.h> | ||||||
| #include <AK/Queue.h> | #include <AK/Queue.h> | ||||||
| #include <AK/QuickSort.h> | #include <AK/QuickSort.h> | ||||||
|  | @ -118,7 +118,7 @@ Font& FontDatabase::default_fixed_width_font() | ||||||
| 
 | 
 | ||||||
| struct FontDatabase::Private { | struct FontDatabase::Private { | ||||||
|     HashMap<DeprecatedString, NonnullRefPtr<Gfx::Font>> full_name_to_font_map; |     HashMap<DeprecatedString, NonnullRefPtr<Gfx::Font>> full_name_to_font_map; | ||||||
|     HashMap<FlyString, Vector<NonnullRefPtr<Typeface>>> typefaces; |     HashMap<DeprecatedFlyString, Vector<NonnullRefPtr<Typeface>>> typefaces; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void FontDatabase::load_all_fonts_from_path(DeprecatedString const& root) | void FontDatabase::load_all_fonts_from_path(DeprecatedString const& root) | ||||||
|  | @ -214,7 +214,7 @@ RefPtr<Gfx::Font> FontDatabase::get_by_name(StringView name) | ||||||
|     return it->value; |     return it->value; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RefPtr<Gfx::Font> FontDatabase::get(FlyString const& family, float point_size, unsigned weight, unsigned slope, Font::AllowInexactSizeMatch allow_inexact_size_match) | RefPtr<Gfx::Font> FontDatabase::get(DeprecatedFlyString const& family, float point_size, unsigned weight, unsigned slope, Font::AllowInexactSizeMatch allow_inexact_size_match) | ||||||
| { | { | ||||||
|     auto it = m_private->typefaces.find(family); |     auto it = m_private->typefaces.find(family); | ||||||
|     if (it == m_private->typefaces.end()) |     if (it == m_private->typefaces.end()) | ||||||
|  | @ -226,7 +226,7 @@ RefPtr<Gfx::Font> FontDatabase::get(FlyString const& family, float point_size, u | ||||||
|     return nullptr; |     return nullptr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RefPtr<Gfx::Font> FontDatabase::get(FlyString const& family, FlyString const& variant, float point_size, Font::AllowInexactSizeMatch allow_inexact_size_match) | RefPtr<Gfx::Font> FontDatabase::get(DeprecatedFlyString const& family, DeprecatedFlyString const& variant, float point_size, Font::AllowInexactSizeMatch allow_inexact_size_match) | ||||||
| { | { | ||||||
|     auto it = m_private->typefaces.find(family); |     auto it = m_private->typefaces.find(family); | ||||||
|     if (it == m_private->typefaces.end()) |     if (it == m_private->typefaces.end()) | ||||||
|  |  | ||||||
|  | @ -48,8 +48,8 @@ public: | ||||||
|     static void set_fixed_width_font_query(DeprecatedString); |     static void set_fixed_width_font_query(DeprecatedString); | ||||||
|     static void set_default_fonts_lookup_path(DeprecatedString); |     static void set_default_fonts_lookup_path(DeprecatedString); | ||||||
| 
 | 
 | ||||||
|     RefPtr<Gfx::Font> get(FlyString const& family, float point_size, unsigned weight, unsigned slope, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No); |     RefPtr<Gfx::Font> get(DeprecatedFlyString const& family, float point_size, unsigned weight, unsigned slope, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No); | ||||||
|     RefPtr<Gfx::Font> get(FlyString const& family, FlyString const& variant, float point_size, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No); |     RefPtr<Gfx::Font> get(DeprecatedFlyString const& family, DeprecatedFlyString const& variant, float point_size, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No); | ||||||
|     RefPtr<Gfx::Font> get_by_name(StringView); |     RefPtr<Gfx::Font> get_by_name(StringView); | ||||||
|     void for_each_font(Function<void(Gfx::Font const&)>); |     void for_each_font(Function<void(Gfx::Font const&)>); | ||||||
|     void for_each_fixed_width_font(Function<void(Gfx::Font const&)>); |     void for_each_fixed_width_font(Function<void(Gfx::Font const&)>); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Function.h> | #include <AK/Function.h> | ||||||
| #include <AK/RefCounted.h> | #include <AK/RefCounted.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
|  | @ -24,8 +24,8 @@ public: | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString const& family() const { return m_family; } |     DeprecatedFlyString const& family() const { return m_family; } | ||||||
|     FlyString const& variant() const { return m_variant; } |     DeprecatedFlyString const& variant() const { return m_variant; } | ||||||
|     unsigned weight() const; |     unsigned weight() const; | ||||||
|     u8 slope() const; |     u8 slope() const; | ||||||
| 
 | 
 | ||||||
|  | @ -39,8 +39,8 @@ public: | ||||||
|     RefPtr<Font> get_font(float point_size, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No) const; |     RefPtr<Font> get_font(float point_size, Font::AllowInexactSizeMatch = Font::AllowInexactSizeMatch::No) const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_family; |     DeprecatedFlyString m_family; | ||||||
|     FlyString m_variant; |     DeprecatedFlyString m_variant; | ||||||
| 
 | 
 | ||||||
|     Vector<RefPtr<BitmapFont>> m_bitmap_fonts; |     Vector<RefPtr<BitmapFont>> m_bitmap_fonts; | ||||||
|     RefPtr<VectorFont> m_vector_font; |     RefPtr<VectorFont> m_vector_font; | ||||||
|  |  | ||||||
|  | @ -85,7 +85,7 @@ static void print_indent(int indent) | ||||||
|     out("{}", DeprecatedString::repeated(' ', indent * 2)); |     out("{}", DeprecatedString::repeated(' ', indent * 2)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void update_function_name(Value value, FlyString const& name) | static void update_function_name(Value value, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     if (!value.is_function()) |     if (!value.is_function()) | ||||||
|         return; |         return; | ||||||
|  | @ -116,7 +116,7 @@ Completion ScopeNode::evaluate_statements(Interpreter& interpreter) const | ||||||
| 
 | 
 | ||||||
| // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | ||||||
| // BreakableStatement : IterationStatement
 | // BreakableStatement : IterationStatement
 | ||||||
| static Completion labelled_evaluation(Interpreter& interpreter, IterationStatement const& statement, Vector<FlyString> const& label_set) | static Completion labelled_evaluation(Interpreter& interpreter, IterationStatement const& statement, Vector<DeprecatedFlyString> const& label_set) | ||||||
| { | { | ||||||
|     // 1. Let stmtResult be Completion(LoopEvaluation of IterationStatement with argument labelSet).
 |     // 1. Let stmtResult be Completion(LoopEvaluation of IterationStatement with argument labelSet).
 | ||||||
|     auto result = statement.loop_evaluation(interpreter, label_set); |     auto result = statement.loop_evaluation(interpreter, label_set); | ||||||
|  | @ -137,7 +137,7 @@ static Completion labelled_evaluation(Interpreter& interpreter, IterationStateme | ||||||
| 
 | 
 | ||||||
| // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | ||||||
| // BreakableStatement : SwitchStatement
 | // BreakableStatement : SwitchStatement
 | ||||||
| static Completion labelled_evaluation(Interpreter& interpreter, SwitchStatement const& statement, Vector<FlyString> const&) | static Completion labelled_evaluation(Interpreter& interpreter, SwitchStatement const& statement, Vector<DeprecatedFlyString> const&) | ||||||
| { | { | ||||||
|     // 1. Let stmtResult be the result of evaluating SwitchStatement.
 |     // 1. Let stmtResult be the result of evaluating SwitchStatement.
 | ||||||
|     auto result = statement.execute_impl(interpreter); |     auto result = statement.execute_impl(interpreter); | ||||||
|  | @ -158,7 +158,7 @@ static Completion labelled_evaluation(Interpreter& interpreter, SwitchStatement | ||||||
| 
 | 
 | ||||||
| // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | ||||||
| // LabelledStatement : LabelIdentifier : LabelledItem
 | // LabelledStatement : LabelIdentifier : LabelledItem
 | ||||||
| static Completion labelled_evaluation(Interpreter& interpreter, LabelledStatement const& statement, Vector<FlyString> const& label_set) | static Completion labelled_evaluation(Interpreter& interpreter, LabelledStatement const& statement, Vector<DeprecatedFlyString> const& label_set) | ||||||
| { | { | ||||||
|     auto const& labelled_item = *statement.labelled_item(); |     auto const& labelled_item = *statement.labelled_item(); | ||||||
| 
 | 
 | ||||||
|  | @ -167,7 +167,7 @@ static Completion labelled_evaluation(Interpreter& interpreter, LabelledStatemen | ||||||
| 
 | 
 | ||||||
|     // 2. Let newLabelSet be the list-concatenation of labelSet and « label ».
 |     // 2. Let newLabelSet be the list-concatenation of labelSet and « label ».
 | ||||||
|     // Optimization: Avoid vector copy if possible.
 |     // Optimization: Avoid vector copy if possible.
 | ||||||
|     Optional<Vector<FlyString>> new_label_set; |     Optional<Vector<DeprecatedFlyString>> new_label_set; | ||||||
|     if (is<IterationStatement>(labelled_item) || is<SwitchStatement>(labelled_item) || is<LabelledStatement>(labelled_item)) { |     if (is<IterationStatement>(labelled_item) || is<SwitchStatement>(labelled_item) || is<LabelledStatement>(labelled_item)) { | ||||||
|         new_label_set = label_set; |         new_label_set = label_set; | ||||||
|         new_label_set->append(label); |         new_label_set->append(label); | ||||||
|  | @ -298,7 +298,7 @@ Completion FunctionExpression::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 15.2.5 Runtime Semantics: InstantiateOrdinaryFunctionExpression, https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression
 | // 15.2.5 Runtime Semantics: InstantiateOrdinaryFunctionExpression, https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression
 | ||||||
| Value FunctionExpression::instantiate_ordinary_function_expression(Interpreter& interpreter, FlyString given_name) const | Value FunctionExpression::instantiate_ordinary_function_expression(Interpreter& interpreter, DeprecatedFlyString given_name) const | ||||||
| { | { | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|     auto& realm = *vm.current_realm(); |     auto& realm = *vm.current_realm(); | ||||||
|  | @ -637,7 +637,7 @@ Completion WithStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.1.1 LoopContinues ( completion, labelSet ), https://tc39.es/ecma262/#sec-loopcontinues
 | // 14.7.1.1 LoopContinues ( completion, labelSet ), https://tc39.es/ecma262/#sec-loopcontinues
 | ||||||
| static bool loop_continues(Completion const& completion, Vector<FlyString> const& label_set) | static bool loop_continues(Completion const& completion, Vector<DeprecatedFlyString> const& label_set) | ||||||
| { | { | ||||||
|     // 1. If completion.[[Type]] is normal, return true.
 |     // 1. If completion.[[Type]] is normal, return true.
 | ||||||
|     if (completion.type() == Completion::Type::Normal) |     if (completion.type() == Completion::Type::Normal) | ||||||
|  | @ -669,7 +669,7 @@ Completion WhileStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.3.2 Runtime Semantics: WhileLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation
 | // 14.7.3.2 Runtime Semantics: WhileLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation
 | ||||||
| Completion WhileStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion WhileStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
| 
 | 
 | ||||||
|  | @ -711,7 +711,7 @@ Completion DoWhileStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.2.2 Runtime Semantics: DoWhileLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation
 | // 14.7.2.2 Runtime Semantics: DoWhileLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation
 | ||||||
| Completion DoWhileStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion DoWhileStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
| 
 | 
 | ||||||
|  | @ -753,7 +753,7 @@ Completion ForStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.4.2 Runtime Semantics: ForLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation
 | // 14.7.4.2 Runtime Semantics: ForLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation
 | ||||||
| Completion ForStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion ForStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|  | @ -1055,7 +1055,7 @@ Completion ForInStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | ||||||
| Completion ForInStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion ForInStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|  | @ -1121,7 +1121,7 @@ Completion ForOfStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | ||||||
| Completion ForOfStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion ForOfStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|  | @ -1185,7 +1185,7 @@ Completion ForAwaitOfStatement::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | ||||||
| Completion ForAwaitOfStatement::loop_evaluation(Interpreter& interpreter, Vector<FlyString> const& label_set) const | Completion ForAwaitOfStatement::loop_evaluation(Interpreter& interpreter, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     InterpreterNodeScope node_scope { interpreter, *this }; |     InterpreterNodeScope node_scope { interpreter, *this }; | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|  | @ -1653,7 +1653,7 @@ ThrowCompletionOr<ClassElement::ClassValue> ClassMethod::class_element_evaluatio | ||||||
| // 10.2.1.3 Runtime Semantics: EvaluateBody, https://tc39.es/ecma262/#sec-runtime-semantics-evaluatebody
 | // 10.2.1.3 Runtime Semantics: EvaluateBody, https://tc39.es/ecma262/#sec-runtime-semantics-evaluatebody
 | ||||||
| class ClassFieldInitializerStatement : public Statement { | class ClassFieldInitializerStatement : public Statement { | ||||||
| public: | public: | ||||||
|     ClassFieldInitializerStatement(SourceRange source_range, NonnullRefPtr<Expression> expression, FlyString field_name) |     ClassFieldInitializerStatement(SourceRange source_range, NonnullRefPtr<Expression> expression, DeprecatedFlyString field_name) | ||||||
|         : Statement(source_range) |         : Statement(source_range) | ||||||
|         , m_expression(move(expression)) |         , m_expression(move(expression)) | ||||||
|         , m_class_field_identifier_name(move(field_name)) |         , m_class_field_identifier_name(move(field_name)) | ||||||
|  | @ -1687,7 +1687,7 @@ public: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     NonnullRefPtr<Expression> m_expression; |     NonnullRefPtr<Expression> m_expression; | ||||||
|     FlyString m_class_field_identifier_name; // [[ClassFieldIdentifierName]]
 |     DeprecatedFlyString m_class_field_identifier_name; // [[ClassFieldIdentifierName]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // 15.7.10 Runtime Semantics: ClassFieldDefinitionEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-classfielddefinitionevaluation
 | // 15.7.10 Runtime Semantics: ClassFieldDefinitionEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-classfielddefinitionevaluation
 | ||||||
|  | @ -1722,19 +1722,19 @@ ThrowCompletionOr<ClassElement::ClassValue> ClassField::class_element_evaluation | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static Optional<FlyString> nullopt_or_private_identifier_description(Expression const& expression) | static Optional<DeprecatedFlyString> nullopt_or_private_identifier_description(Expression const& expression) | ||||||
| { | { | ||||||
|     if (is<PrivateIdentifier>(expression)) |     if (is<PrivateIdentifier>(expression)) | ||||||
|         return static_cast<PrivateIdentifier const&>(expression).string(); |         return static_cast<PrivateIdentifier const&>(expression).string(); | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Optional<FlyString> ClassField::private_bound_identifier() const | Optional<DeprecatedFlyString> ClassField::private_bound_identifier() const | ||||||
| { | { | ||||||
|     return nullopt_or_private_identifier_description(*m_key); |     return nullopt_or_private_identifier_description(*m_key); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Optional<FlyString> ClassMethod::private_bound_identifier() const | Optional<DeprecatedFlyString> ClassMethod::private_bound_identifier() const | ||||||
| { | { | ||||||
|     return nullopt_or_private_identifier_description(*m_key); |     return nullopt_or_private_identifier_description(*m_key); | ||||||
| } | } | ||||||
|  | @ -1834,7 +1834,7 @@ Completion ClassDeclaration::execute(Interpreter& interpreter) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 15.7.14 Runtime Semantics: ClassDefinitionEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-classdefinitionevaluation
 | // 15.7.14 Runtime Semantics: ClassDefinitionEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-classdefinitionevaluation
 | ||||||
| ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_evaluation(Interpreter& interpreter, FlyString const& binding_name, FlyString const& class_name) const | ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_evaluation(Interpreter& interpreter, DeprecatedFlyString const& binding_name, DeprecatedFlyString const& class_name) const | ||||||
| { | { | ||||||
|     auto& vm = interpreter.vm(); |     auto& vm = interpreter.vm(); | ||||||
|     auto& realm = *vm.current_realm(); |     auto& realm = *vm.current_realm(); | ||||||
|  | @ -2201,7 +2201,7 @@ void ClassDeclaration::dump(int indent) const | ||||||
|     m_class_expression->dump(indent + 1); |     m_class_expression->dump(indent + 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> ClassDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> ClassDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     if (m_class_expression->name().is_empty()) |     if (m_class_expression->name().is_empty()) | ||||||
|         return {}; |         return {}; | ||||||
|  | @ -2331,7 +2331,7 @@ bool BindingPattern::contains_expression() const | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> BindingPattern::for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> BindingPattern::for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     for (auto const& entry : entries) { |     for (auto const& entry : entries) { | ||||||
|         auto const& alias = entry.alias; |         auto const& alias = entry.alias; | ||||||
|  | @ -2411,7 +2411,7 @@ void FunctionNode::dump(int indent, DeprecatedString const& class_name) const | ||||||
|             if (parameter.is_rest) |             if (parameter.is_rest) | ||||||
|                 out("..."); |                 out("..."); | ||||||
|             parameter.binding.visit( |             parameter.binding.visit( | ||||||
|                 [&](FlyString const& name) { |                 [&](DeprecatedFlyString const& name) { | ||||||
|                     outln("{}", name); |                     outln("{}", name); | ||||||
|                 }, |                 }, | ||||||
|                 [&](BindingPattern const& pattern) { |                 [&](BindingPattern const& pattern) { | ||||||
|  | @ -2431,7 +2431,7 @@ void FunctionDeclaration::dump(int indent) const | ||||||
|     FunctionNode::dump(indent, class_name()); |     FunctionNode::dump(indent, class_name()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> FunctionDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> FunctionDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     if (name().is_empty()) |     if (name().is_empty()) | ||||||
|         return {}; |         return {}; | ||||||
|  | @ -2975,7 +2975,7 @@ Completion VariableDeclarator::execute(Interpreter& interpreter) const | ||||||
|     VERIFY_NOT_REACHED(); |     VERIFY_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> VariableDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> VariableDeclaration::for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     for (auto const& entry : declarations()) { |     for (auto const& entry : declarations()) { | ||||||
|         TRY(entry.target().visit( |         TRY(entry.target().visit( | ||||||
|  | @ -3808,7 +3808,7 @@ void CatchClause::dump(int indent) const | ||||||
| { | { | ||||||
|     print_indent(indent); |     print_indent(indent); | ||||||
|     m_parameter.visit( |     m_parameter.visit( | ||||||
|         [&](FlyString const& parameter) { |         [&](DeprecatedFlyString const& parameter) { | ||||||
|             if (parameter.is_null()) |             if (parameter.is_null()) | ||||||
|                 outln("CatchClause"); |                 outln("CatchClause"); | ||||||
|             else |             else | ||||||
|  | @ -3845,7 +3845,7 @@ Completion TryStatement::execute(Interpreter& interpreter) const | ||||||
|         auto catch_environment = new_declarative_environment(*old_environment); |         auto catch_environment = new_declarative_environment(*old_environment); | ||||||
| 
 | 
 | ||||||
|         m_handler->parameter().visit( |         m_handler->parameter().visit( | ||||||
|             [&](FlyString const& parameter) { |             [&](DeprecatedFlyString const& parameter) { | ||||||
|                 // 3. For each element argName of the BoundNames of CatchParameter, do
 |                 // 3. For each element argName of the BoundNames of CatchParameter, do
 | ||||||
|                 // a. Perform ! catchEnv.CreateMutableBinding(argName, false).
 |                 // a. Perform ! catchEnv.CreateMutableBinding(argName, false).
 | ||||||
|                 MUST(catch_environment->create_mutable_binding(vm, parameter, false)); |                 MUST(catch_environment->create_mutable_binding(vm, parameter, false)); | ||||||
|  | @ -3863,7 +3863,7 @@ Completion TryStatement::execute(Interpreter& interpreter) const | ||||||
| 
 | 
 | ||||||
|         // 5. Let status be Completion(BindingInitialization of CatchParameter with arguments thrownValue and catchEnv).
 |         // 5. Let status be Completion(BindingInitialization of CatchParameter with arguments thrownValue and catchEnv).
 | ||||||
|         auto status = m_handler->parameter().visit( |         auto status = m_handler->parameter().visit( | ||||||
|             [&](FlyString const& parameter) { |             [&](DeprecatedFlyString const& parameter) { | ||||||
|                 return catch_environment->initialize_binding(vm, parameter, thrown_value); |                 return catch_environment->initialize_binding(vm, parameter, thrown_value); | ||||||
|             }, |             }, | ||||||
|             [&](NonnullRefPtr<BindingPattern> const& pattern) { |             [&](NonnullRefPtr<BindingPattern> const& pattern) { | ||||||
|  | @ -4333,7 +4333,7 @@ ThrowCompletionOr<void> ScopeNode::for_each_lexically_scoped_declaration(ThrowCo | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> ScopeNode::for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> ScopeNode::for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     for (auto const& declaration : m_lexical_declarations) { |     for (auto const& declaration : m_lexical_declarations) { | ||||||
|         TRY(declaration.for_each_bound_name([&](auto const& name) { |         TRY(declaration.for_each_bound_name([&](auto const& name) { | ||||||
|  | @ -4343,7 +4343,7 @@ ThrowCompletionOr<void> ScopeNode::for_each_lexically_declared_name(ThrowComplet | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> ScopeNode::for_each_var_declared_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const | ThrowCompletionOr<void> ScopeNode::for_each_var_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const | ||||||
| { | { | ||||||
|     for (auto& declaration : m_var_declarations) { |     for (auto& declaration : m_var_declarations) { | ||||||
|         TRY(declaration.for_each_bound_name([&](auto const& name) { |         TRY(declaration.for_each_bound_name([&](auto const& name) { | ||||||
|  | @ -4407,7 +4407,7 @@ Completion ImportStatement::execute(Interpreter& interpreter) const | ||||||
|     return Optional<Value> {}; |     return Optional<Value> {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString ExportStatement::local_name_for_default = "*default*"; | DeprecatedFlyString ExportStatement::local_name_for_default = "*default*"; | ||||||
| 
 | 
 | ||||||
| // 16.2.3.7 Runtime Semantics: Evaluation, https://tc39.es/ecma262/#sec-exports-runtime-semantics-evaluation
 | // 16.2.3.7 Runtime Semantics: Evaluation, https://tc39.es/ecma262/#sec-exports-runtime-semantics-evaluation
 | ||||||
| Completion ExportStatement::execute(Interpreter& interpreter) const | Completion ExportStatement::execute(Interpreter& interpreter) const | ||||||
|  | @ -4557,7 +4557,7 @@ void ImportStatement::dump(int indent) const | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool ExportStatement::has_export(FlyString const& export_name) const | bool ExportStatement::has_export(DeprecatedFlyString const& export_name) const | ||||||
| { | { | ||||||
|     return any_of(m_entries.begin(), m_entries.end(), [&](auto& entry) { |     return any_of(m_entries.begin(), m_entries.end(), [&](auto& entry) { | ||||||
|         // Make sure that empty exported names does not overlap with anything
 |         // Make sure that empty exported names does not overlap with anything
 | ||||||
|  | @ -4567,7 +4567,7 @@ bool ExportStatement::has_export(FlyString const& export_name) const | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool ImportStatement::has_bound_name(FlyString const& name) const | bool ImportStatement::has_bound_name(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     return any_of(m_entries.begin(), m_entries.end(), [&](auto& entry) { |     return any_of(m_entries.begin(), m_entries.end(), [&](auto& entry) { | ||||||
|         return entry.local_name == name; |         return entry.local_name == name; | ||||||
|  | @ -4613,7 +4613,7 @@ ThrowCompletionOr<void> Program::global_declaration_instantiation(Interpreter& i | ||||||
|     // 1. Let lexNames be the LexicallyDeclaredNames of script.
 |     // 1. Let lexNames be the LexicallyDeclaredNames of script.
 | ||||||
|     // 2. Let varNames be the VarDeclaredNames of script.
 |     // 2. Let varNames be the VarDeclaredNames of script.
 | ||||||
|     // 3. For each element name of lexNames, do
 |     // 3. For each element name of lexNames, do
 | ||||||
|     TRY(for_each_lexically_declared_name([&](FlyString const& name) -> ThrowCompletionOr<void> { |     TRY(for_each_lexically_declared_name([&](DeprecatedFlyString const& name) -> ThrowCompletionOr<void> { | ||||||
|         // a. If env.HasVarDeclaration(name) is true, throw a SyntaxError exception.
 |         // a. If env.HasVarDeclaration(name) is true, throw a SyntaxError exception.
 | ||||||
|         if (global_environment.has_var_declaration(name)) |         if (global_environment.has_var_declaration(name)) | ||||||
|             return vm.throw_completion<SyntaxError>(ErrorType::TopLevelVariableAlreadyDeclared, name); |             return vm.throw_completion<SyntaxError>(ErrorType::TopLevelVariableAlreadyDeclared, name); | ||||||
|  | @ -4646,7 +4646,7 @@ ThrowCompletionOr<void> Program::global_declaration_instantiation(Interpreter& i | ||||||
|     Vector<FunctionDeclaration const&> functions_to_initialize; |     Vector<FunctionDeclaration const&> functions_to_initialize; | ||||||
| 
 | 
 | ||||||
|     // 7. Let declaredFunctionNames be a new empty List.
 |     // 7. Let declaredFunctionNames be a new empty List.
 | ||||||
|     HashTable<FlyString> declared_function_names; |     HashTable<DeprecatedFlyString> declared_function_names; | ||||||
| 
 | 
 | ||||||
|     // 8. For each element d of varDeclarations, in reverse List order, do
 |     // 8. For each element d of varDeclarations, in reverse List order, do
 | ||||||
| 
 | 
 | ||||||
|  | @ -4681,7 +4681,7 @@ ThrowCompletionOr<void> Program::global_declaration_instantiation(Interpreter& i | ||||||
|     })); |     })); | ||||||
| 
 | 
 | ||||||
|     // 9. Let declaredVarNames be a new empty List.
 |     // 9. Let declaredVarNames be a new empty List.
 | ||||||
|     HashTable<FlyString> declared_var_names; |     HashTable<DeprecatedFlyString> declared_var_names; | ||||||
| 
 | 
 | ||||||
|     // 10. For each element d of varDeclarations, do
 |     // 10. For each element d of varDeclarations, do
 | ||||||
|     TRY(for_each_var_scoped_variable_declaration([&](Declaration const& declaration) { |     TRY(for_each_var_scoped_variable_declaration([&](Declaration const& declaration) { | ||||||
|  | @ -4808,7 +4808,7 @@ ThrowCompletionOr<void> Program::global_declaration_instantiation(Interpreter& i | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ModuleRequest::ModuleRequest(FlyString module_specifier_, Vector<Assertion> assertions_) | ModuleRequest::ModuleRequest(DeprecatedFlyString module_specifier_, Vector<Assertion> assertions_) | ||||||
|     : module_specifier(move(module_specifier_)) |     : module_specifier(move(module_specifier_)) | ||||||
|     , assertions(move(assertions_)) |     , assertions(move(assertions_)) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -8,8 +8,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <AK/NonnullRefPtrVector.h> | #include <AK/NonnullRefPtrVector.h> | ||||||
| #include <AK/OwnPtr.h> | #include <AK/OwnPtr.h> | ||||||
|  | @ -152,7 +152,7 @@ public: | ||||||
| // 14.13 Labelled Statements, https://tc39.es/ecma262/#sec-labelled-statements
 | // 14.13 Labelled Statements, https://tc39.es/ecma262/#sec-labelled-statements
 | ||||||
| class LabelledStatement : public Statement { | class LabelledStatement : public Statement { | ||||||
| public: | public: | ||||||
|     LabelledStatement(SourceRange source_range, FlyString label, NonnullRefPtr<Statement> labelled_item) |     LabelledStatement(SourceRange source_range, DeprecatedFlyString label, NonnullRefPtr<Statement> labelled_item) | ||||||
|         : Statement(source_range) |         : Statement(source_range) | ||||||
|         , m_label(move(label)) |         , m_label(move(label)) | ||||||
|         , m_labelled_item(move(labelled_item)) |         , m_labelled_item(move(labelled_item)) | ||||||
|  | @ -162,17 +162,17 @@ public: | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const; | ||||||
| 
 | 
 | ||||||
|     FlyString const& label() const { return m_label; } |     DeprecatedFlyString const& label() const { return m_label; } | ||||||
|     FlyString& label() { return m_label; } |     DeprecatedFlyString& label() { return m_label; } | ||||||
|     NonnullRefPtr<Statement> const& labelled_item() const { return m_labelled_item; } |     NonnullRefPtr<Statement> const& labelled_item() const { return m_labelled_item; } | ||||||
|     NonnullRefPtr<Statement>& labelled_item() { return m_labelled_item; } |     NonnullRefPtr<Statement>& labelled_item() { return m_labelled_item; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_labelled_statement() const final { return true; } |     virtual bool is_labelled_statement() const final { return true; } | ||||||
| 
 | 
 | ||||||
|     FlyString m_label; |     DeprecatedFlyString m_label; | ||||||
|     NonnullRefPtr<Statement> m_labelled_item; |     NonnullRefPtr<Statement> m_labelled_item; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -180,19 +180,19 @@ class LabelableStatement : public Statement { | ||||||
| public: | public: | ||||||
|     using Statement::Statement; |     using Statement::Statement; | ||||||
| 
 | 
 | ||||||
|     Vector<FlyString> const& labels() const { return m_labels; } |     Vector<DeprecatedFlyString> const& labels() const { return m_labels; } | ||||||
|     virtual void add_label(FlyString string) { m_labels.append(move(string)); } |     virtual void add_label(DeprecatedFlyString string) { m_labels.append(move(string)); } | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     Vector<FlyString> m_labels; |     Vector<DeprecatedFlyString> m_labels; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class IterationStatement : public Statement { | class IterationStatement : public Statement { | ||||||
| public: | public: | ||||||
|     using Statement::Statement; |     using Statement::Statement; | ||||||
| 
 | 
 | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const = 0; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const = 0; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_iteration_statement() const final { return true; } |     virtual bool is_iteration_statement() const final { return true; } | ||||||
|  | @ -305,9 +305,9 @@ public: | ||||||
|     [[nodiscard]] size_t lexical_declaration_count() const { return m_lexical_declarations.size(); } |     [[nodiscard]] size_t lexical_declaration_count() const { return m_lexical_declarations.size(); } | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> for_each_lexically_scoped_declaration(ThrowCompletionOrVoidCallback<Declaration const&>&& callback) const; |     ThrowCompletionOr<void> for_each_lexically_scoped_declaration(ThrowCompletionOrVoidCallback<Declaration const&>&& callback) const; | ||||||
|     ThrowCompletionOr<void> for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const; |     ThrowCompletionOr<void> for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const; | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> for_each_var_declared_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const; |     ThrowCompletionOr<void> for_each_var_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const; | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> for_each_var_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback<FunctionDeclaration const&>&& callback) const; |     ThrowCompletionOr<void> for_each_var_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback<FunctionDeclaration const&>&& callback) const; | ||||||
|     ThrowCompletionOr<void> for_each_var_scoped_variable_declaration(ThrowCompletionOrVoidCallback<VariableDeclaration const&>&& callback) const; |     ThrowCompletionOr<void> for_each_var_scoped_variable_declaration(ThrowCompletionOrVoidCallback<VariableDeclaration const&>&& callback) const; | ||||||
|  | @ -334,11 +334,11 @@ private: | ||||||
| 
 | 
 | ||||||
| // ImportEntry Record, https://tc39.es/ecma262/#table-importentry-record-fields
 | // ImportEntry Record, https://tc39.es/ecma262/#table-importentry-record-fields
 | ||||||
| struct ImportEntry { | struct ImportEntry { | ||||||
|     FlyString import_name;       // [[ImportName]] if a String
 |     DeprecatedFlyString import_name; // [[ImportName]] if a String
 | ||||||
|     FlyString local_name;        // [[LocalName]]
 |     DeprecatedFlyString local_name;  // [[LocalName]]
 | ||||||
|     bool is_namespace { false }; // [[ImportName]] if `namespace-object`
 |     bool is_namespace { false };     // [[ImportName]] if `namespace-object`
 | ||||||
| 
 | 
 | ||||||
|     ImportEntry(FlyString import_name_, FlyString local_name_, bool is_namespace_ = false) |     ImportEntry(DeprecatedFlyString import_name_, DeprecatedFlyString local_name_, bool is_namespace_ = false) | ||||||
|         : import_name(move(import_name_)) |         : import_name(move(import_name_)) | ||||||
|         , local_name(move(local_name_)) |         , local_name(move(local_name_)) | ||||||
|         , is_namespace(is_namespace_) |         , is_namespace(is_namespace_) | ||||||
|  | @ -372,7 +372,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
| 
 | 
 | ||||||
|     bool has_bound_name(FlyString const& name) const; |     bool has_bound_name(DeprecatedFlyString const& name) const; | ||||||
|     Vector<ImportEntry> const& entries() const { return m_entries; } |     Vector<ImportEntry> const& entries() const { return m_entries; } | ||||||
|     ModuleRequest const& module_request() const { return m_module_request; } |     ModuleRequest const& module_request() const { return m_module_request; } | ||||||
|     ModuleRequest& module_request() { return m_module_request; } |     ModuleRequest& module_request() { return m_module_request; } | ||||||
|  | @ -395,10 +395,10 @@ struct ExportEntry { | ||||||
|         EmptyNamedExport, |         EmptyNamedExport, | ||||||
|     } kind; |     } kind; | ||||||
| 
 | 
 | ||||||
|     FlyString export_name;          // [[ExportName]]
 |     DeprecatedFlyString export_name;          // [[ExportName]]
 | ||||||
|     FlyString local_or_import_name; // Either [[ImportName]] or [[LocalName]]
 |     DeprecatedFlyString local_or_import_name; // Either [[ImportName]] or [[LocalName]]
 | ||||||
| 
 | 
 | ||||||
|     ExportEntry(Kind export_kind, FlyString export_name_, FlyString local_or_import_name_) |     ExportEntry(Kind export_kind, DeprecatedFlyString export_name_, DeprecatedFlyString local_or_import_name_) | ||||||
|         : kind(export_kind) |         : kind(export_kind) | ||||||
|         , export_name(move(export_name_)) |         , export_name(move(export_name_)) | ||||||
|         , local_or_import_name(move(local_or_import_name_)) |         , local_or_import_name(move(local_or_import_name_)) | ||||||
|  | @ -410,7 +410,7 @@ struct ExportEntry { | ||||||
|         return m_module_request != nullptr; |         return m_module_request != nullptr; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static ExportEntry indirect_export_entry(ModuleRequest const& module_request, FlyString export_name, FlyString import_name) |     static ExportEntry indirect_export_entry(ModuleRequest const& module_request, DeprecatedFlyString export_name, DeprecatedFlyString import_name) | ||||||
|     { |     { | ||||||
|         ExportEntry entry { Kind::NamedExport, move(export_name), move(import_name) }; |         ExportEntry entry { Kind::NamedExport, move(export_name), move(import_name) }; | ||||||
|         entry.m_module_request = &module_request; |         entry.m_module_request = &module_request; | ||||||
|  | @ -428,7 +428,7 @@ private: | ||||||
|     friend class ExportStatement; |     friend class ExportStatement; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     static ExportEntry named_export(FlyString export_name, FlyString local_name) |     static ExportEntry named_export(DeprecatedFlyString export_name, DeprecatedFlyString local_name) | ||||||
|     { |     { | ||||||
|         return ExportEntry { Kind::NamedExport, move(export_name), move(local_name) }; |         return ExportEntry { Kind::NamedExport, move(export_name), move(local_name) }; | ||||||
|     } |     } | ||||||
|  | @ -438,7 +438,7 @@ public: | ||||||
|         return ExportEntry { Kind::ModuleRequestAllButDefault, {}, {} }; |         return ExportEntry { Kind::ModuleRequestAllButDefault, {}, {} }; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static ExportEntry all_module_request(FlyString export_name) |     static ExportEntry all_module_request(DeprecatedFlyString export_name) | ||||||
|     { |     { | ||||||
|         return ExportEntry { Kind::ModuleRequestAll, move(export_name), {} }; |         return ExportEntry { Kind::ModuleRequestAll, move(export_name), {} }; | ||||||
|     } |     } | ||||||
|  | @ -451,7 +451,7 @@ public: | ||||||
| 
 | 
 | ||||||
| class ExportStatement final : public Statement { | class ExportStatement final : public Statement { | ||||||
| public: | public: | ||||||
|     static FlyString local_name_for_default; |     static DeprecatedFlyString local_name_for_default; | ||||||
| 
 | 
 | ||||||
|     ExportStatement(SourceRange source_range, RefPtr<ASTNode> statement, Vector<ExportEntry> entries, bool is_default_export, ModuleRequest module_request) |     ExportStatement(SourceRange source_range, RefPtr<ASTNode> statement, Vector<ExportEntry> entries, bool is_default_export, ModuleRequest module_request) | ||||||
|         : Statement(source_range) |         : Statement(source_range) | ||||||
|  | @ -470,7 +470,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
| 
 | 
 | ||||||
|     bool has_export(FlyString const& export_name) const; |     bool has_export(DeprecatedFlyString const& export_name) const; | ||||||
| 
 | 
 | ||||||
|     bool has_statement() const { return m_statement; } |     bool has_statement() const { return m_statement; } | ||||||
|     Vector<ExportEntry> const& entries() const { return m_entries; } |     Vector<ExportEntry> const& entries() const { return m_entries; } | ||||||
|  | @ -592,7 +592,7 @@ public: | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const = 0; |     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const = 0; | ||||||
| 
 | 
 | ||||||
|     // 8.1.3 Static Semantics: IsConstantDeclaration, https://tc39.es/ecma262/#sec-static-semantics-isconstantdeclaration
 |     // 8.1.3 Static Semantics: IsConstantDeclaration, https://tc39.es/ecma262/#sec-static-semantics-isconstantdeclaration
 | ||||||
|     virtual bool is_constant_declaration() const { return false; } |     virtual bool is_constant_declaration() const { return false; } | ||||||
|  | @ -608,7 +608,7 @@ public: | ||||||
|     } |     } | ||||||
|     Completion execute(Interpreter&) const override { return {}; } |     Completion execute(Interpreter&) const override { return {}; } | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&&) const override |     ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&&) const override | ||||||
|     { |     { | ||||||
|         VERIFY_NOT_REACHED(); |         VERIFY_NOT_REACHED(); | ||||||
|     } |     } | ||||||
|  | @ -633,7 +633,7 @@ struct BindingPattern : RefCounted<BindingPattern> { | ||||||
| 
 | 
 | ||||||
|     void dump(int indent) const; |     void dump(int indent) const; | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const; |     ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const; | ||||||
| 
 | 
 | ||||||
|     bool contains_expression() const; |     bool contains_expression() const; | ||||||
| 
 | 
 | ||||||
|  | @ -642,14 +642,14 @@ struct BindingPattern : RefCounted<BindingPattern> { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct FunctionParameter { | struct FunctionParameter { | ||||||
|     Variant<FlyString, NonnullRefPtr<BindingPattern>> binding; |     Variant<DeprecatedFlyString, NonnullRefPtr<BindingPattern>> binding; | ||||||
|     RefPtr<Expression> default_value; |     RefPtr<Expression> default_value; | ||||||
|     bool is_rest { false }; |     bool is_rest { false }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class FunctionNode { | class FunctionNode { | ||||||
| public: | public: | ||||||
|     FlyString const& name() const { return m_name; } |     DeprecatedFlyString const& name() const { return m_name; } | ||||||
|     DeprecatedString const& source_text() const { return m_source_text; } |     DeprecatedString const& source_text() const { return m_source_text; } | ||||||
|     Statement const& body() const { return *m_body; } |     Statement const& body() const { return *m_body; } | ||||||
|     Vector<FunctionParameter> const& parameters() const { return m_parameters; }; |     Vector<FunctionParameter> const& parameters() const { return m_parameters; }; | ||||||
|  | @ -661,7 +661,7 @@ public: | ||||||
|     FunctionKind kind() const { return m_kind; } |     FunctionKind kind() const { return m_kind; } | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     FunctionNode(FlyString name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function) |     FunctionNode(DeprecatedFlyString name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function) | ||||||
|         : m_name(move(name)) |         : m_name(move(name)) | ||||||
|         , m_source_text(move(source_text)) |         , m_source_text(move(source_text)) | ||||||
|         , m_body(move(body)) |         , m_body(move(body)) | ||||||
|  | @ -680,7 +680,7 @@ protected: | ||||||
|     void dump(int indent, DeprecatedString const& class_name) const; |     void dump(int indent, DeprecatedString const& class_name) const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_name; |     DeprecatedFlyString m_name; | ||||||
|     DeprecatedString m_source_text; |     DeprecatedString m_source_text; | ||||||
|     NonnullRefPtr<Statement> m_body; |     NonnullRefPtr<Statement> m_body; | ||||||
|     Vector<FunctionParameter> const m_parameters; |     Vector<FunctionParameter> const m_parameters; | ||||||
|  | @ -698,7 +698,7 @@ class FunctionDeclaration final | ||||||
| public: | public: | ||||||
|     static bool must_have_name() { return true; } |     static bool must_have_name() { return true; } | ||||||
| 
 | 
 | ||||||
|     FunctionDeclaration(SourceRange source_range, FlyString const& name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval) |     FunctionDeclaration(SourceRange source_range, DeprecatedFlyString const& name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval) | ||||||
|         : Declaration(source_range) |         : Declaration(source_range) | ||||||
|         , FunctionNode(name, move(source_text), move(body), move(parameters), function_length, kind, is_strict_mode, might_need_arguments_object, contains_direct_call_to_eval, false) |         , FunctionNode(name, move(source_text), move(body), move(parameters), function_length, kind, is_strict_mode, might_need_arguments_object, contains_direct_call_to_eval, false) | ||||||
|     { |     { | ||||||
|  | @ -708,7 +708,7 @@ public: | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const override; |     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const override; | ||||||
| 
 | 
 | ||||||
|     virtual bool is_function_declaration() const override { return true; } |     virtual bool is_function_declaration() const override { return true; } | ||||||
| 
 | 
 | ||||||
|  | @ -724,7 +724,7 @@ class FunctionExpression final | ||||||
| public: | public: | ||||||
|     static bool must_have_name() { return false; } |     static bool must_have_name() { return false; } | ||||||
| 
 | 
 | ||||||
|     FunctionExpression(SourceRange source_range, FlyString const& name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function = false) |     FunctionExpression(SourceRange source_range, DeprecatedFlyString const& name, DeprecatedString source_text, NonnullRefPtr<Statement> body, Vector<FunctionParameter> parameters, i32 function_length, FunctionKind kind, bool is_strict_mode, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function = false) | ||||||
|         : Expression(source_range) |         : Expression(source_range) | ||||||
|         , FunctionNode(name, move(source_text), move(body), move(parameters), function_length, kind, is_strict_mode, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function) |         , FunctionNode(name, move(source_text), move(body), move(parameters), function_length, kind, is_strict_mode, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function) | ||||||
|     { |     { | ||||||
|  | @ -737,7 +737,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     bool has_name() const { return !name().is_empty(); } |     bool has_name() const { return !name().is_empty(); } | ||||||
| 
 | 
 | ||||||
|     Value instantiate_ordinary_function_expression(Interpreter&, FlyString given_name) const; |     Value instantiate_ordinary_function_expression(Interpreter&, DeprecatedFlyString given_name) const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_function_expression() const override { return true; } |     virtual bool is_function_expression() const override { return true; } | ||||||
|  | @ -845,10 +845,10 @@ public: | ||||||
|     Statement const& body() const { return *m_body; } |     Statement const& body() const { return *m_body; } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     NonnullRefPtr<Expression> m_test; |     NonnullRefPtr<Expression> m_test; | ||||||
|  | @ -868,10 +868,10 @@ public: | ||||||
|     Statement const& body() const { return *m_body; } |     Statement const& body() const { return *m_body; } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     NonnullRefPtr<Expression> m_test; |     NonnullRefPtr<Expression> m_test; | ||||||
|  | @ -916,10 +916,10 @@ public: | ||||||
|     Statement const& body() const { return *m_body; } |     Statement const& body() const { return *m_body; } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     RefPtr<ASTNode> m_init; |     RefPtr<ASTNode> m_init; | ||||||
|  | @ -944,8 +944,8 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | @ -970,8 +970,8 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | @ -991,7 +991,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Completion loop_evaluation(Interpreter&, Vector<FlyString> const&) const override; |     virtual Completion loop_evaluation(Interpreter&, Vector<DeprecatedFlyString> const&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | @ -1236,13 +1236,13 @@ private: | ||||||
| 
 | 
 | ||||||
| class Identifier final : public Expression { | class Identifier final : public Expression { | ||||||
| public: | public: | ||||||
|     explicit Identifier(SourceRange source_range, FlyString string) |     explicit Identifier(SourceRange source_range, DeprecatedFlyString string) | ||||||
|         : Expression(source_range) |         : Expression(source_range) | ||||||
|         , m_string(move(string)) |         , m_string(move(string)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString const& string() const { return m_string; } |     DeprecatedFlyString const& string() const { return m_string; } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|  | @ -1252,19 +1252,19 @@ public: | ||||||
| private: | private: | ||||||
|     virtual bool is_identifier() const override { return true; } |     virtual bool is_identifier() const override { return true; } | ||||||
| 
 | 
 | ||||||
|     FlyString m_string; |     DeprecatedFlyString m_string; | ||||||
|     mutable EnvironmentCoordinate m_cached_environment_coordinate; |     mutable EnvironmentCoordinate m_cached_environment_coordinate; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class PrivateIdentifier final : public Expression { | class PrivateIdentifier final : public Expression { | ||||||
| public: | public: | ||||||
|     explicit PrivateIdentifier(SourceRange source_range, FlyString string) |     explicit PrivateIdentifier(SourceRange source_range, DeprecatedFlyString string) | ||||||
|         : Expression(source_range) |         : Expression(source_range) | ||||||
|         , m_string(move(string)) |         , m_string(move(string)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString const& string() const { return m_string; } |     DeprecatedFlyString const& string() const { return m_string; } | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|  | @ -1272,7 +1272,7 @@ public: | ||||||
|     virtual bool is_private_identifier() const override { return true; } |     virtual bool is_private_identifier() const override { return true; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_string; |     DeprecatedFlyString m_string; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class ClassElement : public ASTNode { | class ClassElement : public ASTNode { | ||||||
|  | @ -1298,7 +1298,7 @@ public: | ||||||
|     using ClassValue = Variant<ClassFieldDefinition, Completion, PrivateElement>; |     using ClassValue = Variant<ClassFieldDefinition, Completion, PrivateElement>; | ||||||
|     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const = 0; |     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const = 0; | ||||||
| 
 | 
 | ||||||
|     virtual Optional<FlyString> private_bound_identifier() const { return {}; }; |     virtual Optional<DeprecatedFlyString> private_bound_identifier() const { return {}; }; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     bool m_is_static { false }; |     bool m_is_static { false }; | ||||||
|  | @ -1326,7 +1326,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const override; |     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const override; | ||||||
|     virtual Optional<FlyString> private_bound_identifier() const override; |     virtual Optional<DeprecatedFlyString> private_bound_identifier() const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_class_method() const override { return true; } |     virtual bool is_class_method() const override { return true; } | ||||||
|  | @ -1353,7 +1353,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const override; |     virtual ThrowCompletionOr<ClassValue> class_element_evaluation(Interpreter&, Object& home_object) const override; | ||||||
|     virtual Optional<FlyString> private_bound_identifier() const override; |     virtual Optional<DeprecatedFlyString> private_bound_identifier() const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     NonnullRefPtr<Expression> m_key; |     NonnullRefPtr<Expression> m_key; | ||||||
|  | @ -1415,7 +1415,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     bool has_name() const { return !m_name.is_empty(); } |     bool has_name() const { return !m_name.is_empty(); } | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<ECMAScriptFunctionObject*> class_definition_evaluation(Interpreter&, FlyString const& binding_name = {}, FlyString const& class_name = {}) const; |     ThrowCompletionOr<ECMAScriptFunctionObject*> class_definition_evaluation(Interpreter&, DeprecatedFlyString const& binding_name = {}, DeprecatedFlyString const& class_name = {}) const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_class_expression() const override { return true; } |     virtual bool is_class_expression() const override { return true; } | ||||||
|  | @ -1439,7 +1439,7 @@ public: | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const override; |     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const override; | ||||||
| 
 | 
 | ||||||
|     virtual bool is_lexical_declaration() const override { return true; } |     virtual bool is_lexical_declaration() const override { return true; } | ||||||
| 
 | 
 | ||||||
|  | @ -1706,7 +1706,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     NonnullRefPtrVector<VariableDeclarator> const& declarations() const { return m_declarations; } |     NonnullRefPtrVector<VariableDeclarator> const& declarations() const { return m_declarations; } | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<FlyString const&>&& callback) const override; |     virtual ThrowCompletionOr<void> for_each_bound_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const override; | ||||||
| 
 | 
 | ||||||
|     virtual bool is_constant_declaration() const override { return m_declaration_kind == DeclarationKind::Const; }; |     virtual bool is_constant_declaration() const override { return m_declaration_kind == DeclarationKind::Const; }; | ||||||
| 
 | 
 | ||||||
|  | @ -1985,7 +1985,7 @@ private: | ||||||
| 
 | 
 | ||||||
| class CatchClause final : public ASTNode { | class CatchClause final : public ASTNode { | ||||||
| public: | public: | ||||||
|     CatchClause(SourceRange source_range, FlyString parameter, NonnullRefPtr<BlockStatement> body) |     CatchClause(SourceRange source_range, DeprecatedFlyString parameter, NonnullRefPtr<BlockStatement> body) | ||||||
|         : ASTNode(source_range) |         : ASTNode(source_range) | ||||||
|         , m_parameter(move(parameter)) |         , m_parameter(move(parameter)) | ||||||
|         , m_body(move(body)) |         , m_body(move(body)) | ||||||
|  | @ -2006,7 +2006,7 @@ public: | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Variant<FlyString, NonnullRefPtr<BindingPattern>> m_parameter; |     Variant<DeprecatedFlyString, NonnullRefPtr<BindingPattern>> m_parameter; | ||||||
|     NonnullRefPtr<BlockStatement> m_body; |     NonnullRefPtr<BlockStatement> m_body; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -2080,7 +2080,7 @@ public: | ||||||
|     virtual void dump(int indent) const override; |     virtual void dump(int indent) const override; | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const; | ||||||
| 
 | 
 | ||||||
|     Completion execute_impl(Interpreter&) const; |     Completion execute_impl(Interpreter&) const; | ||||||
|     void add_case(NonnullRefPtr<SwitchCase> switch_case) { m_cases.append(move(switch_case)); } |     void add_case(NonnullRefPtr<SwitchCase> switch_case) { m_cases.append(move(switch_case)); } | ||||||
|  | @ -2092,7 +2092,7 @@ private: | ||||||
| 
 | 
 | ||||||
| class BreakStatement final : public Statement { | class BreakStatement final : public Statement { | ||||||
| public: | public: | ||||||
|     BreakStatement(SourceRange source_range, FlyString target_label) |     BreakStatement(SourceRange source_range, DeprecatedFlyString target_label) | ||||||
|         : Statement(source_range) |         : Statement(source_range) | ||||||
|         , m_target_label(move(target_label)) |         , m_target_label(move(target_label)) | ||||||
|     { |     { | ||||||
|  | @ -2100,16 +2100,16 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
| 
 | 
 | ||||||
|     FlyString const& target_label() const { return m_target_label; } |     DeprecatedFlyString const& target_label() const { return m_target_label; } | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_target_label; |     DeprecatedFlyString m_target_label; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class ContinueStatement final : public Statement { | class ContinueStatement final : public Statement { | ||||||
| public: | public: | ||||||
|     ContinueStatement(SourceRange source_range, FlyString target_label) |     ContinueStatement(SourceRange source_range, DeprecatedFlyString target_label) | ||||||
|         : Statement(source_range) |         : Statement(source_range) | ||||||
|         , m_target_label(move(target_label)) |         , m_target_label(move(target_label)) | ||||||
|     { |     { | ||||||
|  | @ -2118,10 +2118,10 @@ public: | ||||||
|     virtual Completion execute(Interpreter&) const override; |     virtual Completion execute(Interpreter&) const override; | ||||||
|     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; |     virtual Bytecode::CodeGenerationErrorOr<void> generate_bytecode(Bytecode::Generator&) const override; | ||||||
| 
 | 
 | ||||||
|     FlyString const& target_label() const { return m_target_label; } |     DeprecatedFlyString const& target_label() const { return m_target_label; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_target_label; |     DeprecatedFlyString m_target_label; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class DebuggerStatement final : public Statement { | class DebuggerStatement final : public Statement { | ||||||
|  |  | ||||||
|  | @ -109,7 +109,7 @@ Bytecode::CodeGenerationErrorOr<void> ScopeNode::generate_bytecode(Bytecode::Gen | ||||||
|         Vector<FunctionDeclaration const&> functions_to_initialize; |         Vector<FunctionDeclaration const&> functions_to_initialize; | ||||||
| 
 | 
 | ||||||
|         // 7. Let declaredFunctionNames be a new empty List.
 |         // 7. Let declaredFunctionNames be a new empty List.
 | ||||||
|         HashTable<FlyString> declared_function_names; |         HashTable<DeprecatedFlyString> declared_function_names; | ||||||
| 
 | 
 | ||||||
|         // 8. For each element d of varDeclarations, in reverse List order, do
 |         // 8. For each element d of varDeclarations, in reverse List order, do
 | ||||||
|         (void)for_each_var_function_declaration_in_reverse_order([&](FunctionDeclaration const& function) -> ThrowCompletionOr<void> { |         (void)for_each_var_function_declaration_in_reverse_order([&](FunctionDeclaration const& function) -> ThrowCompletionOr<void> { | ||||||
|  | @ -135,7 +135,7 @@ Bytecode::CodeGenerationErrorOr<void> ScopeNode::generate_bytecode(Bytecode::Gen | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         // 9. Let declaredVarNames be a new empty List.
 |         // 9. Let declaredVarNames be a new empty List.
 | ||||||
|         HashTable<FlyString> declared_var_names; |         HashTable<DeprecatedFlyString> declared_var_names; | ||||||
| 
 | 
 | ||||||
|         // 10. For each element d of varDeclarations, do
 |         // 10. For each element d of varDeclarations, do
 | ||||||
|         (void)for_each_var_scoped_variable_declaration([&](Declaration const& declaration) { |         (void)for_each_var_scoped_variable_declaration([&](Declaration const& declaration) { | ||||||
|  | @ -803,7 +803,7 @@ Bytecode::CodeGenerationErrorOr<void> LabelledStatement::generate_bytecode(Bytec | ||||||
| 
 | 
 | ||||||
| // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | // 14.13.4 Runtime Semantics: LabelledEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-labelledevaluation
 | ||||||
| // LabelledStatement : LabelIdentifier : LabelledItem
 | // LabelledStatement : LabelIdentifier : LabelledItem
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> LabelledStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> LabelledStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     // Convert the m_labelled_item NNRP to a reference early so we don't have to do it every single time we want to use it.
 |     // Convert the m_labelled_item NNRP to a reference early so we don't have to do it every single time we want to use it.
 | ||||||
|     auto const& labelled_item = *m_labelled_item; |     auto const& labelled_item = *m_labelled_item; | ||||||
|  | @ -853,7 +853,7 @@ Bytecode::CodeGenerationErrorOr<void> LabelledStatement::generate_labelled_evalu | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> IterationStatement::generate_labelled_evaluation(Bytecode::Generator&, Vector<FlyString> const&) const | Bytecode::CodeGenerationErrorOr<void> IterationStatement::generate_labelled_evaluation(Bytecode::Generator&, Vector<DeprecatedFlyString> const&) const | ||||||
| { | { | ||||||
|     return Bytecode::CodeGenerationError { |     return Bytecode::CodeGenerationError { | ||||||
|         this, |         this, | ||||||
|  | @ -866,7 +866,7 @@ Bytecode::CodeGenerationErrorOr<void> WhileStatement::generate_bytecode(Bytecode | ||||||
|     return generate_labelled_evaluation(generator, {}); |     return generate_labelled_evaluation(generator, {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> WhileStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> WhileStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     // test
 |     // test
 | ||||||
|     // jump if_false (true) end (false) body
 |     // jump if_false (true) end (false) body
 | ||||||
|  | @ -916,7 +916,7 @@ Bytecode::CodeGenerationErrorOr<void> DoWhileStatement::generate_bytecode(Byteco | ||||||
|     return generate_labelled_evaluation(generator, {}); |     return generate_labelled_evaluation(generator, {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> DoWhileStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> DoWhileStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     // jump always (true) body
 |     // jump always (true) body
 | ||||||
|     // test
 |     // test
 | ||||||
|  | @ -967,7 +967,7 @@ Bytecode::CodeGenerationErrorOr<void> ForStatement::generate_bytecode(Bytecode:: | ||||||
|     return generate_labelled_evaluation(generator, {}); |     return generate_labelled_evaluation(generator, {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> ForStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> ForStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     // init
 |     // init
 | ||||||
|     // jump always (true) test
 |     // jump always (true) test
 | ||||||
|  | @ -2215,7 +2215,7 @@ Bytecode::CodeGenerationErrorOr<void> TryStatement::generate_bytecode(Bytecode:: | ||||||
| 
 | 
 | ||||||
|         generator.begin_variable_scope(Bytecode::Generator::BindingMode::Lexical, Bytecode::Generator::SurroundingScopeKind::Block); |         generator.begin_variable_scope(Bytecode::Generator::BindingMode::Lexical, Bytecode::Generator::SurroundingScopeKind::Block); | ||||||
|         TRY(m_handler->parameter().visit( |         TRY(m_handler->parameter().visit( | ||||||
|             [&](FlyString const& parameter) -> Bytecode::CodeGenerationErrorOr<void> { |             [&](DeprecatedFlyString const& parameter) -> Bytecode::CodeGenerationErrorOr<void> { | ||||||
|                 if (!parameter.is_empty()) { |                 if (!parameter.is_empty()) { | ||||||
|                     auto parameter_identifier = generator.intern_identifier(parameter); |                     auto parameter_identifier = generator.intern_identifier(parameter); | ||||||
|                     generator.register_binding(parameter_identifier); |                     generator.register_binding(parameter_identifier); | ||||||
|  | @ -2283,7 +2283,7 @@ Bytecode::CodeGenerationErrorOr<void> SwitchStatement::generate_bytecode(Bytecod | ||||||
|     return generate_labelled_evaluation(generator, {}); |     return generate_labelled_evaluation(generator, {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> SwitchStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> SwitchStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     auto discriminant_reg = generator.allocate_register(); |     auto discriminant_reg = generator.allocate_register(); | ||||||
|     TRY(m_discriminant->generate_bytecode(generator)); |     TRY(m_discriminant->generate_bytecode(generator)); | ||||||
|  | @ -2516,7 +2516,7 @@ static Bytecode::CodeGenerationErrorOr<ForInOfHeadEvaluationResult> for_in_of_he | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.5.7 ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] ), https://tc39.es/ecma262/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset
 | // 14.7.5.7 ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] ), https://tc39.es/ecma262/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset
 | ||||||
| static Bytecode::CodeGenerationErrorOr<void> for_in_of_body_evaluation(Bytecode::Generator& generator, ASTNode const& node, Variant<NonnullRefPtr<ASTNode>, NonnullRefPtr<BindingPattern>> const& lhs, ASTNode const& body, ForInOfHeadEvaluationResult const& head_result, Vector<FlyString> const& label_set, Bytecode::BasicBlock& loop_end, Bytecode::BasicBlock& loop_update) | static Bytecode::CodeGenerationErrorOr<void> for_in_of_body_evaluation(Bytecode::Generator& generator, ASTNode const& node, Variant<NonnullRefPtr<ASTNode>, NonnullRefPtr<BindingPattern>> const& lhs, ASTNode const& body, ForInOfHeadEvaluationResult const& head_result, Vector<DeprecatedFlyString> const& label_set, Bytecode::BasicBlock& loop_end, Bytecode::BasicBlock& loop_update) | ||||||
| { | { | ||||||
|     auto iterator_register = generator.allocate_register(); |     auto iterator_register = generator.allocate_register(); | ||||||
|     generator.emit<Bytecode::Op::Store>(iterator_register); |     generator.emit<Bytecode::Op::Store>(iterator_register); | ||||||
|  | @ -2719,7 +2719,7 @@ Bytecode::CodeGenerationErrorOr<void> ForInStatement::generate_bytecode(Bytecode | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | // 14.7.5.5 Runtime Semantics: ForInOfLoopEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> ForInStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> ForInStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     auto& loop_end = generator.make_block(); |     auto& loop_end = generator.make_block(); | ||||||
|     auto& loop_update = generator.make_block(); |     auto& loop_update = generator.make_block(); | ||||||
|  | @ -2736,7 +2736,7 @@ Bytecode::CodeGenerationErrorOr<void> ForOfStatement::generate_bytecode(Bytecode | ||||||
|     return generate_labelled_evaluation(generator, {}); |     return generate_labelled_evaluation(generator, {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Bytecode::CodeGenerationErrorOr<void> ForOfStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<FlyString> const& label_set) const | Bytecode::CodeGenerationErrorOr<void> ForOfStatement::generate_labelled_evaluation(Bytecode::Generator& generator, Vector<DeprecatedFlyString> const& label_set) const | ||||||
| { | { | ||||||
|     auto& loop_end = generator.make_block(); |     auto& loop_end = generator.make_block(); | ||||||
|     auto& loop_update = generator.make_block(); |     auto& loop_update = generator.make_block(); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/NonnullOwnPtrVector.h> | #include <AK/NonnullOwnPtrVector.h> | ||||||
| #include <LibJS/Bytecode/BasicBlock.h> | #include <LibJS/Bytecode/BasicBlock.h> | ||||||
| #include <LibJS/Bytecode/IdentifierTable.h> | #include <LibJS/Bytecode/IdentifierTable.h> | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
| namespace JS::Bytecode { | namespace JS::Bytecode { | ||||||
| 
 | 
 | ||||||
| struct Executable { | struct Executable { | ||||||
|     FlyString name; |     DeprecatedFlyString name; | ||||||
|     NonnullOwnPtrVector<BasicBlock> basic_blocks; |     NonnullOwnPtrVector<BasicBlock> basic_blocks; | ||||||
|     NonnullOwnPtr<StringTable> string_table; |     NonnullOwnPtr<StringTable> string_table; | ||||||
|     NonnullOwnPtr<IdentifierTable> identifier_table; |     NonnullOwnPtr<IdentifierTable> identifier_table; | ||||||
|  | @ -23,7 +23,7 @@ struct Executable { | ||||||
|     bool is_strict_mode { false }; |     bool is_strict_mode { false }; | ||||||
| 
 | 
 | ||||||
|     DeprecatedString const& get_string(StringTableIndex index) const { return string_table->get(index); } |     DeprecatedString const& get_string(StringTableIndex index) const { return string_table->get(index); } | ||||||
|     FlyString const& get_identifier(IdentifierTableIndex index) const { return identifier_table->get(index); } |     DeprecatedFlyString const& get_identifier(IdentifierTableIndex index) const { return identifier_table->get(index); } | ||||||
| 
 | 
 | ||||||
|     void dump() const; |     void dump() const; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -113,7 +113,7 @@ void Generator::end_variable_scope() | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Generator::begin_continuable_scope(Label continue_target, Vector<FlyString> const& language_label_set) | void Generator::begin_continuable_scope(Label continue_target, Vector<DeprecatedFlyString> const& language_label_set) | ||||||
| { | { | ||||||
|     m_continuable_scopes.append({ continue_target, language_label_set }); |     m_continuable_scopes.append({ continue_target, language_label_set }); | ||||||
|     start_boundary(BlockBoundaryType::Continue); |     start_boundary(BlockBoundaryType::Continue); | ||||||
|  | @ -130,7 +130,7 @@ Label Generator::nearest_breakable_scope() const | ||||||
|     return m_breakable_scopes.last().bytecode_target; |     return m_breakable_scopes.last().bytecode_target; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Generator::begin_breakable_scope(Label breakable_target, Vector<FlyString> const& language_label_set) | void Generator::begin_breakable_scope(Label breakable_target, Vector<DeprecatedFlyString> const& language_label_set) | ||||||
| { | { | ||||||
|     m_breakable_scopes.append({ breakable_target, language_label_set }); |     m_breakable_scopes.append({ breakable_target, language_label_set }); | ||||||
|     start_boundary(BlockBoundaryType::Break); |     start_boundary(BlockBoundaryType::Break); | ||||||
|  | @ -262,7 +262,7 @@ CodeGenerationErrorOr<void> Generator::emit_delete_reference(JS::ASTNode const& | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Label Generator::perform_needed_unwinds_for_labelled_break_and_return_target_block(FlyString const& break_label) | Label Generator::perform_needed_unwinds_for_labelled_break_and_return_target_block(DeprecatedFlyString const& break_label) | ||||||
| { | { | ||||||
|     size_t current_boundary = m_boundaries.size(); |     size_t current_boundary = m_boundaries.size(); | ||||||
|     for (auto& breakable_scope : m_breakable_scopes.in_reverse()) { |     for (auto& breakable_scope : m_breakable_scopes.in_reverse()) { | ||||||
|  | @ -294,7 +294,7 @@ Label Generator::perform_needed_unwinds_for_labelled_break_and_return_target_blo | ||||||
|     VERIFY_NOT_REACHED(); |     VERIFY_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Label Generator::perform_needed_unwinds_for_labelled_continue_and_return_target_block(FlyString const& continue_label) | Label Generator::perform_needed_unwinds_for_labelled_continue_and_return_target_block(DeprecatedFlyString const& continue_label) | ||||||
| { | { | ||||||
|     size_t current_boundary = m_boundaries.size(); |     size_t current_boundary = m_boundaries.size(); | ||||||
|     for (auto& continuable_scope : m_continuable_scopes.in_reverse()) { |     for (auto& continuable_scope : m_continuable_scopes.in_reverse()) { | ||||||
|  |  | ||||||
|  | @ -84,9 +84,9 @@ public: | ||||||
|     CodeGenerationErrorOr<void> emit_store_to_reference(JS::ASTNode const&); |     CodeGenerationErrorOr<void> emit_store_to_reference(JS::ASTNode const&); | ||||||
|     CodeGenerationErrorOr<void> emit_delete_reference(JS::ASTNode const&); |     CodeGenerationErrorOr<void> emit_delete_reference(JS::ASTNode const&); | ||||||
| 
 | 
 | ||||||
|     void begin_continuable_scope(Label continue_target, Vector<FlyString> const& language_label_set); |     void begin_continuable_scope(Label continue_target, Vector<DeprecatedFlyString> const& language_label_set); | ||||||
|     void end_continuable_scope(); |     void end_continuable_scope(); | ||||||
|     void begin_breakable_scope(Label breakable_target, Vector<FlyString> const& language_label_set); |     void begin_breakable_scope(Label breakable_target, Vector<DeprecatedFlyString> const& language_label_set); | ||||||
|     void end_breakable_scope(); |     void end_breakable_scope(); | ||||||
| 
 | 
 | ||||||
|     [[nodiscard]] Label nearest_continuable_scope() const; |     [[nodiscard]] Label nearest_continuable_scope() const; | ||||||
|  | @ -117,7 +117,7 @@ public: | ||||||
|         return m_string_table->insert(move(string)); |         return m_string_table->insert(move(string)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     IdentifierTableIndex intern_identifier(FlyString string) |     IdentifierTableIndex intern_identifier(DeprecatedFlyString string) | ||||||
|     { |     { | ||||||
|         return m_identifier_table->insert(move(string)); |         return m_identifier_table->insert(move(string)); | ||||||
|     } |     } | ||||||
|  | @ -213,8 +213,8 @@ public: | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     Label perform_needed_unwinds_for_labelled_break_and_return_target_block(FlyString const& break_label); |     Label perform_needed_unwinds_for_labelled_break_and_return_target_block(DeprecatedFlyString const& break_label); | ||||||
|     Label perform_needed_unwinds_for_labelled_continue_and_return_target_block(FlyString const& continue_label); |     Label perform_needed_unwinds_for_labelled_continue_and_return_target_block(DeprecatedFlyString const& continue_label); | ||||||
| 
 | 
 | ||||||
|     void start_boundary(BlockBoundaryType type) { m_boundaries.append(type); } |     void start_boundary(BlockBoundaryType type) { m_boundaries.append(type); } | ||||||
|     void end_boundary(BlockBoundaryType type) |     void end_boundary(BlockBoundaryType type) | ||||||
|  | @ -232,7 +232,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     struct LabelableScope { |     struct LabelableScope { | ||||||
|         Label bytecode_target; |         Label bytecode_target; | ||||||
|         Vector<FlyString> language_label_set; |         Vector<DeprecatedFlyString> language_label_set; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     BasicBlock* m_current_basic_block { nullptr }; |     BasicBlock* m_current_basic_block { nullptr }; | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS::Bytecode { | namespace JS::Bytecode { | ||||||
| 
 | 
 | ||||||
| IdentifierTableIndex IdentifierTable::insert(FlyString string) | IdentifierTableIndex IdentifierTable::insert(DeprecatedFlyString string) | ||||||
| { | { | ||||||
|     for (size_t i = 0; i < m_identifiers.size(); i++) { |     for (size_t i = 0; i < m_identifiers.size(); i++) { | ||||||
|         if (m_identifiers[i] == string) |         if (m_identifiers[i] == string) | ||||||
|  | @ -18,7 +18,7 @@ IdentifierTableIndex IdentifierTable::insert(FlyString string) | ||||||
|     return m_identifiers.size() - 1; |     return m_identifiers.size() - 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString const& IdentifierTable::get(IdentifierTableIndex index) const | DeprecatedFlyString const& IdentifierTable::get(IdentifierTableIndex index) const | ||||||
| { | { | ||||||
|     return m_identifiers[index.value()]; |     return m_identifiers[index.value()]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DistinctNumeric.h> | #include <AK/DistinctNumeric.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| 
 | 
 | ||||||
| namespace JS::Bytecode { | namespace JS::Bytecode { | ||||||
|  | @ -21,13 +21,13 @@ class IdentifierTable { | ||||||
| public: | public: | ||||||
|     IdentifierTable() = default; |     IdentifierTable() = default; | ||||||
| 
 | 
 | ||||||
|     IdentifierTableIndex insert(FlyString); |     IdentifierTableIndex insert(DeprecatedFlyString); | ||||||
|     FlyString const& get(IdentifierTableIndex) const; |     DeprecatedFlyString const& get(IdentifierTableIndex) const; | ||||||
|     void dump() const; |     void dump() const; | ||||||
|     bool is_empty() const { return m_identifiers.is_empty(); } |     bool is_empty() const { return m_identifiers.is_empty(); } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Vector<FlyString> m_identifiers; |     Vector<DeprecatedFlyString> m_identifiers; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ Interpreter::ValueAndFrame Interpreter::run_and_return_frame(Executable const& e | ||||||
|     if (vm().execution_context_stack().is_empty() || !vm().running_execution_context().lexical_environment) { |     if (vm().execution_context_stack().is_empty() || !vm().running_execution_context().lexical_environment) { | ||||||
|         // The "normal" interpreter pushes an execution context without environment so in that case we also want to push one.
 |         // The "normal" interpreter pushes an execution context without environment so in that case we also want to push one.
 | ||||||
|         execution_context.this_value = &m_realm.global_object(); |         execution_context.this_value = &m_realm.global_object(); | ||||||
|         static FlyString global_execution_context_name = "(*BC* global execution context)"; |         static DeprecatedFlyString global_execution_context_name = "(*BC* global execution context)"; | ||||||
|         execution_context.function_name = global_execution_context_name; |         execution_context.function_name = global_execution_context_name; | ||||||
|         execution_context.lexical_environment = &m_realm.global_environment(); |         execution_context.lexical_environment = &m_realm.global_environment(); | ||||||
|         execution_context.variable_environment = &m_realm.global_environment(); |         execution_context.variable_environment = &m_realm.global_environment(); | ||||||
|  |  | ||||||
|  | @ -7,8 +7,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <AK/Weakable.h> | #include <AK/Weakable.h> | ||||||
| #include <LibJS/Forward.h> | #include <LibJS/Forward.h> | ||||||
|  | @ -54,7 +54,7 @@ public: | ||||||
|             nullptr)); |             nullptr)); | ||||||
| 
 | 
 | ||||||
|         // NOTE: These are not in the spec.
 |         // NOTE: These are not in the spec.
 | ||||||
|         static FlyString global_execution_context_name = "(global execution context)"; |         static DeprecatedFlyString global_execution_context_name = "(global execution context)"; | ||||||
|         interpreter->m_global_execution_context->function_name = global_execution_context_name; |         interpreter->m_global_execution_context->function_name = global_execution_context_name; | ||||||
| 
 | 
 | ||||||
|         interpreter->m_realm = make_handle(realm); |         interpreter->m_realm = make_handle(realm); | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| HashMap<FlyString, TokenType> Lexer::s_keywords; | HashMap<DeprecatedFlyString, TokenType> Lexer::s_keywords; | ||||||
| HashMap<DeprecatedString, TokenType> Lexer::s_three_char_tokens; | HashMap<DeprecatedString, TokenType> Lexer::s_three_char_tokens; | ||||||
| HashMap<DeprecatedString, TokenType> Lexer::s_two_char_tokens; | HashMap<DeprecatedString, TokenType> Lexer::s_two_char_tokens; | ||||||
| HashMap<char, TokenType> Lexer::s_single_char_tokens; | HashMap<char, TokenType> Lexer::s_single_char_tokens; | ||||||
|  | @ -574,7 +574,7 @@ Token Lexer::next() | ||||||
|     // bunch of Invalid* tokens (bad numeric literals, unterminated comments etc.)
 |     // bunch of Invalid* tokens (bad numeric literals, unterminated comments etc.)
 | ||||||
|     DeprecatedString token_message; |     DeprecatedString token_message; | ||||||
| 
 | 
 | ||||||
|     Optional<FlyString> identifier; |     Optional<DeprecatedFlyString> identifier; | ||||||
|     size_t identifier_length = 0; |     size_t identifier_length = 0; | ||||||
| 
 | 
 | ||||||
|     if (m_current_token.type() == TokenType::RegexLiteral && !is_eof() && is_ascii_alpha(m_current_char) && !did_consume_whitespace_or_comments) { |     if (m_current_token.type() == TokenType::RegexLiteral && !is_eof() && is_ascii_alpha(m_current_char) && !did_consume_whitespace_or_comments) { | ||||||
|  |  | ||||||
|  | @ -79,7 +79,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     Optional<size_t> m_hit_invalid_unicode; |     Optional<size_t> m_hit_invalid_unicode; | ||||||
| 
 | 
 | ||||||
|     static HashMap<FlyString, TokenType> s_keywords; |     static HashMap<DeprecatedFlyString, TokenType> s_keywords; | ||||||
|     static HashMap<DeprecatedString, TokenType> s_three_char_tokens; |     static HashMap<DeprecatedString, TokenType> s_three_char_tokens; | ||||||
|     static HashMap<DeprecatedString, TokenType> s_two_char_tokens; |     static HashMap<DeprecatedString, TokenType> s_two_char_tokens; | ||||||
|     static HashMap<char, TokenType> s_single_char_tokens; |     static HashMap<char, TokenType> s_single_char_tokens; | ||||||
|  | @ -87,7 +87,7 @@ private: | ||||||
|     struct ParsedIdentifiers : public RefCounted<ParsedIdentifiers> { |     struct ParsedIdentifiers : public RefCounted<ParsedIdentifiers> { | ||||||
|         // Resolved identifiers must be kept alive for the duration of the parsing stage, otherwise
 |         // Resolved identifiers must be kept alive for the duration of the parsing stage, otherwise
 | ||||||
|         // the only references to these strings are deleted by the Token destructor.
 |         // the only references to these strings are deleted by the Token destructor.
 | ||||||
|         HashTable<FlyString> identifiers; |         HashTable<DeprecatedFlyString> identifiers; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     RefPtr<ParsedIdentifiers> m_parsed_identifiers; |     RefPtr<ParsedIdentifiers> m_parsed_identifiers; | ||||||
|  |  | ||||||
|  | @ -77,7 +77,7 @@ ThrowCompletionOr<Object*> Module::get_module_namespace(VM& vm) | ||||||
|         auto exported_names = TRY(get_exported_names(vm)); |         auto exported_names = TRY(get_exported_names(vm)); | ||||||
| 
 | 
 | ||||||
|         // b. Let unambiguousNames be a new empty List.
 |         // b. Let unambiguousNames be a new empty List.
 | ||||||
|         Vector<FlyString> unambiguous_names; |         Vector<DeprecatedFlyString> unambiguous_names; | ||||||
| 
 | 
 | ||||||
|         // c. For each element name of exportedNames, do
 |         // c. For each element name of exportedNames, do
 | ||||||
|         for (auto& name : exported_names) { |         for (auto& name : exported_names) { | ||||||
|  | @ -100,7 +100,7 @@ ThrowCompletionOr<Object*> Module::get_module_namespace(VM& vm) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 10.4.6.12 ModuleNamespaceCreate ( module, exports ), https://tc39.es/ecma262/#sec-modulenamespacecreate
 | // 10.4.6.12 ModuleNamespaceCreate ( module, exports ), https://tc39.es/ecma262/#sec-modulenamespacecreate
 | ||||||
| Object* Module::module_namespace_create(VM& vm, Vector<FlyString> unambiguous_names) | Object* Module::module_namespace_create(VM& vm, Vector<DeprecatedFlyString> unambiguous_names) | ||||||
| { | { | ||||||
|     auto& realm = this->realm(); |     auto& realm = this->realm(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <LibJS/Heap/GCPtr.h> | #include <LibJS/Heap/GCPtr.h> | ||||||
| #include <LibJS/Runtime/Environment.h> | #include <LibJS/Runtime/Environment.h> | ||||||
| #include <LibJS/Runtime/Realm.h> | #include <LibJS/Runtime/Realm.h> | ||||||
|  | @ -37,7 +37,7 @@ struct ResolvedBinding { | ||||||
| 
 | 
 | ||||||
|     Type type { Null }; |     Type type { Null }; | ||||||
|     Module* module { nullptr }; |     Module* module { nullptr }; | ||||||
|     FlyString export_name; |     DeprecatedFlyString export_name; | ||||||
| 
 | 
 | ||||||
|     bool is_valid() const |     bool is_valid() const | ||||||
|     { |     { | ||||||
|  | @ -76,8 +76,8 @@ public: | ||||||
|     virtual ThrowCompletionOr<void> link(VM& vm) = 0; |     virtual ThrowCompletionOr<void> link(VM& vm) = 0; | ||||||
|     virtual ThrowCompletionOr<Promise*> evaluate(VM& vm) = 0; |     virtual ThrowCompletionOr<Promise*> evaluate(VM& vm) = 0; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<Vector<FlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set = {}) = 0; |     virtual ThrowCompletionOr<Vector<DeprecatedFlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set = {}) = 0; | ||||||
|     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, FlyString const& export_name, Vector<ResolvedBinding> resolve_set = {}) = 0; |     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, DeprecatedFlyString const& export_name, Vector<ResolvedBinding> resolve_set = {}) = 0; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<u32> inner_module_linking(VM& vm, Vector<Module*>& stack, u32 index); |     virtual ThrowCompletionOr<u32> inner_module_linking(VM& vm, Vector<Module*>& stack, u32 index); | ||||||
|     virtual ThrowCompletionOr<u32> inner_module_evaluation(VM& vm, Vector<Module*>& stack, u32 index); |     virtual ThrowCompletionOr<u32> inner_module_evaluation(VM& vm, Vector<Module*>& stack, u32 index); | ||||||
|  | @ -93,7 +93,7 @@ protected: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Object* module_namespace_create(VM& vm, Vector<FlyString> unambiguous_names); |     Object* module_namespace_create(VM& vm, Vector<DeprecatedFlyString> unambiguous_names); | ||||||
| 
 | 
 | ||||||
|     // These handles are only safe as long as the VM they live in is valid.
 |     // These handles are only safe as long as the VM they live in is valid.
 | ||||||
|     // But evaluated modules SHOULD be stored in the VM so unless you intentionally
 |     // But evaluated modules SHOULD be stored in the VM so unless you intentionally
 | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ public: | ||||||
|         scope_pusher.m_function_parameters = parameters; |         scope_pusher.m_function_parameters = parameters; | ||||||
|         for (auto& parameter : parameters) { |         for (auto& parameter : parameters) { | ||||||
|             parameter.binding.visit( |             parameter.binding.visit( | ||||||
|                 [&](FlyString const& name) { |                 [&](DeprecatedFlyString const& name) { | ||||||
|                     scope_pusher.m_forbidden_lexical_names.set(name); |                     scope_pusher.m_forbidden_lexical_names.set(name); | ||||||
|                 }, |                 }, | ||||||
|                 [&](NonnullRefPtr<BindingPattern> const& binding_pattern) { |                 [&](NonnullRefPtr<BindingPattern> const& binding_pattern) { | ||||||
|  | @ -102,7 +102,7 @@ public: | ||||||
|         return scope_pusher; |         return scope_pusher; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static ScopePusher catch_scope(Parser& parser, RefPtr<BindingPattern> const& pattern, FlyString const& parameter) |     static ScopePusher catch_scope(Parser& parser, RefPtr<BindingPattern> const& pattern, DeprecatedFlyString const& parameter) | ||||||
|     { |     { | ||||||
|         ScopePusher scope_pusher(parser, nullptr, ScopeLevel::NotTopLevel); |         ScopePusher scope_pusher(parser, nullptr, ScopeLevel::NotTopLevel); | ||||||
|         if (pattern) { |         if (pattern) { | ||||||
|  | @ -208,7 +208,7 @@ public: | ||||||
|     ScopePusher* parent_scope() { return m_parent_scope; } |     ScopePusher* parent_scope() { return m_parent_scope; } | ||||||
|     ScopePusher const* parent_scope() const { return m_parent_scope; } |     ScopePusher const* parent_scope() const { return m_parent_scope; } | ||||||
| 
 | 
 | ||||||
|     [[nodiscard]] bool has_declaration(FlyString const& name) const |     [[nodiscard]] bool has_declaration(DeprecatedFlyString const& name) const | ||||||
|     { |     { | ||||||
|         return m_lexical_names.contains(name) || m_var_names.contains(name) || !m_functions_to_hoist.find_if([&name](auto& function) { return function->name() == name; }).is_end(); |         return m_lexical_names.contains(name) || m_var_names.contains(name) || !m_functions_to_hoist.find_if([&name](auto& function) { return function->name() == name; }).is_end(); | ||||||
|     } |     } | ||||||
|  | @ -254,7 +254,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void throw_identifier_declared(FlyString const& name, NonnullRefPtr<Declaration> const& declaration) |     void throw_identifier_declared(DeprecatedFlyString const& name, NonnullRefPtr<Declaration> const& declaration) | ||||||
|     { |     { | ||||||
|         m_parser.syntax_error(DeprecatedString::formatted("Identifier '{}' already declared", name), declaration->source_range().start); |         m_parser.syntax_error(DeprecatedString::formatted("Identifier '{}' already declared", name), declaration->source_range().start); | ||||||
|     } |     } | ||||||
|  | @ -266,12 +266,12 @@ private: | ||||||
|     ScopePusher* m_parent_scope { nullptr }; |     ScopePusher* m_parent_scope { nullptr }; | ||||||
|     ScopePusher* m_top_level_scope { nullptr }; |     ScopePusher* m_top_level_scope { nullptr }; | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> m_lexical_names; |     HashTable<DeprecatedFlyString> m_lexical_names; | ||||||
|     HashTable<FlyString> m_var_names; |     HashTable<DeprecatedFlyString> m_var_names; | ||||||
|     HashTable<FlyString> m_function_names; |     HashTable<DeprecatedFlyString> m_function_names; | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> m_forbidden_lexical_names; |     HashTable<DeprecatedFlyString> m_forbidden_lexical_names; | ||||||
|     HashTable<FlyString> m_forbidden_var_names; |     HashTable<DeprecatedFlyString> m_forbidden_var_names; | ||||||
|     NonnullRefPtrVector<FunctionDeclaration> m_functions_to_hoist; |     NonnullRefPtrVector<FunctionDeclaration> m_functions_to_hoist; | ||||||
| 
 | 
 | ||||||
|     Optional<Vector<FunctionParameter>> m_function_parameters; |     Optional<Vector<FunctionParameter>> m_function_parameters; | ||||||
|  | @ -707,7 +707,7 @@ static bool is_strict_reserved_word(StringView str) | ||||||
| static bool is_simple_parameter_list(Vector<FunctionParameter> const& parameters) | static bool is_simple_parameter_list(Vector<FunctionParameter> const& parameters) | ||||||
| { | { | ||||||
|     return all_of(parameters, [](FunctionParameter const& parameter) { |     return all_of(parameters, [](FunctionParameter const& parameter) { | ||||||
|         return !parameter.is_rest && parameter.default_value.is_null() && parameter.binding.has<FlyString>(); |         return !parameter.is_rest && parameter.default_value.is_null() && parameter.binding.has<DeprecatedFlyString>(); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -782,7 +782,7 @@ RefPtr<FunctionExpression> Parser::try_parse_arrow_function_expression(bool expe | ||||||
|             syntax_error("BindingIdentifier may not be 'arguments' or 'eval' in strict mode"); |             syntax_error("BindingIdentifier may not be 'arguments' or 'eval' in strict mode"); | ||||||
|         if (is_async && token.value() == "await"sv) |         if (is_async && token.value() == "await"sv) | ||||||
|             syntax_error("'await' is a reserved identifier in async functions"); |             syntax_error("'await' is a reserved identifier in async functions"); | ||||||
|         parameters.append({ FlyString { token.value() }, {} }); |         parameters.append({ DeprecatedFlyString { token.value() }, {} }); | ||||||
|     } |     } | ||||||
|     // If there's a newline between the closing paren and arrow it's not a valid arrow function,
 |     // If there's a newline between the closing paren and arrow it's not a valid arrow function,
 | ||||||
|     // ASI should kick in instead (it'll then fail with "Unexpected token Arrow")
 |     // ASI should kick in instead (it'll then fail with "Unexpected token Arrow")
 | ||||||
|  | @ -844,7 +844,7 @@ RefPtr<FunctionExpression> Parser::try_parse_arrow_function_expression(bool expe | ||||||
|     if (body->in_strict_mode()) { |     if (body->in_strict_mode()) { | ||||||
|         for (auto& parameter : parameters) { |         for (auto& parameter : parameters) { | ||||||
|             parameter.binding.visit( |             parameter.binding.visit( | ||||||
|                 [&](FlyString const& name) { |                 [&](DeprecatedFlyString const& name) { | ||||||
|                     check_identifier_name_for_assignment_validity(name, true); |                     check_identifier_name_for_assignment_validity(name, true); | ||||||
|                 }, |                 }, | ||||||
|                 [&](auto const&) {}); |                 [&](auto const&) {}); | ||||||
|  | @ -1046,10 +1046,10 @@ NonnullRefPtr<ClassExpression> Parser::parse_class_expression(bool expect_class_ | ||||||
|     NonnullRefPtrVector<ClassElement> elements; |     NonnullRefPtrVector<ClassElement> elements; | ||||||
|     RefPtr<Expression> super_class; |     RefPtr<Expression> super_class; | ||||||
|     RefPtr<FunctionExpression> constructor; |     RefPtr<FunctionExpression> constructor; | ||||||
|     HashTable<FlyString> found_private_names; |     HashTable<DeprecatedFlyString> found_private_names; | ||||||
| 
 | 
 | ||||||
|     FlyString class_name = expect_class_name || match_identifier() || match(TokenType::Yield) || match(TokenType::Await) |     DeprecatedFlyString class_name = expect_class_name || match_identifier() || match(TokenType::Yield) || match(TokenType::Await) | ||||||
|         ? consume_identifier_reference().flystring_value() |         ? consume_identifier_reference().DeprecatedFlyString_value() | ||||||
|         : ""; |         : ""; | ||||||
| 
 | 
 | ||||||
|     check_identifier_name_for_assignment_validity(class_name, true); |     check_identifier_name_for_assignment_validity(class_name, true); | ||||||
|  | @ -1331,7 +1331,7 @@ NonnullRefPtr<ClassExpression> Parser::parse_class_expression(bool expect_class_ | ||||||
|             //          this function does not.
 |             //          this function does not.
 | ||||||
|             //          So we use a custom version of SuperCall which doesn't use the @@iterator
 |             //          So we use a custom version of SuperCall which doesn't use the @@iterator
 | ||||||
|             //          method on %Array.prototype% visibly.
 |             //          method on %Array.prototype% visibly.
 | ||||||
|             FlyString argument_name = "args"; |             DeprecatedFlyString argument_name = "args"; | ||||||
|             auto super_call = create_ast_node<SuperCall>( |             auto super_call = create_ast_node<SuperCall>( | ||||||
|                 { m_source_code, rule_start.position(), position() }, |                 { m_source_code, rule_start.position(), position() }, | ||||||
|                 SuperCall::IsPartOfSyntheticConstructor::Yes, |                 SuperCall::IsPartOfSyntheticConstructor::Yes, | ||||||
|  | @ -1728,7 +1728,7 @@ NonnullRefPtr<ObjectExpression> Parser::parse_object_expression() | ||||||
|                 property_key = parse_property_key(); |                 property_key = parse_property_key(); | ||||||
|             } else { |             } else { | ||||||
|                 property_key = create_ast_node<StringLiteral>({ m_source_code, rule_start.position(), position() }, identifier.value()); |                 property_key = create_ast_node<StringLiteral>({ m_source_code, rule_start.position(), position() }, identifier.value()); | ||||||
|                 property_value = create_ast_node<Identifier>({ m_source_code, rule_start.position(), position() }, identifier.flystring_value()); |                 property_value = create_ast_node<Identifier>({ m_source_code, rule_start.position(), position() }, identifier.DeprecatedFlyString_value()); | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             property_key = parse_property_key(); |             property_key = parse_property_key(); | ||||||
|  | @ -2145,7 +2145,7 @@ Parser::ExpressionResult Parser::parse_secondary_expression(NonnullRefPtr<Expres | ||||||
|             expected("IdentifierName"); |             expected("IdentifierName"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return create_ast_node<MemberExpression>({ m_source_code, rule_start.position(), position() }, move(lhs), create_ast_node<Identifier>({ m_source_code, rule_start.position(), position() }, consume().flystring_value())); |         return create_ast_node<MemberExpression>({ m_source_code, rule_start.position(), position() }, move(lhs), create_ast_node<Identifier>({ m_source_code, rule_start.position(), position() }, consume().DeprecatedFlyString_value())); | ||||||
|     case TokenType::BracketOpen: { |     case TokenType::BracketOpen: { | ||||||
|         consume(TokenType::BracketOpen); |         consume(TokenType::BracketOpen); | ||||||
|         auto expression = create_ast_node<MemberExpression>({ m_source_code, rule_start.position(), position() }, move(lhs), parse_expression(0), true); |         auto expression = create_ast_node<MemberExpression>({ m_source_code, rule_start.position(), position() }, move(lhs), parse_expression(0), true); | ||||||
|  | @ -2322,7 +2322,7 @@ NonnullRefPtr<Identifier> Parser::parse_identifier() | ||||||
|         syntax_error("'arguments' is not allowed in class field initializer"); |         syntax_error("'arguments' is not allowed in class field initializer"); | ||||||
|     return create_ast_node<Identifier>( |     return create_ast_node<Identifier>( | ||||||
|         { m_source_code, identifier_start, position() }, |         { m_source_code, identifier_start, position() }, | ||||||
|         token.flystring_value()); |         token.DeprecatedFlyString_value()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Vector<CallExpression::Argument> Parser::parse_arguments() | Vector<CallExpression::Argument> Parser::parse_arguments() | ||||||
|  | @ -2501,7 +2501,7 @@ NonnullRefPtr<FunctionBody> Parser::parse_function_body(Vector<FunctionParameter | ||||||
|         Vector<StringView> parameter_names; |         Vector<StringView> parameter_names; | ||||||
|         for (auto& parameter : parameters) { |         for (auto& parameter : parameters) { | ||||||
|             parameter.binding.visit( |             parameter.binding.visit( | ||||||
|                 [&](FlyString const& parameter_name) { |                 [&](DeprecatedFlyString const& parameter_name) { | ||||||
|                     check_identifier_name_for_assignment_validity(parameter_name, function_body->in_strict_mode()); |                     check_identifier_name_for_assignment_validity(parameter_name, function_body->in_strict_mode()); | ||||||
|                     if (function_kind == FunctionKind::Generator && parameter_name == "yield"sv) |                     if (function_kind == FunctionKind::Generator && parameter_name == "yield"sv) | ||||||
|                         syntax_error("Parameter name 'yield' not allowed in this context"); |                         syntax_error("Parameter name 'yield' not allowed in this context"); | ||||||
|  | @ -2579,7 +2579,7 @@ NonnullRefPtr<FunctionNodeType> Parser::parse_function_node(u16 parse_options, O | ||||||
|         function_kind = FunctionKind::Async; |         function_kind = FunctionKind::Async; | ||||||
|     else |     else | ||||||
|         function_kind = FunctionKind::Normal; |         function_kind = FunctionKind::Normal; | ||||||
|     FlyString name; |     DeprecatedFlyString name; | ||||||
|     if (parse_options & FunctionNodeParseOptions::CheckForFunctionAndName) { |     if (parse_options & FunctionNodeParseOptions::CheckForFunctionAndName) { | ||||||
|         if (function_kind == FunctionKind::Normal && match(TokenType::Async) && !next_token().trivia_contains_line_terminator()) { |         if (function_kind == FunctionKind::Normal && match(TokenType::Async) && !next_token().trivia_contains_line_terminator()) { | ||||||
|             function_kind = FunctionKind::Async; |             function_kind = FunctionKind::Async; | ||||||
|  | @ -2596,9 +2596,9 @@ NonnullRefPtr<FunctionNodeType> Parser::parse_function_node(u16 parse_options, O | ||||||
|         if (parse_options & FunctionNodeParseOptions::HasDefaultExportName) |         if (parse_options & FunctionNodeParseOptions::HasDefaultExportName) | ||||||
|             name = ExportStatement::local_name_for_default; |             name = ExportStatement::local_name_for_default; | ||||||
|         else if (FunctionNodeType::must_have_name() || match_identifier()) |         else if (FunctionNodeType::must_have_name() || match_identifier()) | ||||||
|             name = consume_identifier().flystring_value(); |             name = consume_identifier().DeprecatedFlyString_value(); | ||||||
|         else if (is_function_expression && (match(TokenType::Yield) || match(TokenType::Await))) |         else if (is_function_expression && (match(TokenType::Yield) || match(TokenType::Await))) | ||||||
|             name = consume().flystring_value(); |             name = consume().DeprecatedFlyString_value(); | ||||||
| 
 | 
 | ||||||
|         check_identifier_name_for_assignment_validity(name); |         check_identifier_name_for_assignment_validity(name); | ||||||
| 
 | 
 | ||||||
|  | @ -2656,18 +2656,18 @@ Vector<FunctionParameter> Parser::parse_formal_parameters(int& function_length, | ||||||
| 
 | 
 | ||||||
|     Vector<FunctionParameter> parameters; |     Vector<FunctionParameter> parameters; | ||||||
| 
 | 
 | ||||||
|     auto consume_identifier_or_binding_pattern = [&]() -> Variant<FlyString, NonnullRefPtr<BindingPattern>> { |     auto consume_identifier_or_binding_pattern = [&]() -> Variant<DeprecatedFlyString, NonnullRefPtr<BindingPattern>> { | ||||||
|         if (auto pattern = parse_binding_pattern(AllowDuplicates::No, AllowMemberExpressions::No)) |         if (auto pattern = parse_binding_pattern(AllowDuplicates::No, AllowMemberExpressions::No)) | ||||||
|             return pattern.release_nonnull(); |             return pattern.release_nonnull(); | ||||||
| 
 | 
 | ||||||
|         auto token = consume_identifier(); |         auto token = consume_identifier(); | ||||||
|         auto parameter_name = token.flystring_value(); |         auto parameter_name = token.DeprecatedFlyString_value(); | ||||||
| 
 | 
 | ||||||
|         check_identifier_name_for_assignment_validity(parameter_name); |         check_identifier_name_for_assignment_validity(parameter_name); | ||||||
| 
 | 
 | ||||||
|         for (auto& parameter : parameters) { |         for (auto& parameter : parameters) { | ||||||
|             bool has_same_name = parameter.binding.visit( |             bool has_same_name = parameter.binding.visit( | ||||||
|                 [&](FlyString const& name) { |                 [&](DeprecatedFlyString const& name) { | ||||||
|                     return name == parameter_name; |                     return name == parameter_name; | ||||||
|                 }, |                 }, | ||||||
|                 [&](NonnullRefPtr<BindingPattern> const& bindings) { |                 [&](NonnullRefPtr<BindingPattern> const& bindings) { | ||||||
|  | @ -2695,7 +2695,7 @@ Vector<FunctionParameter> Parser::parse_formal_parameters(int& function_length, | ||||||
|                 syntax_error(message, Position { token.line_number(), token.line_column() }); |                 syntax_error(message, Position { token.line_number(), token.line_column() }); | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|         return FlyString { token.value() }; |         return DeprecatedFlyString { token.value() }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     while (match(TokenType::CurlyOpen) || match(TokenType::BracketOpen) || match_identifier() || match(TokenType::TripleDot)) { |     while (match(TokenType::CurlyOpen) || match(TokenType::BracketOpen) || match_identifier() || match(TokenType::TripleDot)) { | ||||||
|  | @ -2743,7 +2743,7 @@ Vector<FunctionParameter> Parser::parse_formal_parameters(int& function_length, | ||||||
|     return parameters; |     return parameters; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static AK::Array<FlyString, 36> s_reserved_words = { "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "false", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "null", "return", "super", "switch", "this", "throw", "true", "try", "typeof", "var", "void", "while", "with" }; | static AK::Array<DeprecatedFlyString, 36> s_reserved_words = { "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "false", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "null", "return", "super", "switch", "this", "throw", "true", "try", "typeof", "var", "void", "while", "with" }; | ||||||
| 
 | 
 | ||||||
| RefPtr<BindingPattern> Parser::parse_binding_pattern(Parser::AllowDuplicates allow_duplicates, Parser::AllowMemberExpressions allow_member_expressions) | RefPtr<BindingPattern> Parser::parse_binding_pattern(Parser::AllowDuplicates allow_duplicates, Parser::AllowMemberExpressions allow_member_expressions) | ||||||
| { | { | ||||||
|  | @ -2806,15 +2806,15 @@ RefPtr<BindingPattern> Parser::parse_binding_pattern(Parser::AllowDuplicates all | ||||||
|                         { m_source_code, rule_start.position(), position() }, |                         { m_source_code, rule_start.position(), position() }, | ||||||
|                         string_literal->value()); |                         string_literal->value()); | ||||||
|                 } else if (match(TokenType::BigIntLiteral)) { |                 } else if (match(TokenType::BigIntLiteral)) { | ||||||
|                     auto string_value = consume().flystring_value(); |                     auto string_value = consume().DeprecatedFlyString_value(); | ||||||
|                     VERIFY(string_value.ends_with("n"sv)); |                     VERIFY(string_value.ends_with("n"sv)); | ||||||
|                     name = create_ast_node<Identifier>( |                     name = create_ast_node<Identifier>( | ||||||
|                         { m_source_code, rule_start.position(), position() }, |                         { m_source_code, rule_start.position(), position() }, | ||||||
|                         FlyString(string_value.view().substring_view(0, string_value.length() - 1))); |                         DeprecatedFlyString(string_value.view().substring_view(0, string_value.length() - 1))); | ||||||
|                 } else { |                 } else { | ||||||
|                     name = create_ast_node<Identifier>( |                     name = create_ast_node<Identifier>( | ||||||
|                         { m_source_code, rule_start.position(), position() }, |                         { m_source_code, rule_start.position(), position() }, | ||||||
|                         consume().flystring_value()); |                         consume().DeprecatedFlyString_value()); | ||||||
|                 } |                 } | ||||||
|             } else if (match(TokenType::BracketOpen)) { |             } else if (match(TokenType::BracketOpen)) { | ||||||
|                 consume(); |                 consume(); | ||||||
|  | @ -2852,7 +2852,7 @@ RefPtr<BindingPattern> Parser::parse_binding_pattern(Parser::AllowDuplicates all | ||||||
|                 } else if (match_identifier_name()) { |                 } else if (match_identifier_name()) { | ||||||
|                     alias = create_ast_node<Identifier>( |                     alias = create_ast_node<Identifier>( | ||||||
|                         { m_source_code, rule_start.position(), position() }, |                         { m_source_code, rule_start.position(), position() }, | ||||||
|                         consume().flystring_value()); |                         consume().DeprecatedFlyString_value()); | ||||||
| 
 | 
 | ||||||
|                 } else { |                 } else { | ||||||
|                     expected("identifier or binding pattern"); |                     expected("identifier or binding pattern"); | ||||||
|  | @ -2888,7 +2888,7 @@ RefPtr<BindingPattern> Parser::parse_binding_pattern(Parser::AllowDuplicates all | ||||||
|                 alias = pattern.release_nonnull(); |                 alias = pattern.release_nonnull(); | ||||||
|             } else if (match_identifier_name()) { |             } else if (match_identifier_name()) { | ||||||
|                 // BindingElement must always have an Empty name field
 |                 // BindingElement must always have an Empty name field
 | ||||||
|                 auto identifier_name = consume_identifier().flystring_value(); |                 auto identifier_name = consume_identifier().DeprecatedFlyString_value(); | ||||||
|                 alias = create_ast_node<Identifier>( |                 alias = create_ast_node<Identifier>( | ||||||
|                     { m_source_code, rule_start.position(), position() }, |                     { m_source_code, rule_start.position(), position() }, | ||||||
|                     identifier_name); |                     identifier_name); | ||||||
|  | @ -2974,7 +2974,7 @@ NonnullRefPtr<VariableDeclaration> Parser::parse_variable_declaration(bool for_l | ||||||
|         Variant<NonnullRefPtr<Identifier>, NonnullRefPtr<BindingPattern>, Empty> target {}; |         Variant<NonnullRefPtr<Identifier>, NonnullRefPtr<BindingPattern>, Empty> target {}; | ||||||
|         if (match_identifier()) { |         if (match_identifier()) { | ||||||
|             auto identifier_start = push_start(); |             auto identifier_start = push_start(); | ||||||
|             auto name = consume_identifier().flystring_value(); |             auto name = consume_identifier().DeprecatedFlyString_value(); | ||||||
|             target = create_ast_node<Identifier>( |             target = create_ast_node<Identifier>( | ||||||
|                 { m_source_code, rule_start.position(), position() }, |                 { m_source_code, rule_start.position(), position() }, | ||||||
|                 name); |                 name); | ||||||
|  | @ -2996,14 +2996,14 @@ NonnullRefPtr<VariableDeclaration> Parser::parse_variable_declaration(bool for_l | ||||||
| 
 | 
 | ||||||
|             target = create_ast_node<Identifier>( |             target = create_ast_node<Identifier>( | ||||||
|                 { m_source_code, rule_start.position(), position() }, |                 { m_source_code, rule_start.position(), position() }, | ||||||
|                 consume().flystring_value()); |                 consume().DeprecatedFlyString_value()); | ||||||
|         } else if (!m_state.await_expression_is_valid && match(TokenType::Async)) { |         } else if (!m_state.await_expression_is_valid && match(TokenType::Async)) { | ||||||
|             if (m_program_type == Program::Type::Module) |             if (m_program_type == Program::Type::Module) | ||||||
|                 syntax_error("Identifier must not be a reserved word in modules ('async')"); |                 syntax_error("Identifier must not be a reserved word in modules ('async')"); | ||||||
| 
 | 
 | ||||||
|             target = create_ast_node<Identifier>( |             target = create_ast_node<Identifier>( | ||||||
|                 { m_source_code, rule_start.position(), position() }, |                 { m_source_code, rule_start.position(), position() }, | ||||||
|                 consume().flystring_value()); |                 consume().DeprecatedFlyString_value()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (target.has<Empty>()) { |         if (target.has<Empty>()) { | ||||||
|  | @ -3070,7 +3070,7 @@ NonnullRefPtr<BreakStatement> Parser::parse_break_statement() | ||||||
| { | { | ||||||
|     auto rule_start = push_start(); |     auto rule_start = push_start(); | ||||||
|     consume(TokenType::Break); |     consume(TokenType::Break); | ||||||
|     FlyString target_label; |     DeprecatedFlyString target_label; | ||||||
|     if (match(TokenType::Semicolon)) { |     if (match(TokenType::Semicolon)) { | ||||||
|         consume(); |         consume(); | ||||||
|     } else { |     } else { | ||||||
|  | @ -3097,7 +3097,7 @@ NonnullRefPtr<ContinueStatement> Parser::parse_continue_statement() | ||||||
|         syntax_error("'continue' not allow outside of a loop"); |         syntax_error("'continue' not allow outside of a loop"); | ||||||
| 
 | 
 | ||||||
|     consume(TokenType::Continue); |     consume(TokenType::Continue); | ||||||
|     FlyString target_label; |     DeprecatedFlyString target_label; | ||||||
|     if (match(TokenType::Semicolon)) { |     if (match(TokenType::Semicolon)) { | ||||||
|         consume(); |         consume(); | ||||||
|         return create_ast_node<ContinueStatement>({ m_source_code, rule_start.position(), position() }, target_label); |         return create_ast_node<ContinueStatement>({ m_source_code, rule_start.position(), position() }, target_label); | ||||||
|  | @ -3166,7 +3166,7 @@ NonnullRefPtr<OptionalChain> Parser::parse_optional_chain(NonnullRefPtr<Expressi | ||||||
|                     auto start = position(); |                     auto start = position(); | ||||||
|                     auto identifier = consume(); |                     auto identifier = consume(); | ||||||
|                     chain.append(OptionalChain::MemberReference { |                     chain.append(OptionalChain::MemberReference { | ||||||
|                         create_ast_node<Identifier>({ m_source_code, start, position() }, identifier.flystring_value()), |                         create_ast_node<Identifier>({ m_source_code, start, position() }, identifier.DeprecatedFlyString_value()), | ||||||
|                         OptionalChain::Mode::Optional, |                         OptionalChain::Mode::Optional, | ||||||
|                     }); |                     }); | ||||||
|                 } else { |                 } else { | ||||||
|  | @ -3192,7 +3192,7 @@ NonnullRefPtr<OptionalChain> Parser::parse_optional_chain(NonnullRefPtr<Expressi | ||||||
|                 auto start = position(); |                 auto start = position(); | ||||||
|                 auto identifier = consume(); |                 auto identifier = consume(); | ||||||
|                 chain.append(OptionalChain::MemberReference { |                 chain.append(OptionalChain::MemberReference { | ||||||
|                     create_ast_node<Identifier>({ m_source_code, start, position() }, identifier.flystring_value()), |                     create_ast_node<Identifier>({ m_source_code, start, position() }, identifier.DeprecatedFlyString_value()), | ||||||
|                     OptionalChain::Mode::NotOptional, |                     OptionalChain::Mode::NotOptional, | ||||||
|                 }); |                 }); | ||||||
|             } else { |             } else { | ||||||
|  | @ -3356,7 +3356,7 @@ NonnullRefPtr<CatchClause> Parser::parse_catch_clause() | ||||||
|     auto rule_start = push_start(); |     auto rule_start = push_start(); | ||||||
|     consume(TokenType::Catch); |     consume(TokenType::Catch); | ||||||
| 
 | 
 | ||||||
|     FlyString parameter; |     DeprecatedFlyString parameter; | ||||||
|     RefPtr<BindingPattern> pattern_parameter; |     RefPtr<BindingPattern> pattern_parameter; | ||||||
|     auto should_expect_parameter = false; |     auto should_expect_parameter = false; | ||||||
|     if (match(TokenType::ParenOpen)) { |     if (match(TokenType::ParenOpen)) { | ||||||
|  | @ -3375,7 +3375,7 @@ NonnullRefPtr<CatchClause> Parser::parse_catch_clause() | ||||||
|     if (should_expect_parameter && parameter.is_empty() && !pattern_parameter) |     if (should_expect_parameter && parameter.is_empty() && !pattern_parameter) | ||||||
|         expected("an identifier or a binding pattern"); |         expected("an identifier or a binding pattern"); | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> bound_names; |     HashTable<DeprecatedFlyString> bound_names; | ||||||
| 
 | 
 | ||||||
|     if (pattern_parameter) { |     if (pattern_parameter) { | ||||||
|         pattern_parameter->for_each_bound_name( |         pattern_parameter->for_each_bound_name( | ||||||
|  | @ -3504,7 +3504,7 @@ NonnullRefPtr<Statement> Parser::parse_for_statement() | ||||||
|                 m_state.current_scope_pusher->add_declaration(declaration); |                 m_state.current_scope_pusher->add_declaration(declaration); | ||||||
|             } else { |             } else { | ||||||
|                 // This does not follow the normal declaration structure so we need additional checks.
 |                 // This does not follow the normal declaration structure so we need additional checks.
 | ||||||
|                 HashTable<FlyString> bound_names; |                 HashTable<DeprecatedFlyString> bound_names; | ||||||
|                 declaration->for_each_bound_name([&](auto const& name) { |                 declaration->for_each_bound_name([&](auto const& name) { | ||||||
|                     if (bound_names.set(name) != AK::HashSetResult::InsertedNewEntry) |                     if (bound_names.set(name) != AK::HashSetResult::InsertedNewEntry) | ||||||
|                         syntax_error(DeprecatedString::formatted("Identifier '{}' already declared in for loop initializer", name), declaration->source_range().start); |                         syntax_error(DeprecatedString::formatted("Identifier '{}' already declared in for loop initializer", name), declaration->source_range().start); | ||||||
|  | @ -4055,7 +4055,7 @@ void Parser::discard_saved_state() | ||||||
|     m_saved_state.take_last(); |     m_saved_state.take_last(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Parser::check_identifier_name_for_assignment_validity(FlyString const& name, bool force_strict) | void Parser::check_identifier_name_for_assignment_validity(DeprecatedFlyString const& name, bool force_strict) | ||||||
| { | { | ||||||
|     // FIXME: this is now called from multiple places maybe the error message should be dynamic?
 |     // FIXME: this is now called from multiple places maybe the error message should be dynamic?
 | ||||||
|     if (any_of(s_reserved_words, [&](auto& value) { return name == value; })) { |     if (any_of(s_reserved_words, [&](auto& value) { return name == value; })) { | ||||||
|  | @ -4073,11 +4073,11 @@ bool Parser::match_assert_clause() const | ||||||
|     return !m_state.current_token.trivia_contains_line_terminator() && m_state.current_token.original_value() == "assert"sv; |     return !m_state.current_token.trivia_contains_line_terminator() && m_state.current_token.original_value() == "assert"sv; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString Parser::consume_string_value() | DeprecatedFlyString Parser::consume_string_value() | ||||||
| { | { | ||||||
|     VERIFY(match(TokenType::StringLiteral)); |     VERIFY(match(TokenType::StringLiteral)); | ||||||
|     auto string_token = consume(); |     auto string_token = consume(); | ||||||
|     FlyString value = parse_string_literal(string_token)->value(); |     DeprecatedFlyString value = parse_string_literal(string_token)->value(); | ||||||
| 
 | 
 | ||||||
|     // This also checks IsStringWellFormedUnicode which makes sure there is no unpaired surrogate
 |     // This also checks IsStringWellFormedUnicode which makes sure there is no unpaired surrogate
 | ||||||
|     // Surrogates are at least 3 bytes
 |     // Surrogates are at least 3 bytes
 | ||||||
|  | @ -4148,7 +4148,7 @@ ModuleRequest Parser::parse_module_request() | ||||||
|     return request; |     return request; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static FlyString default_string_value = "default"; | static DeprecatedFlyString default_string_value = "default"; | ||||||
| 
 | 
 | ||||||
| NonnullRefPtr<ImportStatement> Parser::parse_import_statement(Program& program) | NonnullRefPtr<ImportStatement> Parser::parse_import_statement(Program& program) | ||||||
| { | { | ||||||
|  | @ -4237,13 +4237,13 @@ NonnullRefPtr<ImportStatement> Parser::parse_import_statement(Program& program) | ||||||
|                 // ImportSpecifier :  ImportedBinding
 |                 // ImportSpecifier :  ImportedBinding
 | ||||||
|                 auto require_as = !match_imported_binding(); |                 auto require_as = !match_imported_binding(); | ||||||
|                 auto name_position = position(); |                 auto name_position = position(); | ||||||
|                 auto name = consume().flystring_value(); |                 auto name = consume().DeprecatedFlyString_value(); | ||||||
| 
 | 
 | ||||||
|                 if (match_as()) { |                 if (match_as()) { | ||||||
|                     consume(TokenType::Identifier); |                     consume(TokenType::Identifier); | ||||||
| 
 | 
 | ||||||
|                     auto alias_position = position(); |                     auto alias_position = position(); | ||||||
|                     auto alias = consume_identifier().flystring_value(); |                     auto alias = consume_identifier().DeprecatedFlyString_value(); | ||||||
|                     check_identifier_name_for_assignment_validity(alias); |                     check_identifier_name_for_assignment_validity(alias); | ||||||
| 
 | 
 | ||||||
|                     entries_with_location.append({ { name, alias }, alias_position }); |                     entries_with_location.append({ { name, alias }, alias_position }); | ||||||
|  | @ -4264,7 +4264,7 @@ NonnullRefPtr<ImportStatement> Parser::parse_import_statement(Program& program) | ||||||
|                 consume(TokenType::Identifier); |                 consume(TokenType::Identifier); | ||||||
| 
 | 
 | ||||||
|                 auto alias_position = position(); |                 auto alias_position = position(); | ||||||
|                 auto alias = consume_identifier().flystring_value(); |                 auto alias = consume_identifier().DeprecatedFlyString_value(); | ||||||
|                 check_identifier_name_for_assignment_validity(alias); |                 check_identifier_name_for_assignment_validity(alias); | ||||||
| 
 | 
 | ||||||
|                 entries_with_location.append({ { move(name), alias }, alias_position }); |                 entries_with_location.append({ { move(name), alias }, alias_position }); | ||||||
|  | @ -4351,7 +4351,7 @@ NonnullRefPtr<ExportStatement> Parser::parse_export_statement(Program& program) | ||||||
|         auto default_position = position(); |         auto default_position = position(); | ||||||
|         consume(TokenType::Default); |         consume(TokenType::Default); | ||||||
| 
 | 
 | ||||||
|         FlyString local_name; |         DeprecatedFlyString local_name; | ||||||
| 
 | 
 | ||||||
|         auto lookahead_token = next_token(); |         auto lookahead_token = next_token(); | ||||||
| 
 | 
 | ||||||
|  | @ -4466,7 +4466,7 @@ NonnullRefPtr<ExportStatement> Parser::parse_export_statement(Program& program) | ||||||
|             Required |             Required | ||||||
|         } check_for_from { FromSpecifier::NotAllowed }; |         } check_for_from { FromSpecifier::NotAllowed }; | ||||||
| 
 | 
 | ||||||
|         auto parse_module_export_name = [&](bool lhs) -> FlyString { |         auto parse_module_export_name = [&](bool lhs) -> DeprecatedFlyString { | ||||||
|             // https://tc39.es/ecma262/#prod-ModuleExportName
 |             // https://tc39.es/ecma262/#prod-ModuleExportName
 | ||||||
|             //  ModuleExportName :
 |             //  ModuleExportName :
 | ||||||
|             //      IdentifierName
 |             //      IdentifierName
 | ||||||
|  |  | ||||||
|  | @ -234,7 +234,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     Token next_token(size_t steps = 1) const; |     Token next_token(size_t steps = 1) const; | ||||||
| 
 | 
 | ||||||
|     void check_identifier_name_for_assignment_validity(FlyString const&, bool force_strict = false); |     void check_identifier_name_for_assignment_validity(DeprecatedFlyString const&, bool force_strict = false); | ||||||
| 
 | 
 | ||||||
|     bool try_parse_arrow_function_expression_failed_at_position(Position const&) const; |     bool try_parse_arrow_function_expression_failed_at_position(Position const&) const; | ||||||
|     void set_try_parse_arrow_function_expression_failed_at_position(Position const&, bool); |     void set_try_parse_arrow_function_expression_failed_at_position(Position const&, bool); | ||||||
|  | @ -244,7 +244,7 @@ private: | ||||||
|     bool parse_directive(ScopeNode& body); |     bool parse_directive(ScopeNode& body); | ||||||
|     void parse_statement_list(ScopeNode& output_node, AllowLabelledFunction allow_labelled_functions = AllowLabelledFunction::No); |     void parse_statement_list(ScopeNode& output_node, AllowLabelledFunction allow_labelled_functions = AllowLabelledFunction::No); | ||||||
| 
 | 
 | ||||||
|     FlyString consume_string_value(); |     DeprecatedFlyString consume_string_value(); | ||||||
|     ModuleRequest parse_module_request(); |     ModuleRequest parse_module_request(); | ||||||
| 
 | 
 | ||||||
|     struct RulePosition { |     struct RulePosition { | ||||||
|  | @ -320,7 +320,7 @@ private: | ||||||
|     NonnullRefPtr<SourceCode> m_source_code; |     NonnullRefPtr<SourceCode> m_source_code; | ||||||
|     Vector<Position> m_rule_starts; |     Vector<Position> m_rule_starts; | ||||||
|     ParserState m_state; |     ParserState m_state; | ||||||
|     FlyString m_filename; |     DeprecatedFlyString m_filename; | ||||||
|     Vector<ParserState> m_saved_state; |     Vector<ParserState> m_saved_state; | ||||||
|     HashMap<Position, TokenMemoization, PositionKeyTraits> m_token_memoizations; |     HashMap<Position, TokenMemoization, PositionKeyTraits> m_token_memoizations; | ||||||
|     Program::Type m_program_type; |     Program::Type m_program_type; | ||||||
|  |  | ||||||
|  | @ -102,7 +102,7 @@ ErrorOr<void> js_out(JS::PrintContext& print_context, CheckedFormatString<Args.. | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ErrorOr<void> print_type(JS::PrintContext& print_context, FlyString const& name) | ErrorOr<void> print_type(JS::PrintContext& print_context, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     return js_out(print_context, "[\033[36;1m{}\033[0m]", name); |     return js_out(print_context, "[\033[36;1m{}\033[0m]", name); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -201,7 +201,7 @@ ThrowCompletionOr<Realm*> get_function_realm(VM& vm, FunctionObject const& funct | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 8.5.2.1 InitializeBoundName ( name, value, environment ), https://tc39.es/ecma262/#sec-initializeboundname
 | // 8.5.2.1 InitializeBoundName ( name, value, environment ), https://tc39.es/ecma262/#sec-initializeboundname
 | ||||||
| ThrowCompletionOr<void> initialize_bound_name(VM& vm, FlyString const& name, Value value, Environment* environment) | ThrowCompletionOr<void> initialize_bound_name(VM& vm, DeprecatedFlyString const& name, Value value, Environment* environment) | ||||||
| { | { | ||||||
|     // 1. If environment is not undefined, then
 |     // 1. If environment is not undefined, then
 | ||||||
|     if (environment) { |     if (environment) { | ||||||
|  | @ -794,7 +794,7 @@ ThrowCompletionOr<void> eval_declaration_instantiation(VM& vm, Program const& pr | ||||||
|     Vector<FunctionDeclaration const&> functions_to_initialize; |     Vector<FunctionDeclaration const&> functions_to_initialize; | ||||||
| 
 | 
 | ||||||
|     // 9. Let declaredFunctionNames be a new empty List.
 |     // 9. Let declaredFunctionNames be a new empty List.
 | ||||||
|     HashTable<FlyString> declared_function_names; |     HashTable<DeprecatedFlyString> declared_function_names; | ||||||
| 
 | 
 | ||||||
|     // 10. For each element d of varDeclarations, in reverse List order, do
 |     // 10. For each element d of varDeclarations, in reverse List order, do
 | ||||||
|     TRY(program.for_each_var_function_declaration_in_reverse_order([&](FunctionDeclaration const& function) -> ThrowCompletionOr<void> { |     TRY(program.for_each_var_function_declaration_in_reverse_order([&](FunctionDeclaration const& function) -> ThrowCompletionOr<void> { | ||||||
|  | @ -835,7 +835,7 @@ ThrowCompletionOr<void> eval_declaration_instantiation(VM& vm, Program const& pr | ||||||
|     if (!strict) { |     if (!strict) { | ||||||
|         // a. Let declaredFunctionOrVarNames be the list-concatenation of declaredFunctionNames and declaredVarNames.
 |         // a. Let declaredFunctionOrVarNames be the list-concatenation of declaredFunctionNames and declaredVarNames.
 | ||||||
|         // The spec here uses 'declaredVarNames' but that has not been declared yet.
 |         // The spec here uses 'declaredVarNames' but that has not been declared yet.
 | ||||||
|         HashTable<FlyString> hoisted_functions; |         HashTable<DeprecatedFlyString> hoisted_functions; | ||||||
| 
 | 
 | ||||||
|         // b. For each FunctionDeclaration f that is directly contained in the StatementList of a Block, CaseClause, or DefaultClause Contained within body, do
 |         // b. For each FunctionDeclaration f that is directly contained in the StatementList of a Block, CaseClause, or DefaultClause Contained within body, do
 | ||||||
|         TRY(program.for_each_function_hoistable_with_annexB_extension([&](FunctionDeclaration& function_declaration) -> ThrowCompletionOr<void> { |         TRY(program.for_each_function_hoistable_with_annexB_extension([&](FunctionDeclaration& function_declaration) -> ThrowCompletionOr<void> { | ||||||
|  | @ -926,7 +926,7 @@ ThrowCompletionOr<void> eval_declaration_instantiation(VM& vm, Program const& pr | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 12. Let declaredVarNames be a new empty List.
 |     // 12. Let declaredVarNames be a new empty List.
 | ||||||
|     HashTable<FlyString> declared_var_names; |     HashTable<DeprecatedFlyString> declared_var_names; | ||||||
| 
 | 
 | ||||||
|     // 13. For each element d of varDeclarations, do
 |     // 13. For each element d of varDeclarations, do
 | ||||||
|     TRY(program.for_each_var_scoped_variable_declaration([&](VariableDeclaration const& declaration) { |     TRY(program.for_each_var_scoped_variable_declaration([&](VariableDeclaration const& declaration) { | ||||||
|  | @ -1119,14 +1119,14 @@ Object* create_mapped_arguments_object(VM& vm, FunctionObject& function, Vector< | ||||||
|     MUST(object->define_property_or_throw(vm.names.length, { .value = Value(length), .writable = true, .enumerable = false, .configurable = true })); |     MUST(object->define_property_or_throw(vm.names.length, { .value = Value(length), .writable = true, .enumerable = false, .configurable = true })); | ||||||
| 
 | 
 | ||||||
|     // 17. Let mappedNames be a new empty List.
 |     // 17. Let mappedNames be a new empty List.
 | ||||||
|     HashTable<FlyString> mapped_names; |     HashTable<DeprecatedFlyString> mapped_names; | ||||||
| 
 | 
 | ||||||
|     // 18. Set index to numberOfParameters - 1.
 |     // 18. Set index to numberOfParameters - 1.
 | ||||||
|     // 19. Repeat, while index ≥ 0,
 |     // 19. Repeat, while index ≥ 0,
 | ||||||
|     VERIFY(formals.size() <= NumericLimits<i32>::max()); |     VERIFY(formals.size() <= NumericLimits<i32>::max()); | ||||||
|     for (i32 index = static_cast<i32>(formals.size()) - 1; index >= 0; --index) { |     for (i32 index = static_cast<i32>(formals.size()) - 1; index >= 0; --index) { | ||||||
|         // a. Let name be parameterNames[index].
 |         // a. Let name be parameterNames[index].
 | ||||||
|         auto const& name = formals[index].binding.get<FlyString>(); |         auto const& name = formals[index].binding.get<DeprecatedFlyString>(); | ||||||
| 
 | 
 | ||||||
|         // b. If name is not an element of mappedNames, then
 |         // b. If name is not an element of mappedNames, then
 | ||||||
|         if (mapped_names.contains(name)) |         if (mapped_names.contains(name)) | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ ThrowCompletionOr<size_t> length_of_array_like(VM&, Object const&); | ||||||
| ThrowCompletionOr<MarkedVector<Value>> create_list_from_array_like(VM&, Value, Function<ThrowCompletionOr<void>(Value)> = {}); | ThrowCompletionOr<MarkedVector<Value>> create_list_from_array_like(VM&, Value, Function<ThrowCompletionOr<void>(Value)> = {}); | ||||||
| ThrowCompletionOr<FunctionObject*> species_constructor(VM&, Object const&, FunctionObject& default_constructor); | ThrowCompletionOr<FunctionObject*> species_constructor(VM&, Object const&, FunctionObject& default_constructor); | ||||||
| ThrowCompletionOr<Realm*> get_function_realm(VM&, FunctionObject const&); | ThrowCompletionOr<Realm*> get_function_realm(VM&, FunctionObject const&); | ||||||
| ThrowCompletionOr<void> initialize_bound_name(VM&, FlyString const&, Value, Environment*); | ThrowCompletionOr<void> initialize_bound_name(VM&, DeprecatedFlyString const&, Value, Environment*); | ||||||
| bool is_compatible_property_descriptor(bool extensible, PropertyDescriptor const&, Optional<PropertyDescriptor> const& current); | bool is_compatible_property_descriptor(bool extensible, PropertyDescriptor const&, Optional<PropertyDescriptor> const& current); | ||||||
| bool validate_and_apply_property_descriptor(Object*, PropertyKey const&, bool extensible, PropertyDescriptor const&, Optional<PropertyDescriptor> const& current); | bool validate_and_apply_property_descriptor(Object*, PropertyKey const&, bool extensible, PropertyDescriptor const&, Optional<PropertyDescriptor> const& current); | ||||||
| ThrowCompletionOr<Object*> get_prototype_from_constructor(VM&, FunctionObject const& constructor, Object* (Intrinsics::*intrinsic_default_prototype)()); | ThrowCompletionOr<Object*> get_prototype_from_constructor(VM&, FunctionObject const& constructor, Object* (Intrinsics::*intrinsic_default_prototype)()); | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ public: | ||||||
|     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; |     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; | ||||||
|     virtual ThrowCompletionOr<NonnullGCPtr<Object>> internal_construct(MarkedVector<Value> arguments_list, FunctionObject& new_target) override; |     virtual ThrowCompletionOr<NonnullGCPtr<Object>> internal_construct(MarkedVector<Value> arguments_list, FunctionObject& new_target) override; | ||||||
| 
 | 
 | ||||||
|     virtual FlyString const& name() const override { return m_name; } |     virtual DeprecatedFlyString const& name() const override { return m_name; } | ||||||
|     virtual bool is_strict_mode() const override { return m_bound_target_function->is_strict_mode(); } |     virtual bool is_strict_mode() const override { return m_bound_target_function->is_strict_mode(); } | ||||||
|     virtual bool has_constructor() const override { return m_bound_target_function->has_constructor(); } |     virtual bool has_constructor() const override { return m_bound_target_function->has_constructor(); } | ||||||
| 
 | 
 | ||||||
|  | @ -39,7 +39,7 @@ private: | ||||||
|     Value m_bound_this;                                  // [[BoundThis]]
 |     Value m_bound_this;                                  // [[BoundThis]]
 | ||||||
|     Vector<Value> m_bound_arguments;                     // [[BoundArguments]]
 |     Vector<Value> m_bound_arguments;                     // [[BoundArguments]]
 | ||||||
| 
 | 
 | ||||||
|     FlyString m_name; |     DeprecatedFlyString m_name; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <LibJS/Forward.h> | #include <LibJS/Forward.h> | ||||||
| #include <LibJS/Runtime/PropertyKey.h> | #include <LibJS/Runtime/PropertyKey.h> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Optional.h> | #include <AK/Optional.h> | ||||||
| #include <AK/Try.h> | #include <AK/Try.h> | ||||||
| #include <AK/Variant.h> | #include <AK/Variant.h> | ||||||
|  | @ -40,7 +40,7 @@ public: | ||||||
|         Throw, |         Throw, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     ALWAYS_INLINE Completion(Type type, Optional<Value> value, Optional<FlyString> target) |     ALWAYS_INLINE Completion(Type type, Optional<Value> value, Optional<DeprecatedFlyString> target) | ||||||
|         : m_type(type) |         : m_type(type) | ||||||
|         , m_value(move(value)) |         , m_value(move(value)) | ||||||
|         , m_target(move(target)) |         , m_target(move(target)) | ||||||
|  | @ -81,8 +81,8 @@ public: | ||||||
|     } |     } | ||||||
|     [[nodiscard]] Optional<Value>& value() { return m_value; } |     [[nodiscard]] Optional<Value>& value() { return m_value; } | ||||||
|     [[nodiscard]] Optional<Value> const& value() const { return m_value; } |     [[nodiscard]] Optional<Value> const& value() const { return m_value; } | ||||||
|     [[nodiscard]] Optional<FlyString>& target() { return m_target; } |     [[nodiscard]] Optional<DeprecatedFlyString>& target() { return m_target; } | ||||||
|     [[nodiscard]] Optional<FlyString> const& target() const { return m_target; } |     [[nodiscard]] Optional<DeprecatedFlyString> const& target() const { return m_target; } | ||||||
| 
 | 
 | ||||||
|     // "abrupt completion refers to any completion with a [[Type]] value other than normal"
 |     // "abrupt completion refers to any completion with a [[Type]] value other than normal"
 | ||||||
|     [[nodiscard]] bool is_abrupt() const { return m_type != Type::Normal; } |     [[nodiscard]] bool is_abrupt() const { return m_type != Type::Normal; } | ||||||
|  | @ -127,9 +127,9 @@ private: | ||||||
|         return m_type == Type::Empty; |         return m_type == Type::Empty; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     Type m_type { Type::Normal }; // [[Type]]
 |     Type m_type { Type::Normal };           // [[Type]]
 | ||||||
|     Optional<Value> m_value;      // [[Value]]
 |     Optional<Value> m_value;                // [[Value]]
 | ||||||
|     Optional<FlyString> m_target; // [[Target]]
 |     Optional<DeprecatedFlyString> m_target; // [[Target]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ void DeclarativeEnvironment::visit_edges(Visitor& visitor) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-declarative-environment-records-hasbinding-n
 | // 9.1.1.1.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-declarative-environment-records-hasbinding-n
 | ||||||
| ThrowCompletionOr<bool> DeclarativeEnvironment::has_binding(FlyString const& name, Optional<size_t>* out_index) const | ThrowCompletionOr<bool> DeclarativeEnvironment::has_binding(DeprecatedFlyString const& name, Optional<size_t>* out_index) const | ||||||
| { | { | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|     if (!binding_and_index.has_value()) |     if (!binding_and_index.has_value()) | ||||||
|  | @ -56,7 +56,7 @@ ThrowCompletionOr<bool> DeclarativeEnvironment::has_binding(FlyString const& nam | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-declarative-environment-records-createmutablebinding-n-d
 | // 9.1.1.1.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-declarative-environment-records-createmutablebinding-n-d
 | ||||||
| ThrowCompletionOr<void> DeclarativeEnvironment::create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) | ThrowCompletionOr<void> DeclarativeEnvironment::create_mutable_binding(VM&, DeprecatedFlyString const& name, bool can_be_deleted) | ||||||
| { | { | ||||||
|     // 1. Assert: envRec does not already have a binding for N.
 |     // 1. Assert: envRec does not already have a binding for N.
 | ||||||
|     // NOTE: We skip this to avoid O(n) traversal of m_bindings.
 |     // NOTE: We skip this to avoid O(n) traversal of m_bindings.
 | ||||||
|  | @ -76,7 +76,7 @@ ThrowCompletionOr<void> DeclarativeEnvironment::create_mutable_binding(VM&, FlyS | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-createimmutablebinding-n-s
 | // 9.1.1.1.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-createimmutablebinding-n-s
 | ||||||
| ThrowCompletionOr<void> DeclarativeEnvironment::create_immutable_binding(VM&, FlyString const& name, bool strict) | ThrowCompletionOr<void> DeclarativeEnvironment::create_immutable_binding(VM&, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     // 1. Assert: envRec does not already have a binding for N.
 |     // 1. Assert: envRec does not already have a binding for N.
 | ||||||
|     // NOTE: We skip this to avoid O(n) traversal of m_bindings.
 |     // NOTE: We skip this to avoid O(n) traversal of m_bindings.
 | ||||||
|  | @ -96,7 +96,7 @@ ThrowCompletionOr<void> DeclarativeEnvironment::create_immutable_binding(VM&, Fl | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-declarative-environment-records-initializebinding-n-v
 | // 9.1.1.1.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-declarative-environment-records-initializebinding-n-v
 | ||||||
| ThrowCompletionOr<void> DeclarativeEnvironment::initialize_binding(VM& vm, FlyString const& name, Value value) | ThrowCompletionOr<void> DeclarativeEnvironment::initialize_binding(VM& vm, DeprecatedFlyString const& name, Value value) | ||||||
| { | { | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|     VERIFY(binding_and_index.has_value()); |     VERIFY(binding_and_index.has_value()); | ||||||
|  | @ -120,7 +120,7 @@ ThrowCompletionOr<void> DeclarativeEnvironment::initialize_binding_direct(VM&, B | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-setmutablebinding-n-v-s
 | // 9.1.1.1.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-setmutablebinding-n-v-s
 | ||||||
| ThrowCompletionOr<void> DeclarativeEnvironment::set_mutable_binding(VM& vm, FlyString const& name, Value value, bool strict) | ThrowCompletionOr<void> DeclarativeEnvironment::set_mutable_binding(VM& vm, DeprecatedFlyString const& name, Value value, bool strict) | ||||||
| { | { | ||||||
|     // 1. If envRec does not have a binding for N, then
 |     // 1. If envRec does not have a binding for N, then
 | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|  | @ -170,7 +170,7 @@ ThrowCompletionOr<void> DeclarativeEnvironment::set_mutable_binding_direct(VM& v | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-getbindingvalue-n-s
 | // 9.1.1.1.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-declarative-environment-records-getbindingvalue-n-s
 | ||||||
| ThrowCompletionOr<Value> DeclarativeEnvironment::get_binding_value(VM& vm, FlyString const& name, bool strict) | ThrowCompletionOr<Value> DeclarativeEnvironment::get_binding_value(VM& vm, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     // 1. Assert: envRec has a binding for N.
 |     // 1. Assert: envRec has a binding for N.
 | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|  | @ -196,7 +196,7 @@ ThrowCompletionOr<Value> DeclarativeEnvironment::get_binding_value_direct(VM&, B | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.1.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-declarative-environment-records-deletebinding-n
 | // 9.1.1.1.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-declarative-environment-records-deletebinding-n
 | ||||||
| ThrowCompletionOr<bool> DeclarativeEnvironment::delete_binding(VM&, FlyString const& name) | ThrowCompletionOr<bool> DeclarativeEnvironment::delete_binding(VM&, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     // 1. Assert: envRec has a binding for the name that is the value of N.
 |     // 1. Assert: envRec has a binding for the name that is the value of N.
 | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|  | @ -214,7 +214,7 @@ ThrowCompletionOr<bool> DeclarativeEnvironment::delete_binding(VM&, FlyString co | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<void> DeclarativeEnvironment::initialize_or_set_mutable_binding(VM& vm, FlyString const& name, Value value) | ThrowCompletionOr<void> DeclarativeEnvironment::initialize_or_set_mutable_binding(VM& vm, DeprecatedFlyString const& name, Value value) | ||||||
| { | { | ||||||
|     auto binding_and_index = find_binding_and_index(name); |     auto binding_and_index = find_binding_and_index(name); | ||||||
|     VERIFY(binding_and_index.has_value()); |     VERIFY(binding_and_index.has_value()); | ||||||
|  | @ -226,7 +226,7 @@ ThrowCompletionOr<void> DeclarativeEnvironment::initialize_or_set_mutable_bindin | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DeclarativeEnvironment::initialize_or_set_mutable_binding(Badge<ScopeNode>, VM& vm, FlyString const& name, Value value) | void DeclarativeEnvironment::initialize_or_set_mutable_binding(Badge<ScopeNode>, VM& vm, DeprecatedFlyString const& name, Value value) | ||||||
| { | { | ||||||
|     MUST(initialize_or_set_mutable_binding(vm, name, value)); |     MUST(initialize_or_set_mutable_binding(vm, name, value)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <LibJS/Runtime/Completion.h> | #include <LibJS/Runtime/Completion.h> | ||||||
| #include <LibJS/Runtime/Environment.h> | #include <LibJS/Runtime/Environment.h> | ||||||
|  | @ -18,7 +18,7 @@ class DeclarativeEnvironment : public Environment { | ||||||
|     JS_ENVIRONMENT(DeclarativeEnvironment, Environment); |     JS_ENVIRONMENT(DeclarativeEnvironment, Environment); | ||||||
| 
 | 
 | ||||||
|     struct Binding { |     struct Binding { | ||||||
|         FlyString name; |         DeprecatedFlyString name; | ||||||
|         Value value; |         Value value; | ||||||
|         bool strict { false }; |         bool strict { false }; | ||||||
|         bool mutable_ { false }; |         bool mutable_ { false }; | ||||||
|  | @ -31,21 +31,21 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual ~DeclarativeEnvironment() override = default; |     virtual ~DeclarativeEnvironment() override = default; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override; |     virtual ThrowCompletionOr<bool> has_binding(DeprecatedFlyString const& name, Optional<size_t>* = nullptr) const override; | ||||||
|     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) override; |     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, DeprecatedFlyString const& name, bool can_be_deleted) override; | ||||||
|     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<void> initialize_binding(VM&, FlyString const& name, Value) override; |     virtual ThrowCompletionOr<void> initialize_binding(VM&, DeprecatedFlyString const& name, Value) override; | ||||||
|     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, FlyString const& name, Value, bool strict) override; |     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, DeprecatedFlyString const& name, Value, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<Value> get_binding_value(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<Value> get_binding_value(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<bool> delete_binding(VM&, FlyString const& name) override; |     virtual ThrowCompletionOr<bool> delete_binding(VM&, DeprecatedFlyString const& name) override; | ||||||
| 
 | 
 | ||||||
|     void initialize_or_set_mutable_binding(Badge<ScopeNode>, VM&, FlyString const& name, Value value); |     void initialize_or_set_mutable_binding(Badge<ScopeNode>, VM&, DeprecatedFlyString const& name, Value value); | ||||||
|     ThrowCompletionOr<void> initialize_or_set_mutable_binding(VM&, FlyString const& name, Value value); |     ThrowCompletionOr<void> initialize_or_set_mutable_binding(VM&, DeprecatedFlyString const& name, Value value); | ||||||
| 
 | 
 | ||||||
|     // This is not a method defined in the spec! Do not use this in any LibJS (or other spec related) code.
 |     // This is not a method defined in the spec! Do not use this in any LibJS (or other spec related) code.
 | ||||||
|     [[nodiscard]] Vector<FlyString> bindings() const |     [[nodiscard]] Vector<DeprecatedFlyString> bindings() const | ||||||
|     { |     { | ||||||
|         Vector<FlyString> names; |         Vector<DeprecatedFlyString> names; | ||||||
|         names.ensure_capacity(m_bindings.size()); |         names.ensure_capacity(m_bindings.size()); | ||||||
| 
 | 
 | ||||||
|         for (auto const& binding : m_bindings) |         for (auto const& binding : m_bindings) | ||||||
|  | @ -101,7 +101,7 @@ protected: | ||||||
| 
 | 
 | ||||||
|     friend class ModuleEnvironment; |     friend class ModuleEnvironment; | ||||||
| 
 | 
 | ||||||
|     virtual Optional<BindingAndIndex> find_binding_and_index(FlyString const& name) const |     virtual Optional<BindingAndIndex> find_binding_and_index(DeprecatedFlyString const& name) const | ||||||
|     { |     { | ||||||
|         auto it = m_bindings.find_if([&](auto const& binding) { |         auto it = m_bindings.find_if([&](auto const& binding) { | ||||||
|             return binding.name == name; |             return binding.name == name; | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| NonnullGCPtr<ECMAScriptFunctionObject> ECMAScriptFunctionObject::create(Realm& realm, FlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | NonnullGCPtr<ECMAScriptFunctionObject> ECMAScriptFunctionObject::create(Realm& realm, DeprecatedFlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | ||||||
| { | { | ||||||
|     Object* prototype = nullptr; |     Object* prototype = nullptr; | ||||||
|     switch (kind) { |     switch (kind) { | ||||||
|  | @ -48,12 +48,12 @@ NonnullGCPtr<ECMAScriptFunctionObject> ECMAScriptFunctionObject::create(Realm& r | ||||||
|     return realm.heap().allocate<ECMAScriptFunctionObject>(realm, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, *prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); |     return realm.heap().allocate<ECMAScriptFunctionObject>(realm, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, *prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NonnullGCPtr<ECMAScriptFunctionObject> ECMAScriptFunctionObject::create(Realm& realm, FlyString name, Object& prototype, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | NonnullGCPtr<ECMAScriptFunctionObject> ECMAScriptFunctionObject::create(Realm& realm, DeprecatedFlyString name, Object& prototype, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | ||||||
| { | { | ||||||
|     return realm.heap().allocate<ECMAScriptFunctionObject>(realm, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); |     return realm.heap().allocate<ECMAScriptFunctionObject>(realm, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ECMAScriptFunctionObject::ECMAScriptFunctionObject(FlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> formal_parameters, i32 function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind kind, bool strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | ECMAScriptFunctionObject::ECMAScriptFunctionObject(DeprecatedFlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> formal_parameters, i32 function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind kind, bool strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) | ||||||
|     : FunctionObject(prototype) |     : FunctionObject(prototype) | ||||||
|     , m_name(move(name)) |     , m_name(move(name)) | ||||||
|     , m_function_length(function_length) |     , m_function_length(function_length) | ||||||
|  | @ -91,7 +91,7 @@ ECMAScriptFunctionObject::ECMAScriptFunctionObject(FlyString name, DeprecatedStr | ||||||
|             return false; |             return false; | ||||||
|         if (parameter.default_value) |         if (parameter.default_value) | ||||||
|             return false; |             return false; | ||||||
|         if (!parameter.binding.template has<FlyString>()) |         if (!parameter.binding.template has<DeprecatedFlyString>()) | ||||||
|             return false; |             return false; | ||||||
|         return true; |         return true; | ||||||
|     }); |     }); | ||||||
|  | @ -338,13 +338,13 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia | ||||||
|     // FIXME: Maybe compute has duplicates at parse time? (We need to anyway since it's an error in some cases)
 |     // FIXME: Maybe compute has duplicates at parse time? (We need to anyway since it's an error in some cases)
 | ||||||
| 
 | 
 | ||||||
|     bool has_duplicates = false; |     bool has_duplicates = false; | ||||||
|     HashTable<FlyString> parameter_names; |     HashTable<DeprecatedFlyString> parameter_names; | ||||||
|     for (auto& parameter : m_formal_parameters) { |     for (auto& parameter : m_formal_parameters) { | ||||||
|         if (parameter.default_value) |         if (parameter.default_value) | ||||||
|             has_parameter_expressions = true; |             has_parameter_expressions = true; | ||||||
| 
 | 
 | ||||||
|         parameter.binding.visit( |         parameter.binding.visit( | ||||||
|             [&](FlyString const& name) { |             [&](DeprecatedFlyString const& name) { | ||||||
|                 if (parameter_names.set(name) != AK::HashSetResult::InsertedNewEntry) |                 if (parameter_names.set(name) != AK::HashSetResult::InsertedNewEntry) | ||||||
|                     has_duplicates = true; |                     has_duplicates = true; | ||||||
|             }, |             }, | ||||||
|  | @ -367,7 +367,7 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia | ||||||
|     if (parameter_names.contains(vm.names.arguments.as_string())) |     if (parameter_names.contains(vm.names.arguments.as_string())) | ||||||
|         arguments_object_needed = false; |         arguments_object_needed = false; | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> function_names; |     HashTable<DeprecatedFlyString> function_names; | ||||||
|     Vector<FunctionDeclaration const&> functions_to_initialize; |     Vector<FunctionDeclaration const&> functions_to_initialize; | ||||||
| 
 | 
 | ||||||
|     if (scope_body) { |     if (scope_body) { | ||||||
|  | @ -463,7 +463,7 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia | ||||||
| 
 | 
 | ||||||
|                 Environment* used_environment = has_duplicates ? nullptr : environment; |                 Environment* used_environment = has_duplicates ? nullptr : environment; | ||||||
| 
 | 
 | ||||||
|                 if constexpr (IsSame<FlyString const&, decltype(param)>) { |                 if constexpr (IsSame<DeprecatedFlyString const&, decltype(param)>) { | ||||||
|                     Reference reference = TRY(vm.resolve_binding(param, used_environment)); |                     Reference reference = TRY(vm.resolve_binding(param, used_environment)); | ||||||
|                     // Here the difference from hasDuplicates is important
 |                     // Here the difference from hasDuplicates is important
 | ||||||
|                     if (has_duplicates) |                     if (has_duplicates) | ||||||
|  | @ -479,7 +479,7 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia | ||||||
| 
 | 
 | ||||||
|     GCPtr<Environment> var_environment; |     GCPtr<Environment> var_environment; | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> instantiated_var_names; |     HashTable<DeprecatedFlyString> instantiated_var_names; | ||||||
|     if (scope_body) |     if (scope_body) | ||||||
|         instantiated_var_names.ensure_capacity(scope_body->var_declaration_count()); |         instantiated_var_names.ensure_capacity(scope_body->var_declaration_count()); | ||||||
| 
 | 
 | ||||||
|  | @ -911,7 +911,7 @@ Completion ECMAScriptFunctionObject::ordinary_call_evaluate_body() | ||||||
|     VERIFY_NOT_REACHED(); |     VERIFY_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ECMAScriptFunctionObject::set_name(FlyString const& name) | void ECMAScriptFunctionObject::set_name(DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     VERIFY(!name.is_null()); |     VERIFY(!name.is_null()); | ||||||
|     auto& vm = this->vm(); |     auto& vm = this->vm(); | ||||||
|  |  | ||||||
|  | @ -32,8 +32,8 @@ public: | ||||||
|         Global, |         Global, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, FlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); |     static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, DeprecatedFlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); | ||||||
|     static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, FlyString name, Object& prototype, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); |     static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, DeprecatedFlyString name, Object& prototype, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); | ||||||
| 
 | 
 | ||||||
|     virtual void initialize(Realm&) override; |     virtual void initialize(Realm&) override; | ||||||
|     virtual ~ECMAScriptFunctionObject() override = default; |     virtual ~ECMAScriptFunctionObject() override = default; | ||||||
|  | @ -46,8 +46,8 @@ public: | ||||||
|     Statement const& ecmascript_code() const { return m_ecmascript_code; } |     Statement const& ecmascript_code() const { return m_ecmascript_code; } | ||||||
|     Vector<FunctionParameter> const& formal_parameters() const { return m_formal_parameters; }; |     Vector<FunctionParameter> const& formal_parameters() const { return m_formal_parameters; }; | ||||||
| 
 | 
 | ||||||
|     virtual FlyString const& name() const override { return m_name; }; |     virtual DeprecatedFlyString const& name() const override { return m_name; }; | ||||||
|     void set_name(FlyString const& name); |     void set_name(DeprecatedFlyString const& name); | ||||||
| 
 | 
 | ||||||
|     void set_is_class_constructor() { m_is_class_constructor = true; }; |     void set_is_class_constructor() { m_is_class_constructor = true; }; | ||||||
| 
 | 
 | ||||||
|  | @ -93,7 +93,7 @@ protected: | ||||||
|     virtual Completion ordinary_call_evaluate_body(); |     virtual Completion ordinary_call_evaluate_body(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     ECMAScriptFunctionObject(FlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name); |     ECMAScriptFunctionObject(DeprecatedFlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name); | ||||||
| 
 | 
 | ||||||
|     virtual bool is_ecmascript_function_object() const override { return true; } |     virtual bool is_ecmascript_function_object() const override { return true; } | ||||||
|     virtual void visit_edges(Visitor&) override; |     virtual void visit_edges(Visitor&) override; | ||||||
|  | @ -105,7 +105,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> function_declaration_instantiation(Interpreter*); |     ThrowCompletionOr<void> function_declaration_instantiation(Interpreter*); | ||||||
| 
 | 
 | ||||||
|     FlyString m_name; |     DeprecatedFlyString m_name; | ||||||
|     OwnPtr<Bytecode::Executable> m_bytecode_executable; |     OwnPtr<Bytecode::Executable> m_bytecode_executable; | ||||||
|     Vector<OwnPtr<Bytecode::Executable>> m_default_parameter_bytecode_executables; |     Vector<OwnPtr<Bytecode::Executable>> m_default_parameter_bytecode_executables; | ||||||
|     i32 m_function_length { 0 }; |     i32 m_function_length { 0 }; | ||||||
|  |  | ||||||
|  | @ -28,13 +28,13 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual Object* with_base_object() const { return nullptr; } |     virtual Object* with_base_object() const { return nullptr; } | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<bool> has_binding([[maybe_unused]] FlyString const& name, [[maybe_unused]] Optional<size_t>* out_index = nullptr) const { return false; } |     virtual ThrowCompletionOr<bool> has_binding([[maybe_unused]] DeprecatedFlyString const& name, [[maybe_unused]] Optional<size_t>* out_index = nullptr) const { return false; } | ||||||
|     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, [[maybe_unused]] FlyString const& name, [[maybe_unused]] bool can_be_deleted) { return {}; } |     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, [[maybe_unused]] DeprecatedFlyString const& name, [[maybe_unused]] bool can_be_deleted) { return {}; } | ||||||
|     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, [[maybe_unused]] FlyString const& name, [[maybe_unused]] bool strict) { return {}; } |     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, [[maybe_unused]] DeprecatedFlyString const& name, [[maybe_unused]] bool strict) { return {}; } | ||||||
|     virtual ThrowCompletionOr<void> initialize_binding(VM&, [[maybe_unused]] FlyString const& name, Value) { return {}; } |     virtual ThrowCompletionOr<void> initialize_binding(VM&, [[maybe_unused]] DeprecatedFlyString const& name, Value) { return {}; } | ||||||
|     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, [[maybe_unused]] FlyString const& name, Value, [[maybe_unused]] bool strict) { return {}; } |     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, [[maybe_unused]] DeprecatedFlyString const& name, Value, [[maybe_unused]] bool strict) { return {}; } | ||||||
|     virtual ThrowCompletionOr<Value> get_binding_value(VM&, [[maybe_unused]] FlyString const& name, [[maybe_unused]] bool strict) { return Value {}; } |     virtual ThrowCompletionOr<Value> get_binding_value(VM&, [[maybe_unused]] DeprecatedFlyString const& name, [[maybe_unused]] bool strict) { return Value {}; } | ||||||
|     virtual ThrowCompletionOr<bool> delete_binding(VM&, [[maybe_unused]] FlyString const& name) { return false; } |     virtual ThrowCompletionOr<bool> delete_binding(VM&, [[maybe_unused]] DeprecatedFlyString const& name) { return false; } | ||||||
| 
 | 
 | ||||||
|     // [[OuterEnv]]
 |     // [[OuterEnv]]
 | ||||||
|     Environment* outer_environment() { return m_outer_environment; } |     Environment* outer_environment() { return m_outer_environment; } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <LibJS/Runtime/Completion.h> | #include <LibJS/Runtime/Completion.h> | ||||||
| #include <LibJS/Runtime/Object.h> | #include <LibJS/Runtime/Object.h> | ||||||
| #include <LibJS/SourceRange.h> | #include <LibJS/SourceRange.h> | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| struct TracebackFrame { | struct TracebackFrame { | ||||||
|     FlyString function_name; |     DeprecatedFlyString function_name; | ||||||
|     SourceRange source_range; |     SourceRange source_range; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/WeakPtr.h> | #include <AK/WeakPtr.h> | ||||||
| #include <LibJS/Forward.h> | #include <LibJS/Forward.h> | ||||||
| #include <LibJS/Heap/MarkedVector.h> | #include <LibJS/Heap/MarkedVector.h> | ||||||
|  | @ -43,7 +43,7 @@ public: | ||||||
|     Cell* context_owner { nullptr }; |     Cell* context_owner { nullptr }; | ||||||
| 
 | 
 | ||||||
|     ASTNode const* current_node { nullptr }; |     ASTNode const* current_node { nullptr }; | ||||||
|     FlyString function_name; |     DeprecatedFlyString function_name; | ||||||
|     Value this_value; |     Value this_value; | ||||||
|     MarkedVector<Value> arguments; |     MarkedVector<Value> arguments; | ||||||
|     bool is_strict_mode { false }; |     bool is_strict_mode { false }; | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ public: | ||||||
|     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) = 0; |     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) = 0; | ||||||
|     virtual ThrowCompletionOr<NonnullGCPtr<Object>> internal_construct([[maybe_unused]] MarkedVector<Value> arguments_list, [[maybe_unused]] FunctionObject& new_target) { VERIFY_NOT_REACHED(); } |     virtual ThrowCompletionOr<NonnullGCPtr<Object>> internal_construct([[maybe_unused]] MarkedVector<Value> arguments_list, [[maybe_unused]] FunctionObject& new_target) { VERIFY_NOT_REACHED(); } | ||||||
| 
 | 
 | ||||||
|     virtual FlyString const& name() const = 0; |     virtual DeprecatedFlyString const& name() const = 0; | ||||||
| 
 | 
 | ||||||
|     void set_function_name(Variant<PropertyKey, PrivateName> const& name_arg, Optional<StringView> const& prefix = {}); |     void set_function_name(Variant<PropertyKey, PrivateName> const& name_arg, Optional<StringView> const& prefix = {}); | ||||||
|     void set_function_length(double length); |     void set_function_length(double length); | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ public: | ||||||
|     virtual ~FunctionPrototype() override = default; |     virtual ~FunctionPrototype() override = default; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; |     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; | ||||||
|     virtual FlyString const& name() const override { return m_name; } |     virtual DeprecatedFlyString const& name() const override { return m_name; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit FunctionPrototype(Realm&); |     explicit FunctionPrototype(Realm&); | ||||||
|  | @ -31,7 +31,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     // Totally unnecessary, but sadly still necessary.
 |     // Totally unnecessary, but sadly still necessary.
 | ||||||
|     // TODO: Get rid of the pointless name() method.
 |     // TODO: Get rid of the pointless name() method.
 | ||||||
|     FlyString m_name { "FunctionPrototype" }; |     DeprecatedFlyString m_name { "FunctionPrototype" }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ ThrowCompletionOr<Value> GlobalEnvironment::get_this_binding(VM&) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-global-environment-records-hasbinding-n
 | // 9.1.1.4.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-global-environment-records-hasbinding-n
 | ||||||
| ThrowCompletionOr<bool> GlobalEnvironment::has_binding(FlyString const& name, Optional<size_t>* out_index) const | ThrowCompletionOr<bool> GlobalEnvironment::has_binding(DeprecatedFlyString const& name, Optional<size_t>* out_index) const | ||||||
| { | { | ||||||
|     if (out_index) |     if (out_index) | ||||||
|         *out_index = EnvironmentCoordinate::global_marker; |         *out_index = EnvironmentCoordinate::global_marker; | ||||||
|  | @ -55,7 +55,7 @@ ThrowCompletionOr<bool> GlobalEnvironment::has_binding(FlyString const& name, Op | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-global-environment-records-createmutablebinding-n-d
 | // 9.1.1.4.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-global-environment-records-createmutablebinding-n-d
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::create_mutable_binding(VM& vm, FlyString const& name, bool can_be_deleted) | ThrowCompletionOr<void> GlobalEnvironment::create_mutable_binding(VM& vm, DeprecatedFlyString const& name, bool can_be_deleted) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, throw a TypeError exception.
 |     // 2. If ! DclRec.HasBinding(N) is true, throw a TypeError exception.
 | ||||||
|  | @ -67,7 +67,7 @@ ThrowCompletionOr<void> GlobalEnvironment::create_mutable_binding(VM& vm, FlyStr | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-global-environment-records-createimmutablebinding-n-s
 | // 9.1.1.4.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-global-environment-records-createimmutablebinding-n-s
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::create_immutable_binding(VM& vm, FlyString const& name, bool strict) | ThrowCompletionOr<void> GlobalEnvironment::create_immutable_binding(VM& vm, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, throw a TypeError exception.
 |     // 2. If ! DclRec.HasBinding(N) is true, throw a TypeError exception.
 | ||||||
|  | @ -79,7 +79,7 @@ ThrowCompletionOr<void> GlobalEnvironment::create_immutable_binding(VM& vm, FlyS | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-global-environment-records-initializebinding-n-v
 | // 9.1.1.4.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-global-environment-records-initializebinding-n-v
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::initialize_binding(VM& vm, FlyString const& name, Value value) | ThrowCompletionOr<void> GlobalEnvironment::initialize_binding(VM& vm, DeprecatedFlyString const& name, Value value) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, then
 |     // 2. If ! DclRec.HasBinding(N) is true, then
 | ||||||
|  | @ -95,7 +95,7 @@ ThrowCompletionOr<void> GlobalEnvironment::initialize_binding(VM& vm, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-global-environment-records-setmutablebinding-n-v-s
 | // 9.1.1.4.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-global-environment-records-setmutablebinding-n-v-s
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::set_mutable_binding(VM& vm, FlyString const& name, Value value, bool strict) | ThrowCompletionOr<void> GlobalEnvironment::set_mutable_binding(VM& vm, DeprecatedFlyString const& name, Value value, bool strict) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, then
 |     // 2. If ! DclRec.HasBinding(N) is true, then
 | ||||||
|  | @ -110,7 +110,7 @@ ThrowCompletionOr<void> GlobalEnvironment::set_mutable_binding(VM& vm, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-global-environment-records-getbindingvalue-n-s
 | // 9.1.1.4.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-global-environment-records-getbindingvalue-n-s
 | ||||||
| ThrowCompletionOr<Value> GlobalEnvironment::get_binding_value(VM& vm, FlyString const& name, bool strict) | ThrowCompletionOr<Value> GlobalEnvironment::get_binding_value(VM& vm, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, then
 |     // 2. If ! DclRec.HasBinding(N) is true, then
 | ||||||
|  | @ -125,7 +125,7 @@ ThrowCompletionOr<Value> GlobalEnvironment::get_binding_value(VM& vm, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-global-environment-records-deletebinding-n
 | // 9.1.1.4.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-global-environment-records-deletebinding-n
 | ||||||
| ThrowCompletionOr<bool> GlobalEnvironment::delete_binding(VM& vm, FlyString const& name) | ThrowCompletionOr<bool> GlobalEnvironment::delete_binding(VM& vm, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. If ! DclRec.HasBinding(N) is true, then
 |     // 2. If ! DclRec.HasBinding(N) is true, then
 | ||||||
|  | @ -161,7 +161,7 @@ ThrowCompletionOr<bool> GlobalEnvironment::delete_binding(VM& vm, FlyString cons | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.12 HasVarDeclaration ( N ), https://tc39.es/ecma262/#sec-hasvardeclaration
 | // 9.1.1.4.12 HasVarDeclaration ( N ), https://tc39.es/ecma262/#sec-hasvardeclaration
 | ||||||
| bool GlobalEnvironment::has_var_declaration(FlyString const& name) const | bool GlobalEnvironment::has_var_declaration(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     // 1. Let varDeclaredNames be envRec.[[VarNames]].
 |     // 1. Let varDeclaredNames be envRec.[[VarNames]].
 | ||||||
|     // 2. If varDeclaredNames contains N, return true.
 |     // 2. If varDeclaredNames contains N, return true.
 | ||||||
|  | @ -170,7 +170,7 @@ bool GlobalEnvironment::has_var_declaration(FlyString const& name) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.13 HasLexicalDeclaration ( N ), https://tc39.es/ecma262/#sec-haslexicaldeclaration
 | // 9.1.1.4.13 HasLexicalDeclaration ( N ), https://tc39.es/ecma262/#sec-haslexicaldeclaration
 | ||||||
| bool GlobalEnvironment::has_lexical_declaration(FlyString const& name) const | bool GlobalEnvironment::has_lexical_declaration(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 |     // 1. Let DclRec be envRec.[[DeclarativeRecord]].
 | ||||||
|     // 2. Return ! DclRec.HasBinding(N).
 |     // 2. Return ! DclRec.HasBinding(N).
 | ||||||
|  | @ -178,7 +178,7 @@ bool GlobalEnvironment::has_lexical_declaration(FlyString const& name) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.14 HasRestrictedGlobalProperty ( N ), https://tc39.es/ecma262/#sec-hasrestrictedglobalproperty
 | // 9.1.1.4.14 HasRestrictedGlobalProperty ( N ), https://tc39.es/ecma262/#sec-hasrestrictedglobalproperty
 | ||||||
| ThrowCompletionOr<bool> GlobalEnvironment::has_restricted_global_property(FlyString const& name) const | ThrowCompletionOr<bool> GlobalEnvironment::has_restricted_global_property(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 |     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 | ||||||
|     // 2. Let globalObject be ObjRec.[[BindingObject]].
 |     // 2. Let globalObject be ObjRec.[[BindingObject]].
 | ||||||
|  | @ -200,7 +200,7 @@ ThrowCompletionOr<bool> GlobalEnvironment::has_restricted_global_property(FlyStr | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.15 CanDeclareGlobalVar ( N ), https://tc39.es/ecma262/#sec-candeclareglobalvar
 | // 9.1.1.4.15 CanDeclareGlobalVar ( N ), https://tc39.es/ecma262/#sec-candeclareglobalvar
 | ||||||
| ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_var(FlyString const& name) const | ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_var(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 |     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 | ||||||
|     // 2. Let globalObject be ObjRec.[[BindingObject]].
 |     // 2. Let globalObject be ObjRec.[[BindingObject]].
 | ||||||
|  | @ -218,7 +218,7 @@ ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_var(FlyString cons | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.16 CanDeclareGlobalFunction ( N ), https://tc39.es/ecma262/#sec-candeclareglobalfunction
 | // 9.1.1.4.16 CanDeclareGlobalFunction ( N ), https://tc39.es/ecma262/#sec-candeclareglobalfunction
 | ||||||
| ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_function(FlyString const& name) const | ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_function(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 |     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 | ||||||
|     // 2. Let globalObject be ObjRec.[[BindingObject]].
 |     // 2. Let globalObject be ObjRec.[[BindingObject]].
 | ||||||
|  | @ -244,7 +244,7 @@ ThrowCompletionOr<bool> GlobalEnvironment::can_declare_global_function(FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.17 CreateGlobalVarBinding ( N, D ), https://tc39.es/ecma262/#sec-createglobalvarbinding
 | // 9.1.1.4.17 CreateGlobalVarBinding ( N, D ), https://tc39.es/ecma262/#sec-createglobalvarbinding
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::create_global_var_binding(FlyString const& name, bool can_be_deleted) | ThrowCompletionOr<void> GlobalEnvironment::create_global_var_binding(DeprecatedFlyString const& name, bool can_be_deleted) | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     auto& vm = this->vm(); | ||||||
| 
 | 
 | ||||||
|  | @ -279,7 +279,7 @@ ThrowCompletionOr<void> GlobalEnvironment::create_global_var_binding(FlyString c | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.4.18 CreateGlobalFunctionBinding ( N, V, D ), https://tc39.es/ecma262/#sec-createglobalfunctionbinding
 | // 9.1.1.4.18 CreateGlobalFunctionBinding ( N, V, D ), https://tc39.es/ecma262/#sec-createglobalfunctionbinding
 | ||||||
| ThrowCompletionOr<void> GlobalEnvironment::create_global_function_binding(FlyString const& name, Value value, bool can_be_deleted) | ThrowCompletionOr<void> GlobalEnvironment::create_global_function_binding(DeprecatedFlyString const& name, Value value, bool can_be_deleted) | ||||||
| { | { | ||||||
|     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 |     // 1. Let ObjRec be envRec.[[ObjectRecord]].
 | ||||||
|     // 2. Let globalObject be ObjRec.[[BindingObject]].
 |     // 2. Let globalObject be ObjRec.[[BindingObject]].
 | ||||||
|  |  | ||||||
|  | @ -17,25 +17,25 @@ public: | ||||||
|     virtual bool has_this_binding() const final { return true; } |     virtual bool has_this_binding() const final { return true; } | ||||||
|     virtual ThrowCompletionOr<Value> get_this_binding(VM&) const final; |     virtual ThrowCompletionOr<Value> get_this_binding(VM&) const final; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override; |     virtual ThrowCompletionOr<bool> has_binding(DeprecatedFlyString const& name, Optional<size_t>* = nullptr) const override; | ||||||
|     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) override; |     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, DeprecatedFlyString const& name, bool can_be_deleted) override; | ||||||
|     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<void> initialize_binding(VM&, FlyString const& name, Value) override; |     virtual ThrowCompletionOr<void> initialize_binding(VM&, DeprecatedFlyString const& name, Value) override; | ||||||
|     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, FlyString const& name, Value, bool strict) override; |     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, DeprecatedFlyString const& name, Value, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<Value> get_binding_value(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<Value> get_binding_value(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<bool> delete_binding(VM&, FlyString const& name) override; |     virtual ThrowCompletionOr<bool> delete_binding(VM&, DeprecatedFlyString const& name) override; | ||||||
| 
 | 
 | ||||||
|     ObjectEnvironment& object_record() { return *m_object_record; } |     ObjectEnvironment& object_record() { return *m_object_record; } | ||||||
|     Object& global_this_value() { return *m_global_this_value; } |     Object& global_this_value() { return *m_global_this_value; } | ||||||
|     DeclarativeEnvironment& declarative_record() { return *m_declarative_record; } |     DeclarativeEnvironment& declarative_record() { return *m_declarative_record; } | ||||||
| 
 | 
 | ||||||
|     bool has_var_declaration(FlyString const& name) const; |     bool has_var_declaration(DeprecatedFlyString const& name) const; | ||||||
|     bool has_lexical_declaration(FlyString const& name) const; |     bool has_lexical_declaration(DeprecatedFlyString const& name) const; | ||||||
|     ThrowCompletionOr<bool> has_restricted_global_property(FlyString const& name) const; |     ThrowCompletionOr<bool> has_restricted_global_property(DeprecatedFlyString const& name) const; | ||||||
|     ThrowCompletionOr<bool> can_declare_global_var(FlyString const& name) const; |     ThrowCompletionOr<bool> can_declare_global_var(DeprecatedFlyString const& name) const; | ||||||
|     ThrowCompletionOr<bool> can_declare_global_function(FlyString const& name) const; |     ThrowCompletionOr<bool> can_declare_global_function(DeprecatedFlyString const& name) const; | ||||||
|     ThrowCompletionOr<void> create_global_var_binding(FlyString const& name, bool can_be_deleted); |     ThrowCompletionOr<void> create_global_var_binding(DeprecatedFlyString const& name, bool can_be_deleted); | ||||||
|     ThrowCompletionOr<void> create_global_function_binding(FlyString const& name, Value, bool can_be_deleted); |     ThrowCompletionOr<void> create_global_function_binding(DeprecatedFlyString const& name, Value, bool can_be_deleted); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     GlobalEnvironment(Object&, Object& this_value); |     GlobalEnvironment(Object&, Object& this_value); | ||||||
|  | @ -46,7 +46,7 @@ private: | ||||||
|     ObjectEnvironment* m_object_record { nullptr };           // [[ObjectRecord]]
 |     ObjectEnvironment* m_object_record { nullptr };           // [[ObjectRecord]]
 | ||||||
|     Object* m_global_this_value { nullptr };                  // [[GlobalThisValue]]
 |     Object* m_global_this_value { nullptr };                  // [[GlobalThisValue]]
 | ||||||
|     DeclarativeEnvironment* m_declarative_record { nullptr }; // [[DeclarativeRecord]]
 |     DeclarativeEnvironment* m_declarative_record { nullptr }; // [[DeclarativeRecord]]
 | ||||||
|     Vector<FlyString> m_var_names;                            // [[VarNames]]
 |     Vector<DeprecatedFlyString> m_var_names;                  // [[VarNames]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<> | template<> | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ ModuleEnvironment::ModuleEnvironment(Environment* outer_environment) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.5.1 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-module-environment-records-getbindingvalue-n-s
 | // 9.1.1.5.1 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-module-environment-records-getbindingvalue-n-s
 | ||||||
| ThrowCompletionOr<Value> ModuleEnvironment::get_binding_value(VM& vm, FlyString const& name, bool strict) | ThrowCompletionOr<Value> ModuleEnvironment::get_binding_value(VM& vm, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     // 1. Assert: S is true.
 |     // 1. Assert: S is true.
 | ||||||
|     VERIFY(strict); |     VERIFY(strict); | ||||||
|  | @ -49,7 +49,7 @@ ThrowCompletionOr<Value> ModuleEnvironment::get_binding_value(VM& vm, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.5.2 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-module-environment-records-deletebinding-n
 | // 9.1.1.5.2 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-module-environment-records-deletebinding-n
 | ||||||
| ThrowCompletionOr<bool> ModuleEnvironment::delete_binding(VM&, FlyString const&) | ThrowCompletionOr<bool> ModuleEnvironment::delete_binding(VM&, DeprecatedFlyString const&) | ||||||
| { | { | ||||||
|     // The DeleteBinding concrete method of a module Environment Record is never used within this specification.
 |     // The DeleteBinding concrete method of a module Environment Record is never used within this specification.
 | ||||||
|     VERIFY_NOT_REACHED(); |     VERIFY_NOT_REACHED(); | ||||||
|  | @ -63,7 +63,7 @@ ThrowCompletionOr<Value> ModuleEnvironment::get_this_binding(VM&) const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.5.5 CreateImportBinding ( N, M, N2 ), https://tc39.es/ecma262/#sec-createimportbinding
 | // 9.1.1.5.5 CreateImportBinding ( N, M, N2 ), https://tc39.es/ecma262/#sec-createimportbinding
 | ||||||
| ThrowCompletionOr<void> ModuleEnvironment::create_import_binding(FlyString name, Module* module, FlyString binding_name) | ThrowCompletionOr<void> ModuleEnvironment::create_import_binding(DeprecatedFlyString name, Module* module, DeprecatedFlyString binding_name) | ||||||
| { | { | ||||||
|     // 1. Assert: envRec does not already have a binding for N.
 |     // 1. Assert: envRec does not already have a binding for N.
 | ||||||
|     VERIFY(!get_indirect_binding(name)); |     VERIFY(!get_indirect_binding(name)); | ||||||
|  | @ -80,7 +80,7 @@ ThrowCompletionOr<void> ModuleEnvironment::create_import_binding(FlyString name, | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ModuleEnvironment::IndirectBinding const* ModuleEnvironment::get_indirect_binding(FlyString const& name) const | ModuleEnvironment::IndirectBinding const* ModuleEnvironment::get_indirect_binding(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     auto binding_or_end = m_indirect_bindings.find_if([&](IndirectBinding const& binding) { |     auto binding_or_end = m_indirect_bindings.find_if([&](IndirectBinding const& binding) { | ||||||
|         return binding.name == name; |         return binding.name == name; | ||||||
|  | @ -91,7 +91,7 @@ ModuleEnvironment::IndirectBinding const* ModuleEnvironment::get_indirect_bindin | ||||||
|     return &(*binding_or_end); |     return &(*binding_or_end); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Optional<ModuleEnvironment::BindingAndIndex> ModuleEnvironment::find_binding_and_index(FlyString const& name) const | Optional<ModuleEnvironment::BindingAndIndex> ModuleEnvironment::find_binding_and_index(DeprecatedFlyString const& name) const | ||||||
| { | { | ||||||
|     auto* indirect_binding = get_indirect_binding(name); |     auto* indirect_binding = get_indirect_binding(name); | ||||||
|     if (indirect_binding != nullptr) { |     if (indirect_binding != nullptr) { | ||||||
|  |  | ||||||
|  | @ -21,11 +21,11 @@ public: | ||||||
|     //       in Table 18 and share the same specifications for all of those methods except for
 |     //       in Table 18 and share the same specifications for all of those methods except for
 | ||||||
|     //       GetBindingValue, DeleteBinding, HasThisBinding and GetThisBinding.
 |     //       GetBindingValue, DeleteBinding, HasThisBinding and GetThisBinding.
 | ||||||
|     //       In addition, module Environment Records support the methods listed in Table 24.
 |     //       In addition, module Environment Records support the methods listed in Table 24.
 | ||||||
|     virtual ThrowCompletionOr<Value> get_binding_value(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<Value> get_binding_value(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<bool> delete_binding(VM&, FlyString const& name) override; |     virtual ThrowCompletionOr<bool> delete_binding(VM&, DeprecatedFlyString const& name) override; | ||||||
|     virtual bool has_this_binding() const final { return true; } |     virtual bool has_this_binding() const final { return true; } | ||||||
|     virtual ThrowCompletionOr<Value> get_this_binding(VM&) const final; |     virtual ThrowCompletionOr<Value> get_this_binding(VM&) const final; | ||||||
|     ThrowCompletionOr<void> create_import_binding(FlyString name, Module* module, FlyString binding_name); |     ThrowCompletionOr<void> create_import_binding(DeprecatedFlyString name, Module* module, DeprecatedFlyString binding_name); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit ModuleEnvironment(Environment* outer_environment); |     explicit ModuleEnvironment(Environment* outer_environment); | ||||||
|  | @ -33,13 +33,13 @@ private: | ||||||
|     virtual void visit_edges(Visitor&) override; |     virtual void visit_edges(Visitor&) override; | ||||||
| 
 | 
 | ||||||
|     struct IndirectBinding { |     struct IndirectBinding { | ||||||
|         FlyString name; |         DeprecatedFlyString name; | ||||||
|         Module* module; |         Module* module; | ||||||
|         FlyString binding_name; |         DeprecatedFlyString binding_name; | ||||||
|     }; |     }; | ||||||
|     IndirectBinding const* get_indirect_binding(FlyString const& name) const; |     IndirectBinding const* get_indirect_binding(DeprecatedFlyString const& name) const; | ||||||
| 
 | 
 | ||||||
|     virtual Optional<BindingAndIndex> find_binding_and_index(FlyString const& name) const override; |     virtual Optional<BindingAndIndex> find_binding_and_index(DeprecatedFlyString const& name) const override; | ||||||
| 
 | 
 | ||||||
|     // FIXME: Since we always access this via the name this could be a map.
 |     // FIXME: Since we always access this via the name this could be a map.
 | ||||||
|     Vector<IndirectBinding> m_indirect_bindings; |     Vector<IndirectBinding> m_indirect_bindings; | ||||||
|  |  | ||||||
|  | @ -10,14 +10,14 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| ModuleNamespaceObject::ModuleNamespaceObject(Realm& realm, Module* module, Vector<FlyString> exports) | ModuleNamespaceObject::ModuleNamespaceObject(Realm& realm, Module* module, Vector<DeprecatedFlyString> exports) | ||||||
|     : Object(ConstructWithPrototypeTag::Tag, *realm.intrinsics().object_prototype()) |     : Object(ConstructWithPrototypeTag::Tag, *realm.intrinsics().object_prototype()) | ||||||
|     , m_module(module) |     , m_module(module) | ||||||
|     , m_exports(move(exports)) |     , m_exports(move(exports)) | ||||||
| { | { | ||||||
|     // Note: We just perform step 6 of 10.4.6.12 ModuleNamespaceCreate ( module, exports ), https://tc39.es/ecma262/#sec-modulenamespacecreate
 |     // Note: We just perform step 6 of 10.4.6.12 ModuleNamespaceCreate ( module, exports ), https://tc39.es/ecma262/#sec-modulenamespacecreate
 | ||||||
|     // 6. Let sortedExports be a List whose elements are the elements of exports ordered as if an Array of the same values had been sorted using %Array.prototype.sort% using undefined as comparefn.
 |     // 6. Let sortedExports be a List whose elements are the elements of exports ordered as if an Array of the same values had been sorted using %Array.prototype.sort% using undefined as comparefn.
 | ||||||
|     quick_sort(m_exports, [&](FlyString const& lhs, FlyString const& rhs) { |     quick_sort(m_exports, [&](DeprecatedFlyString const& lhs, DeprecatedFlyString const& rhs) { | ||||||
|         return lhs.view() < rhs.view(); |         return lhs.view() < rhs.view(); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -32,11 +32,11 @@ public: | ||||||
|     virtual void initialize(Realm&) override; |     virtual void initialize(Realm&) override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     ModuleNamespaceObject(Realm&, Module* module, Vector<FlyString> exports); |     ModuleNamespaceObject(Realm&, Module* module, Vector<DeprecatedFlyString> exports); | ||||||
| 
 | 
 | ||||||
|     // FIXME: UHHH how do we want to store this to avoid cycles but be safe??
 |     // FIXME: UHHH how do we want to store this to avoid cycles but be safe??
 | ||||||
|     Module* m_module;            // [[Module]]
 |     Module* m_module;                      // [[Module]]
 | ||||||
|     Vector<FlyString> m_exports; // [[Exports]]
 |     Vector<DeprecatedFlyString> m_exports; // [[Exports]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
|  | @ -20,20 +20,20 @@ struct ModuleRequest { | ||||||
| 
 | 
 | ||||||
|     ModuleRequest() = default; |     ModuleRequest() = default; | ||||||
| 
 | 
 | ||||||
|     explicit ModuleRequest(FlyString specifier) |     explicit ModuleRequest(DeprecatedFlyString specifier) | ||||||
|         : module_specifier(move(specifier)) |         : module_specifier(move(specifier)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     ModuleRequest(FlyString module_specifier, Vector<Assertion> assertions); |     ModuleRequest(DeprecatedFlyString module_specifier, Vector<Assertion> assertions); | ||||||
| 
 | 
 | ||||||
|     void add_assertion(DeprecatedString key, DeprecatedString value) |     void add_assertion(DeprecatedString key, DeprecatedString value) | ||||||
|     { |     { | ||||||
|         assertions.empend(move(key), move(value)); |         assertions.empend(move(key), move(value)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString module_specifier;   // [[Specifier]]
 |     DeprecatedFlyString module_specifier; // [[Specifier]]
 | ||||||
|     Vector<Assertion> assertions; // [[Assertions]]
 |     Vector<Assertion> assertions;         // [[Assertions]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ NonnullGCPtr<NativeFunction> NativeFunction::create(Realm& allocating_realm, Saf | ||||||
|     return function; |     return function; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NonnullGCPtr<NativeFunction> NativeFunction::create(Realm& realm, FlyString const& name, SafeFunction<ThrowCompletionOr<Value>(VM&)> function) | NonnullGCPtr<NativeFunction> NativeFunction::create(Realm& realm, DeprecatedFlyString const& name, SafeFunction<ThrowCompletionOr<Value>(VM&)> function) | ||||||
| { | { | ||||||
|     return realm.heap().allocate<NativeFunction>(realm, name, move(function), *realm.intrinsics().function_prototype()); |     return realm.heap().allocate<NativeFunction>(realm, name, move(function), *realm.intrinsics().function_prototype()); | ||||||
| } | } | ||||||
|  | @ -73,7 +73,7 @@ NativeFunction::NativeFunction(Object& prototype) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NativeFunction::NativeFunction(FlyString name, SafeFunction<ThrowCompletionOr<Value>(VM&)> native_function, Object& prototype) | NativeFunction::NativeFunction(DeprecatedFlyString name, SafeFunction<ThrowCompletionOr<Value>(VM&)> native_function, Object& prototype) | ||||||
|     : FunctionObject(prototype) |     : FunctionObject(prototype) | ||||||
|     , m_name(move(name)) |     , m_name(move(name)) | ||||||
|     , m_native_function(move(native_function)) |     , m_native_function(move(native_function)) | ||||||
|  | @ -81,7 +81,7 @@ NativeFunction::NativeFunction(FlyString name, SafeFunction<ThrowCompletionOr<Va | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NativeFunction::NativeFunction(FlyString name, Object& prototype) | NativeFunction::NativeFunction(DeprecatedFlyString name, Object& prototype) | ||||||
|     : FunctionObject(prototype) |     : FunctionObject(prototype) | ||||||
|     , m_name(move(name)) |     , m_name(move(name)) | ||||||
|     , m_realm(&prototype.shape().realm()) |     , m_realm(&prototype.shape().realm()) | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ class NativeFunction : public FunctionObject { | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     static NonnullGCPtr<NativeFunction> create(Realm&, SafeFunction<ThrowCompletionOr<Value>(VM&)> behaviour, i32 length, PropertyKey const& name, Optional<Realm*> = {}, Optional<Object*> prototype = {}, Optional<StringView> const& prefix = {}); |     static NonnullGCPtr<NativeFunction> create(Realm&, SafeFunction<ThrowCompletionOr<Value>(VM&)> behaviour, i32 length, PropertyKey const& name, Optional<Realm*> = {}, Optional<Object*> prototype = {}, Optional<StringView> const& prefix = {}); | ||||||
|     static NonnullGCPtr<NativeFunction> create(Realm&, FlyString const& name, SafeFunction<ThrowCompletionOr<Value>(VM&)>); |     static NonnullGCPtr<NativeFunction> create(Realm&, DeprecatedFlyString const& name, SafeFunction<ThrowCompletionOr<Value>(VM&)>); | ||||||
| 
 | 
 | ||||||
|     virtual void initialize(Realm&) override { } |     virtual void initialize(Realm&) override { } | ||||||
|     virtual ~NativeFunction() override = default; |     virtual ~NativeFunction() override = default; | ||||||
|  | @ -34,25 +34,25 @@ public: | ||||||
|     virtual ThrowCompletionOr<Value> call(); |     virtual ThrowCompletionOr<Value> call(); | ||||||
|     virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target); |     virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target); | ||||||
| 
 | 
 | ||||||
|     virtual FlyString const& name() const override { return m_name; }; |     virtual DeprecatedFlyString const& name() const override { return m_name; }; | ||||||
|     virtual bool is_strict_mode() const override; |     virtual bool is_strict_mode() const override; | ||||||
|     virtual bool has_constructor() const override { return false; } |     virtual bool has_constructor() const override { return false; } | ||||||
|     virtual Realm* realm() const override { return m_realm; } |     virtual Realm* realm() const override { return m_realm; } | ||||||
| 
 | 
 | ||||||
|     Optional<FlyString> const& initial_name() const { return m_initial_name; } |     Optional<DeprecatedFlyString> const& initial_name() const { return m_initial_name; } | ||||||
|     void set_initial_name(Badge<FunctionObject>, FlyString initial_name) { m_initial_name = move(initial_name); } |     void set_initial_name(Badge<FunctionObject>, DeprecatedFlyString initial_name) { m_initial_name = move(initial_name); } | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     NativeFunction(FlyString name, Object& prototype); |     NativeFunction(DeprecatedFlyString name, Object& prototype); | ||||||
|     NativeFunction(SafeFunction<ThrowCompletionOr<Value>(VM&)>, Object* prototype, Realm& realm); |     NativeFunction(SafeFunction<ThrowCompletionOr<Value>(VM&)>, Object* prototype, Realm& realm); | ||||||
|     NativeFunction(FlyString name, SafeFunction<ThrowCompletionOr<Value>(VM&)>, Object& prototype); |     NativeFunction(DeprecatedFlyString name, SafeFunction<ThrowCompletionOr<Value>(VM&)>, Object& prototype); | ||||||
|     explicit NativeFunction(Object& prototype); |     explicit NativeFunction(Object& prototype); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool is_native_function() const final { return true; } |     virtual bool is_native_function() const final { return true; } | ||||||
| 
 | 
 | ||||||
|     FlyString m_name; |     DeprecatedFlyString m_name; | ||||||
|     Optional<FlyString> m_initial_name; // [[InitialName]]
 |     Optional<DeprecatedFlyString> m_initial_name; // [[InitialName]]
 | ||||||
|     SafeFunction<ThrowCompletionOr<Value>(VM&)> m_native_function; |     SafeFunction<ThrowCompletionOr<Value>(VM&)> m_native_function; | ||||||
|     Realm* m_realm { nullptr }; |     Realm* m_realm { nullptr }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| static HashMap<Object const*, HashMap<FlyString, Object::IntrinsicAccessor>> s_intrinsics; | static HashMap<Object const*, HashMap<DeprecatedFlyString, Object::IntrinsicAccessor>> s_intrinsics; | ||||||
| 
 | 
 | ||||||
| // 10.1.12 OrdinaryObjectCreate ( proto [ , additionalInternalSlotsList ] ), https://tc39.es/ecma262/#sec-ordinaryobjectcreate
 | // 10.1.12 OrdinaryObjectCreate ( proto [ , additionalInternalSlotsList ] ), https://tc39.es/ecma262/#sec-ordinaryobjectcreate
 | ||||||
| NonnullGCPtr<Object> Object::create(Realm& realm, Object* prototype) | NonnullGCPtr<Object> Object::create(Realm& realm, Object* prototype) | ||||||
|  | @ -1259,7 +1259,7 @@ Optional<Completion> Object::enumerate_object_properties(Function<Optional<Compl | ||||||
|     //    * Enumerating the properties of the target object includes enumerating properties of its prototype, and the prototype of the prototype, and so on, recursively.
 |     //    * Enumerating the properties of the target object includes enumerating properties of its prototype, and the prototype of the prototype, and so on, recursively.
 | ||||||
|     //    * A property of a prototype is not processed if it has the same name as a property that has already been processed.
 |     //    * A property of a prototype is not processed if it has the same name as a property that has already been processed.
 | ||||||
| 
 | 
 | ||||||
|     HashTable<FlyString> visited; |     HashTable<DeprecatedFlyString> visited; | ||||||
| 
 | 
 | ||||||
|     auto const* target = this; |     auto const* target = this; | ||||||
|     while (target) { |     while (target) { | ||||||
|  | @ -1267,7 +1267,7 @@ Optional<Completion> Object::enumerate_object_properties(Function<Optional<Compl | ||||||
|         for (auto& key : own_keys) { |         for (auto& key : own_keys) { | ||||||
|             if (!key.is_string()) |             if (!key.is_string()) | ||||||
|                 continue; |                 continue; | ||||||
|             FlyString property_key = TRY(key.as_string().deprecated_string()); |             DeprecatedFlyString property_key = TRY(key.as_string().deprecated_string()); | ||||||
|             if (visited.contains(property_key)) |             if (visited.contains(property_key)) | ||||||
|                 continue; |                 continue; | ||||||
|             auto descriptor = TRY(target->internal_get_own_property(property_key)); |             auto descriptor = TRY(target->internal_get_own_property(property_key)); | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ void ObjectEnvironment::visit_edges(Cell::Visitor& visitor) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-object-environment-records-hasbinding-n
 | // 9.1.1.2.1 HasBinding ( N ), https://tc39.es/ecma262/#sec-object-environment-records-hasbinding-n
 | ||||||
| ThrowCompletionOr<bool> ObjectEnvironment::has_binding(FlyString const& name, Optional<size_t>*) const | ThrowCompletionOr<bool> ObjectEnvironment::has_binding(DeprecatedFlyString const& name, Optional<size_t>*) const | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     auto& vm = this->vm(); | ||||||
| 
 | 
 | ||||||
|  | @ -59,7 +59,7 @@ ThrowCompletionOr<bool> ObjectEnvironment::has_binding(FlyString const& name, Op | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-object-environment-records-createmutablebinding-n-d
 | // 9.1.1.2.2 CreateMutableBinding ( N, D ), https://tc39.es/ecma262/#sec-object-environment-records-createmutablebinding-n-d
 | ||||||
| ThrowCompletionOr<void> ObjectEnvironment::create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) | ThrowCompletionOr<void> ObjectEnvironment::create_mutable_binding(VM&, DeprecatedFlyString const& name, bool can_be_deleted) | ||||||
| { | { | ||||||
|     // 1. Let bindingObject be envRec.[[BindingObject]].
 |     // 1. Let bindingObject be envRec.[[BindingObject]].
 | ||||||
|     // 2. Perform ? DefinePropertyOrThrow(bindingObject, N, PropertyDescriptor { [[Value]]: undefined, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: D }).
 |     // 2. Perform ? DefinePropertyOrThrow(bindingObject, N, PropertyDescriptor { [[Value]]: undefined, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: D }).
 | ||||||
|  | @ -70,14 +70,14 @@ ThrowCompletionOr<void> ObjectEnvironment::create_mutable_binding(VM&, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-object-environment-records-createimmutablebinding-n-s
 | // 9.1.1.2.3 CreateImmutableBinding ( N, S ), https://tc39.es/ecma262/#sec-object-environment-records-createimmutablebinding-n-s
 | ||||||
| ThrowCompletionOr<void> ObjectEnvironment::create_immutable_binding(VM&, FlyString const&, bool) | ThrowCompletionOr<void> ObjectEnvironment::create_immutable_binding(VM&, DeprecatedFlyString const&, bool) | ||||||
| { | { | ||||||
|     // "The CreateImmutableBinding concrete method of an object Environment Record is never used within this specification."
 |     // "The CreateImmutableBinding concrete method of an object Environment Record is never used within this specification."
 | ||||||
|     VERIFY_NOT_REACHED(); |     VERIFY_NOT_REACHED(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-object-environment-records-initializebinding-n-v
 | // 9.1.1.2.4 InitializeBinding ( N, V ), https://tc39.es/ecma262/#sec-object-environment-records-initializebinding-n-v
 | ||||||
| ThrowCompletionOr<void> ObjectEnvironment::initialize_binding(VM& vm, FlyString const& name, Value value) | ThrowCompletionOr<void> ObjectEnvironment::initialize_binding(VM& vm, DeprecatedFlyString const& name, Value value) | ||||||
| { | { | ||||||
|     // 1. Perform ? envRec.SetMutableBinding(N, V, false).
 |     // 1. Perform ? envRec.SetMutableBinding(N, V, false).
 | ||||||
|     TRY(set_mutable_binding(vm, name, value, false)); |     TRY(set_mutable_binding(vm, name, value, false)); | ||||||
|  | @ -87,7 +87,7 @@ ThrowCompletionOr<void> ObjectEnvironment::initialize_binding(VM& vm, FlyString | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-object-environment-records-setmutablebinding-n-v-s
 | // 9.1.1.2.5 SetMutableBinding ( N, V, S ), https://tc39.es/ecma262/#sec-object-environment-records-setmutablebinding-n-v-s
 | ||||||
| ThrowCompletionOr<void> ObjectEnvironment::set_mutable_binding(VM&, FlyString const& name, Value value, bool strict) | ThrowCompletionOr<void> ObjectEnvironment::set_mutable_binding(VM&, DeprecatedFlyString const& name, Value value, bool strict) | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     auto& vm = this->vm(); | ||||||
| 
 | 
 | ||||||
|  | @ -129,7 +129,7 @@ ThrowCompletionOr<void> ObjectEnvironment::set_mutable_binding(VM&, FlyString co | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-object-environment-records-getbindingvalue-n-s
 | // 9.1.1.2.6 GetBindingValue ( N, S ), https://tc39.es/ecma262/#sec-object-environment-records-getbindingvalue-n-s
 | ||||||
| ThrowCompletionOr<Value> ObjectEnvironment::get_binding_value(VM&, FlyString const& name, bool strict) | ThrowCompletionOr<Value> ObjectEnvironment::get_binding_value(VM&, DeprecatedFlyString const& name, bool strict) | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     auto& vm = this->vm(); | ||||||
| 
 | 
 | ||||||
|  | @ -158,7 +158,7 @@ ThrowCompletionOr<Value> ObjectEnvironment::get_binding_value(VM&, FlyString con | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.1.2.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-object-environment-records-deletebinding-n
 | // 9.1.1.2.7 DeleteBinding ( N ), https://tc39.es/ecma262/#sec-object-environment-records-deletebinding-n
 | ||||||
| ThrowCompletionOr<bool> ObjectEnvironment::delete_binding(VM&, FlyString const& name) | ThrowCompletionOr<bool> ObjectEnvironment::delete_binding(VM&, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     // 1. Let bindingObject be envRec.[[BindingObject]].
 |     // 1. Let bindingObject be envRec.[[BindingObject]].
 | ||||||
|     // 2. Return ? bindingObject.[[Delete]](N).
 |     // 2. Return ? bindingObject.[[Delete]](N).
 | ||||||
|  |  | ||||||
|  | @ -19,13 +19,13 @@ public: | ||||||
|         Yes, |         Yes, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override; |     virtual ThrowCompletionOr<bool> has_binding(DeprecatedFlyString const& name, Optional<size_t>* = nullptr) const override; | ||||||
|     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) override; |     virtual ThrowCompletionOr<void> create_mutable_binding(VM&, DeprecatedFlyString const& name, bool can_be_deleted) override; | ||||||
|     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<void> create_immutable_binding(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<void> initialize_binding(VM&, FlyString const& name, Value) override; |     virtual ThrowCompletionOr<void> initialize_binding(VM&, DeprecatedFlyString const& name, Value) override; | ||||||
|     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, FlyString const& name, Value, bool strict) override; |     virtual ThrowCompletionOr<void> set_mutable_binding(VM&, DeprecatedFlyString const& name, Value, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<Value> get_binding_value(VM&, FlyString const& name, bool strict) override; |     virtual ThrowCompletionOr<Value> get_binding_value(VM&, DeprecatedFlyString const& name, bool strict) override; | ||||||
|     virtual ThrowCompletionOr<bool> delete_binding(VM&, FlyString const& name) override; |     virtual ThrowCompletionOr<bool> delete_binding(VM&, DeprecatedFlyString const& name) override; | ||||||
| 
 | 
 | ||||||
|     // 9.1.1.2.10 WithBaseObject ( ), https://tc39.es/ecma262/#sec-object-environment-records-withbaseobject
 |     // 9.1.1.2.10 WithBaseObject ( ), https://tc39.es/ecma262/#sec-object-environment-records-withbaseobject
 | ||||||
|     virtual Object* with_base_object() const override |     virtual Object* with_base_object() const override | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ PrivateEnvironment::PrivateEnvironment(PrivateEnvironment* parent) | ||||||
| // Note: we start at one such that 0 can be invalid / default initialized.
 | // Note: we start at one such that 0 can be invalid / default initialized.
 | ||||||
| u64 PrivateEnvironment::s_next_id = 1u; | u64 PrivateEnvironment::s_next_id = 1u; | ||||||
| 
 | 
 | ||||||
| PrivateName PrivateEnvironment::resolve_private_identifier(FlyString const& identifier) const | PrivateName PrivateEnvironment::resolve_private_identifier(DeprecatedFlyString const& identifier) const | ||||||
| { | { | ||||||
|     auto name_or_end = find_private_name(identifier); |     auto name_or_end = find_private_name(identifier); | ||||||
| 
 | 
 | ||||||
|  | @ -32,7 +32,7 @@ PrivateName PrivateEnvironment::resolve_private_identifier(FlyString const& iden | ||||||
|     return m_outer_environment->resolve_private_identifier(identifier); |     return m_outer_environment->resolve_private_identifier(identifier); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PrivateEnvironment::add_private_name(Badge<ClassExpression>, FlyString description) | void PrivateEnvironment::add_private_name(Badge<ClassExpression>, DeprecatedFlyString description) | ||||||
| { | { | ||||||
|     if (!find_private_name(description).is_end()) |     if (!find_private_name(description).is_end()) | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/StringView.h> | #include <AK/StringView.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| #include <LibJS/Heap/Cell.h> | #include <LibJS/Heap/Cell.h> | ||||||
|  | @ -15,14 +15,14 @@ namespace JS { | ||||||
| 
 | 
 | ||||||
| struct PrivateName { | struct PrivateName { | ||||||
|     PrivateName() = default; |     PrivateName() = default; | ||||||
|     PrivateName(u64 unique_id, FlyString description) |     PrivateName(u64 unique_id, DeprecatedFlyString description) | ||||||
|         : unique_id(unique_id) |         : unique_id(unique_id) | ||||||
|         , description(move(description)) |         , description(move(description)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     u64 unique_id { 0 }; |     u64 unique_id { 0 }; | ||||||
|     FlyString description; |     DeprecatedFlyString description; | ||||||
| 
 | 
 | ||||||
|     bool operator==(PrivateName const& rhs) const; |     bool operator==(PrivateName const& rhs) const; | ||||||
| }; | }; | ||||||
|  | @ -31,16 +31,16 @@ class PrivateEnvironment : public Cell { | ||||||
|     JS_CELL(PrivateEnvironment, Cell); |     JS_CELL(PrivateEnvironment, Cell); | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     PrivateName resolve_private_identifier(FlyString const& identifier) const; |     PrivateName resolve_private_identifier(DeprecatedFlyString const& identifier) const; | ||||||
| 
 | 
 | ||||||
|     void add_private_name(Badge<ClassExpression>, FlyString description); |     void add_private_name(Badge<ClassExpression>, DeprecatedFlyString description); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit PrivateEnvironment(PrivateEnvironment* parent); |     explicit PrivateEnvironment(PrivateEnvironment* parent); | ||||||
| 
 | 
 | ||||||
|     virtual void visit_edges(Visitor&) override; |     virtual void visit_edges(Visitor&) override; | ||||||
| 
 | 
 | ||||||
|     auto find_private_name(FlyString const& description) const |     auto find_private_name(DeprecatedFlyString const& description) const | ||||||
|     { |     { | ||||||
|         return m_private_names.find_if([&](PrivateName const& private_name) { |         return m_private_names.find_if([&](PrivateName const& private_name) { | ||||||
|             return private_name.description == description; |             return private_name.description == description; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <LibJS/Heap/Handle.h> | #include <LibJS/Heap/Handle.h> | ||||||
| #include <LibJS/Runtime/Completion.h> | #include <LibJS/Runtime/Completion.h> | ||||||
| #include <LibJS/Runtime/StringOrSymbol.h> | #include <LibJS/Runtime/StringOrSymbol.h> | ||||||
|  | @ -61,18 +61,18 @@ public: | ||||||
| 
 | 
 | ||||||
|     PropertyKey(char const* chars) |     PropertyKey(char const* chars) | ||||||
|         : m_type(Type::String) |         : m_type(Type::String) | ||||||
|         , m_string(FlyString(chars)) |         , m_string(DeprecatedFlyString(chars)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     PropertyKey(DeprecatedString const& string) |     PropertyKey(DeprecatedString const& string) | ||||||
|         : m_type(Type::String) |         : m_type(Type::String) | ||||||
|         , m_string(FlyString(string)) |         , m_string(DeprecatedFlyString(string)) | ||||||
|     { |     { | ||||||
|         VERIFY(!m_string.is_null()); |         VERIFY(!m_string.is_null()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     PropertyKey(FlyString string, StringMayBeNumber string_may_be_number = StringMayBeNumber::Yes) |     PropertyKey(DeprecatedFlyString string, StringMayBeNumber string_may_be_number = StringMayBeNumber::Yes) | ||||||
|         : m_string_may_be_number(string_may_be_number == StringMayBeNumber::Yes) |         : m_string_may_be_number(string_may_be_number == StringMayBeNumber::Yes) | ||||||
|         , m_type(Type::String) |         , m_type(Type::String) | ||||||
|         , m_string(move(string)) |         , m_string(move(string)) | ||||||
|  | @ -152,7 +152,7 @@ public: | ||||||
|         return m_number; |         return m_number; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString const& as_string() const |     DeprecatedFlyString const& as_string() const | ||||||
|     { |     { | ||||||
|         VERIFY(is_string()); |         VERIFY(is_string()); | ||||||
|         return m_string; |         return m_string; | ||||||
|  | @ -186,7 +186,7 @@ private: | ||||||
|     bool m_string_may_be_number { true }; |     bool m_string_may_be_number { true }; | ||||||
|     Type m_type { Type::Invalid }; |     Type m_type { Type::Invalid }; | ||||||
|     u32 m_number { 0 }; |     u32 m_number { 0 }; | ||||||
|     FlyString m_string; |     DeprecatedFlyString m_string; | ||||||
|     Handle<Symbol> m_symbol; |     Handle<Symbol> m_symbol; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -832,7 +832,7 @@ void ProxyObject::visit_edges(Cell::Visitor& visitor) | ||||||
|     visitor.visit(&m_handler); |     visitor.visit(&m_handler); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| FlyString const& ProxyObject::name() const | DeprecatedFlyString const& ProxyObject::name() const | ||||||
| { | { | ||||||
|     VERIFY(is_function()); |     VERIFY(is_function()); | ||||||
|     return static_cast<FunctionObject&>(m_target).name(); |     return static_cast<FunctionObject&>(m_target).name(); | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual ~ProxyObject() override = default; |     virtual ~ProxyObject() override = default; | ||||||
| 
 | 
 | ||||||
|     virtual FlyString const& name() const override; |     virtual DeprecatedFlyString const& name() const override; | ||||||
|     virtual bool has_constructor() const override; |     virtual bool has_constructor() const override; | ||||||
| 
 | 
 | ||||||
|     Object const& target() const { return m_target; } |     Object const& target() const { return m_target; } | ||||||
|  |  | ||||||
|  | @ -239,7 +239,7 @@ ThrowCompletionOr<void> Reference::initialize_referenced_binding(VM& vm, Value v | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 6.2.4.9 MakePrivateReference ( baseValue, privateIdentifier ), https://tc39.es/ecma262/#sec-makeprivatereference
 | // 6.2.4.9 MakePrivateReference ( baseValue, privateIdentifier ), https://tc39.es/ecma262/#sec-makeprivatereference
 | ||||||
| Reference make_private_reference(VM& vm, Value base_value, FlyString const& private_identifier) | Reference make_private_reference(VM& vm, Value base_value, DeprecatedFlyString const& private_identifier) | ||||||
| { | { | ||||||
|     // 1. Let privEnv be the running execution context's PrivateEnvironment.
 |     // 1. Let privEnv be the running execution context's PrivateEnvironment.
 | ||||||
|     auto* private_environment = vm.running_execution_context().private_environment; |     auto* private_environment = vm.running_execution_context().private_environment; | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| Reference make_private_reference(VM&, Value base_value, FlyString const& private_identifier); | Reference make_private_reference(VM&, Value base_value, DeprecatedFlyString const& private_identifier); | ||||||
| 
 | 
 | ||||||
| class Reference { | class Reference { | ||||||
| public: | public: | ||||||
|  | @ -47,7 +47,7 @@ public: | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     Reference(Environment& base, FlyString referenced_name, bool strict = false, Optional<EnvironmentCoordinate> environment_coordinate = {}) |     Reference(Environment& base, DeprecatedFlyString referenced_name, bool strict = false, Optional<EnvironmentCoordinate> environment_coordinate = {}) | ||||||
|         : m_base_type(BaseType::Environment) |         : m_base_type(BaseType::Environment) | ||||||
|         , m_base_environment(&base) |         , m_base_environment(&base) | ||||||
|         , m_name(move(referenced_name)) |         , m_name(move(referenced_name)) | ||||||
|  |  | ||||||
|  | @ -95,7 +95,7 @@ static Value get_match_index_par(VM& vm, Utf16View const& string, Match const& m | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 22.2.5.2.8 MakeMatchIndicesIndexPairArray ( S, indices, groupNames, hasGroups ), https://tc39.es/ecma262/#sec-makematchindicesindexpairarray
 | // 22.2.5.2.8 MakeMatchIndicesIndexPairArray ( S, indices, groupNames, hasGroups ), https://tc39.es/ecma262/#sec-makematchindicesindexpairarray
 | ||||||
| static Value make_match_indices_index_pair_array(VM& vm, Utf16View const& string, Vector<Optional<Match>> const& indices, HashMap<FlyString, Match> const& group_names, bool has_groups) | static Value make_match_indices_index_pair_array(VM& vm, Utf16View const& string, Vector<Optional<Match>> const& indices, HashMap<DeprecatedFlyString, Match> const& group_names, bool has_groups) | ||||||
| { | { | ||||||
|     // Note: This implementation differs from the spec, but has the same behavior.
 |     // Note: This implementation differs from the spec, but has the same behavior.
 | ||||||
|     //
 |     //
 | ||||||
|  | @ -268,7 +268,7 @@ static ThrowCompletionOr<Value> regexp_builtin_exec(VM& vm, RegExpObject& regexp | ||||||
|     Vector<Utf16String> captured_values; |     Vector<Utf16String> captured_values; | ||||||
| 
 | 
 | ||||||
|     // 25. Let groupNames be a new empty List.
 |     // 25. Let groupNames be a new empty List.
 | ||||||
|     HashMap<FlyString, Match> group_names; |     HashMap<DeprecatedFlyString, Match> group_names; | ||||||
| 
 | 
 | ||||||
|     // 26. Add match as the last element of indices.
 |     // 26. Add match as the last element of indices.
 | ||||||
|     indices.append(move(match_indices)); |     indices.append(move(match_indices)); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <LibJS/Runtime/PrimitiveString.h> | #include <LibJS/Runtime/PrimitiveString.h> | ||||||
| #include <LibJS/Runtime/Symbol.h> | #include <LibJS/Runtime/Symbol.h> | ||||||
| #include <LibJS/Runtime/Value.h> | #include <LibJS/Runtime/Value.h> | ||||||
|  | @ -18,16 +18,16 @@ public: | ||||||
|     StringOrSymbol() = default; |     StringOrSymbol() = default; | ||||||
| 
 | 
 | ||||||
|     StringOrSymbol(char const* chars) |     StringOrSymbol(char const* chars) | ||||||
|         : StringOrSymbol(FlyString(chars)) |         : StringOrSymbol(DeprecatedFlyString(chars)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     StringOrSymbol(DeprecatedString const& string) |     StringOrSymbol(DeprecatedString const& string) | ||||||
|         : StringOrSymbol(FlyString(string)) |         : StringOrSymbol(DeprecatedFlyString(string)) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     StringOrSymbol(FlyString const& string) |     StringOrSymbol(DeprecatedFlyString const& string) | ||||||
|         : m_ptr(string.impl()) |         : m_ptr(string.impl()) | ||||||
|     { |     { | ||||||
|         VERIFY(!string.is_null()); |         VERIFY(!string.is_null()); | ||||||
|  | @ -62,10 +62,10 @@ public: | ||||||
|     ALWAYS_INLINE bool is_symbol() const { return is_valid() && (bits() & 1ul); } |     ALWAYS_INLINE bool is_symbol() const { return is_valid() && (bits() & 1ul); } | ||||||
|     ALWAYS_INLINE bool is_string() const { return is_valid() && !(bits() & 1ul); } |     ALWAYS_INLINE bool is_string() const { return is_valid() && !(bits() & 1ul); } | ||||||
| 
 | 
 | ||||||
|     ALWAYS_INLINE FlyString as_string() const |     ALWAYS_INLINE DeprecatedFlyString as_string() const | ||||||
|     { |     { | ||||||
|         VERIFY(is_string()); |         VERIFY(is_string()); | ||||||
|         return FlyString::from_fly_impl(as_string_impl()); |         return DeprecatedFlyString::from_fly_impl(as_string_impl()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     ALWAYS_INLINE Symbol const* as_symbol() const |     ALWAYS_INLINE Symbol const* as_symbol() const | ||||||
|  |  | ||||||
|  | @ -453,7 +453,7 @@ void TypedArrayBase::visit_edges(Visitor& visitor) | ||||||
|     {                                                                                                                            \ |     {                                                                                                                            \ | ||||||
|     }                                                                                                                            \ |     }                                                                                                                            \ | ||||||
|                                                                                                                                  \ |                                                                                                                                  \ | ||||||
|     FlyString const& ClassName::element_name() const                                                                             \ |     DeprecatedFlyString const& ClassName::element_name() const                                                                   \ | ||||||
|     {                                                                                                                            \ |     {                                                                                                                            \ | ||||||
|         return vm().names.ClassName.as_string();                                                                                 \ |         return vm().names.ClassName.as_string();                                                                                 \ | ||||||
|     }                                                                                                                            \ |     }                                                                                                                            \ | ||||||
|  |  | ||||||
|  | @ -47,7 +47,7 @@ public: | ||||||
|     void set_viewed_array_buffer(ArrayBuffer* array_buffer) { m_viewed_array_buffer = array_buffer; } |     void set_viewed_array_buffer(ArrayBuffer* array_buffer) { m_viewed_array_buffer = array_buffer; } | ||||||
| 
 | 
 | ||||||
|     virtual size_t element_size() const = 0; |     virtual size_t element_size() const = 0; | ||||||
|     virtual FlyString const& element_name() const = 0; |     virtual DeprecatedFlyString const& element_name() const = 0; | ||||||
| 
 | 
 | ||||||
|     // 25.1.2.6 IsUnclampedIntegerElementType ( type ), https://tc39.es/ecma262/#sec-isunclampedintegerelementtype
 |     // 25.1.2.6 IsUnclampedIntegerElementType ( type ), https://tc39.es/ecma262/#sec-isunclampedintegerelementtype
 | ||||||
|     virtual bool is_unclamped_integer_element_type() const = 0; |     virtual bool is_unclamped_integer_element_type() const = 0; | ||||||
|  | @ -470,7 +470,7 @@ ThrowCompletionOr<double> compare_typed_array_elements(VM&, Value x, Value y, Fu | ||||||
|         static ThrowCompletionOr<NonnullGCPtr<ClassName>> create(Realm&, u32 length, FunctionObject& new_target); \ |         static ThrowCompletionOr<NonnullGCPtr<ClassName>> create(Realm&, u32 length, FunctionObject& new_target); \ | ||||||
|         static ThrowCompletionOr<NonnullGCPtr<ClassName>> create(Realm&, u32 length);                             \ |         static ThrowCompletionOr<NonnullGCPtr<ClassName>> create(Realm&, u32 length);                             \ | ||||||
|         static NonnullGCPtr<ClassName> create(Realm&, u32 length, ArrayBuffer& buffer);                           \ |         static NonnullGCPtr<ClassName> create(Realm&, u32 length, ArrayBuffer& buffer);                           \ | ||||||
|         virtual FlyString const& element_name() const override;                                                   \ |         virtual DeprecatedFlyString const& element_name() const override;                                         \ | ||||||
|                                                                                                                   \ |                                                                                                                   \ | ||||||
|     protected:                                                                                                    \ |     protected:                                                                                                    \ | ||||||
|         ClassName(Object& prototype, u32 length, ArrayBuffer& array_buffer);                                      \ |         ClassName(Object& prototype, u32 length, ArrayBuffer& array_buffer);                                      \ | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| TypedArrayConstructor::TypedArrayConstructor(FlyString const& name, Object& prototype) | TypedArrayConstructor::TypedArrayConstructor(DeprecatedFlyString const& name, Object& prototype) | ||||||
|     : NativeFunction(name, prototype) |     : NativeFunction(name, prototype) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ public: | ||||||
|     virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target) override; |     virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target) override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     TypedArrayConstructor(FlyString const& name, Object& prototype); |     TypedArrayConstructor(DeprecatedFlyString const& name, Object& prototype); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     virtual bool has_constructor() const override { return true; } |     virtual bool has_constructor() const override { return true; } | ||||||
|  |  | ||||||
|  | @ -231,7 +231,7 @@ void VM::gather_roots(HashTable<Cell*>& roots) | ||||||
|         roots.set(finalization_registry); |         roots.set(finalization_registry); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<Value> VM::named_evaluation_if_anonymous_function(ASTNode const& expression, FlyString const& name) | ThrowCompletionOr<Value> VM::named_evaluation_if_anonymous_function(ASTNode const& expression, DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     // 8.3.3 Static Semantics: IsAnonymousFunctionDefinition ( expr ), https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition
 |     // 8.3.3 Static Semantics: IsAnonymousFunctionDefinition ( expr ), https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition
 | ||||||
|     // And 8.3.5 Runtime Semantics: NamedEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation
 |     // And 8.3.5 Runtime Semantics: NamedEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation
 | ||||||
|  | @ -260,7 +260,7 @@ ThrowCompletionOr<void> VM::destructuring_assignment_evaluation(NonnullRefPtr<Bi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 8.5.2 Runtime Semantics: BindingInitialization, https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization
 | // 8.5.2 Runtime Semantics: BindingInitialization, https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization
 | ||||||
| ThrowCompletionOr<void> VM::binding_initialization(FlyString const& target, Value value, Environment* environment) | ThrowCompletionOr<void> VM::binding_initialization(DeprecatedFlyString const& target, Value value, Environment* environment) | ||||||
| { | { | ||||||
|     // 1. Let name be StringValue of Identifier.
 |     // 1. Let name be StringValue of Identifier.
 | ||||||
|     // 2. Return ? InitializeBoundName(name, value, environment).
 |     // 2. Return ? InitializeBoundName(name, value, environment).
 | ||||||
|  | @ -541,7 +541,7 @@ ThrowCompletionOr<void> VM::iterator_binding_initialization(BindingPattern const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.1.2.1 GetIdentifierReference ( env, name, strict ), https://tc39.es/ecma262/#sec-getidentifierreference
 | // 9.1.2.1 GetIdentifierReference ( env, name, strict ), https://tc39.es/ecma262/#sec-getidentifierreference
 | ||||||
| ThrowCompletionOr<Reference> VM::get_identifier_reference(Environment* environment, FlyString name, bool strict, size_t hops) | ThrowCompletionOr<Reference> VM::get_identifier_reference(Environment* environment, DeprecatedFlyString name, bool strict, size_t hops) | ||||||
| { | { | ||||||
|     // 1. If env is the value null, then
 |     // 1. If env is the value null, then
 | ||||||
|     if (!environment) { |     if (!environment) { | ||||||
|  | @ -575,7 +575,7 @@ ThrowCompletionOr<Reference> VM::get_identifier_reference(Environment* environme | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 9.4.2 ResolveBinding ( name [ , env ] ), https://tc39.es/ecma262/#sec-resolvebinding
 | // 9.4.2 ResolveBinding ( name [ , env ] ), https://tc39.es/ecma262/#sec-resolvebinding
 | ||||||
| ThrowCompletionOr<Reference> VM::resolve_binding(FlyString const& name, Environment* environment) | ThrowCompletionOr<Reference> VM::resolve_binding(DeprecatedFlyString const& name, Environment* environment) | ||||||
| { | { | ||||||
|     // 1. If env is not present or if env is undefined, then
 |     // 1. If env is not present or if env is undefined, then
 | ||||||
|     if (!environment) { |     if (!environment) { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Function.h> | #include <AK/Function.h> | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <AK/RefCounted.h> | #include <AK/RefCounted.h> | ||||||
|  | @ -175,8 +175,8 @@ public: | ||||||
|     u32 execution_generation() const { return m_execution_generation; } |     u32 execution_generation() const { return m_execution_generation; } | ||||||
|     void finish_execution_generation() { ++m_execution_generation; } |     void finish_execution_generation() { ++m_execution_generation; } | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<Reference> resolve_binding(FlyString const&, Environment* = nullptr); |     ThrowCompletionOr<Reference> resolve_binding(DeprecatedFlyString const&, Environment* = nullptr); | ||||||
|     ThrowCompletionOr<Reference> get_identifier_reference(Environment*, FlyString, bool strict, size_t hops = 0); |     ThrowCompletionOr<Reference> get_identifier_reference(Environment*, DeprecatedFlyString, bool strict, size_t hops = 0); | ||||||
| 
 | 
 | ||||||
|     // 5.2.3.2 Throw an Exception, https://tc39.es/ecma262/#sec-throw-an-exception
 |     // 5.2.3.2 Throw an Exception, https://tc39.es/ecma262/#sec-throw-an-exception
 | ||||||
|     template<typename T, typename... Args> |     template<typename T, typename... Args> | ||||||
|  | @ -213,10 +213,10 @@ public: | ||||||
|     CustomData* custom_data() { return m_custom_data; } |     CustomData* custom_data() { return m_custom_data; } | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> destructuring_assignment_evaluation(NonnullRefPtr<BindingPattern> const& target, Value value); |     ThrowCompletionOr<void> destructuring_assignment_evaluation(NonnullRefPtr<BindingPattern> const& target, Value value); | ||||||
|     ThrowCompletionOr<void> binding_initialization(FlyString const& target, Value value, Environment* environment); |     ThrowCompletionOr<void> binding_initialization(DeprecatedFlyString const& target, Value value, Environment* environment); | ||||||
|     ThrowCompletionOr<void> binding_initialization(NonnullRefPtr<BindingPattern> const& target, Value value, Environment* environment); |     ThrowCompletionOr<void> binding_initialization(NonnullRefPtr<BindingPattern> const& target, Value value, Environment* environment); | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<Value> named_evaluation_if_anonymous_function(ASTNode const& expression, FlyString const& name); |     ThrowCompletionOr<Value> named_evaluation_if_anonymous_function(ASTNode const& expression, DeprecatedFlyString const& name); | ||||||
| 
 | 
 | ||||||
|     void save_execution_context_stack(); |     void save_execution_context_stack(); | ||||||
|     void restore_execution_context_stack(); |     void restore_execution_context_stack(); | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ public: | ||||||
|     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; |     virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override; | ||||||
| 
 | 
 | ||||||
|     // FIXME: Remove this (and stop inventing random internal slots that shouldn't exist, jeez)
 |     // FIXME: Remove this (and stop inventing random internal slots that shouldn't exist, jeez)
 | ||||||
|     virtual FlyString const& name() const override { return m_wrapped_target_function.name(); } |     virtual DeprecatedFlyString const& name() const override { return m_wrapped_target_function.name(); } | ||||||
| 
 | 
 | ||||||
|     virtual Realm* realm() const override { return &m_realm; } |     virtual Realm* realm() const override { return &m_realm; } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -260,7 +260,7 @@ Result<NonnullGCPtr<SourceTextModule>, Vector<ParserError>> SourceTextModule::pa | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 16.2.1.6.2 GetExportedNames ( [ exportStarSet ] ), https://tc39.es/ecma262/#sec-getexportednames
 | // 16.2.1.6.2 GetExportedNames ( [ exportStarSet ] ), https://tc39.es/ecma262/#sec-getexportednames
 | ||||||
| ThrowCompletionOr<Vector<FlyString>> SourceTextModule::get_exported_names(VM& vm, Vector<Module*> export_star_set) | ThrowCompletionOr<Vector<DeprecatedFlyString>> SourceTextModule::get_exported_names(VM& vm, Vector<Module*> export_star_set) | ||||||
| { | { | ||||||
|     dbgln_if(JS_MODULE_DEBUG, "[JS MODULE] get_export_names of {}", filename()); |     dbgln_if(JS_MODULE_DEBUG, "[JS MODULE] get_export_names of {}", filename()); | ||||||
|     // 1. If exportStarSet is not present, set exportStarSet to a new empty List.
 |     // 1. If exportStarSet is not present, set exportStarSet to a new empty List.
 | ||||||
|  | @ -272,14 +272,14 @@ ThrowCompletionOr<Vector<FlyString>> SourceTextModule::get_exported_names(VM& vm | ||||||
|         // FIXME: How do we check that?
 |         // FIXME: How do we check that?
 | ||||||
| 
 | 
 | ||||||
|         // b. Return a new empty List.
 |         // b. Return a new empty List.
 | ||||||
|         return Vector<FlyString> {}; |         return Vector<DeprecatedFlyString> {}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 3. Append module to exportStarSet.
 |     // 3. Append module to exportStarSet.
 | ||||||
|     export_star_set.append(this); |     export_star_set.append(this); | ||||||
| 
 | 
 | ||||||
|     // 4. Let exportedNames be a new empty List.
 |     // 4. Let exportedNames be a new empty List.
 | ||||||
|     Vector<FlyString> exported_names; |     Vector<DeprecatedFlyString> exported_names; | ||||||
| 
 | 
 | ||||||
|     // 5. For each ExportEntry Record e of module.[[LocalExportEntries]], do
 |     // 5. For each ExportEntry Record e of module.[[LocalExportEntries]], do
 | ||||||
|     for (auto& entry : m_local_export_entries) { |     for (auto& entry : m_local_export_entries) { | ||||||
|  | @ -432,7 +432,7 @@ ThrowCompletionOr<void> SourceTextModule::initialize_environment(VM& vm) | ||||||
|     // Note: We just loop through them in step 21.
 |     // Note: We just loop through them in step 21.
 | ||||||
| 
 | 
 | ||||||
|     // 20. Let declaredVarNames be a new empty List.
 |     // 20. Let declaredVarNames be a new empty List.
 | ||||||
|     Vector<FlyString> declared_var_names; |     Vector<DeprecatedFlyString> declared_var_names; | ||||||
| 
 | 
 | ||||||
|     // 21. For each element d of varDeclarations, do
 |     // 21. For each element d of varDeclarations, do
 | ||||||
|     // a. For each element dn of the BoundNames of d, do
 |     // a. For each element dn of the BoundNames of d, do
 | ||||||
|  | @ -459,7 +459,7 @@ ThrowCompletionOr<void> SourceTextModule::initialize_environment(VM& vm) | ||||||
|     // 24. For each element d of lexDeclarations, do
 |     // 24. For each element d of lexDeclarations, do
 | ||||||
|     m_ecmascript_code->for_each_lexically_scoped_declaration([&](Declaration const& declaration) { |     m_ecmascript_code->for_each_lexically_scoped_declaration([&](Declaration const& declaration) { | ||||||
|         // a. For each element dn of the BoundNames of d, do
 |         // a. For each element dn of the BoundNames of d, do
 | ||||||
|         declaration.for_each_bound_name([&](FlyString const& name) { |         declaration.for_each_bound_name([&](DeprecatedFlyString const& name) { | ||||||
|             // i. If IsConstantDeclaration of d is true, then
 |             // i. If IsConstantDeclaration of d is true, then
 | ||||||
|             if (declaration.is_constant_declaration()) { |             if (declaration.is_constant_declaration()) { | ||||||
|                 // 1. Perform ! env.CreateImmutableBinding(dn, true).
 |                 // 1. Perform ! env.CreateImmutableBinding(dn, true).
 | ||||||
|  | @ -479,7 +479,7 @@ ThrowCompletionOr<void> SourceTextModule::initialize_environment(VM& vm) | ||||||
|                 // 1. Let fo be InstantiateFunctionObject of d with arguments env and privateEnv.
 |                 // 1. Let fo be InstantiateFunctionObject of d with arguments env and privateEnv.
 | ||||||
|                 // NOTE: Special case if the function is a default export of an anonymous function
 |                 // NOTE: Special case if the function is a default export of an anonymous function
 | ||||||
|                 //       it has name "*default*" but internally should have name "default".
 |                 //       it has name "*default*" but internally should have name "default".
 | ||||||
|                 FlyString function_name = function_declaration.name(); |                 DeprecatedFlyString function_name = function_declaration.name(); | ||||||
|                 if (function_name == ExportStatement::local_name_for_default) |                 if (function_name == ExportStatement::local_name_for_default) | ||||||
|                     function_name = "default"sv; |                     function_name = "default"sv; | ||||||
|                 auto function = ECMAScriptFunctionObject::create(realm(), function_name, function_declaration.source_text(), function_declaration.body(), function_declaration.parameters(), function_declaration.function_length(), environment, private_environment, function_declaration.kind(), function_declaration.is_strict_mode(), function_declaration.might_need_arguments_object(), function_declaration.contains_direct_call_to_eval()); |                 auto function = ECMAScriptFunctionObject::create(realm(), function_name, function_declaration.source_text(), function_declaration.body(), function_declaration.parameters(), function_declaration.function_length(), environment, private_environment, function_declaration.kind(), function_declaration.is_strict_mode(), function_declaration.might_need_arguments_object(), function_declaration.contains_direct_call_to_eval()); | ||||||
|  | @ -518,7 +518,7 @@ ThrowCompletionOr<void> SourceTextModule::initialize_environment(VM& vm) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 16.2.1.6.3 ResolveExport ( exportName [ , resolveSet ] ), https://tc39.es/ecma262/#sec-resolveexport
 | // 16.2.1.6.3 ResolveExport ( exportName [ , resolveSet ] ), https://tc39.es/ecma262/#sec-resolveexport
 | ||||||
| ThrowCompletionOr<ResolvedBinding> SourceTextModule::resolve_export(VM& vm, FlyString const& export_name, Vector<ResolvedBinding> resolve_set) | ThrowCompletionOr<ResolvedBinding> SourceTextModule::resolve_export(VM& vm, DeprecatedFlyString const& export_name, Vector<ResolvedBinding> resolve_set) | ||||||
| { | { | ||||||
|     // 1. If resolveSet is not present, set resolveSet to a new empty List.
 |     // 1. If resolveSet is not present, set resolveSet to a new empty List.
 | ||||||
|     // Note: This is done by the default argument.
 |     // Note: This is done by the default argument.
 | ||||||
|  |  | ||||||
|  | @ -22,8 +22,8 @@ public: | ||||||
| 
 | 
 | ||||||
|     Program const& parse_node() const { return *m_ecmascript_code; } |     Program const& parse_node() const { return *m_ecmascript_code; } | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<Vector<FlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set) override; |     virtual ThrowCompletionOr<Vector<DeprecatedFlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set) override; | ||||||
|     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, FlyString const& export_name, Vector<ResolvedBinding> resolve_set = {}) override; |     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, DeprecatedFlyString const& export_name, Vector<ResolvedBinding> resolve_set = {}) override; | ||||||
| 
 | 
 | ||||||
|     Object* import_meta() { return m_import_meta; } |     Object* import_meta() { return m_import_meta; } | ||||||
|     void set_import_meta(Badge<MetaProperty>, Object* import_meta) { m_import_meta = import_meta; } |     void set_import_meta(Badge<MetaProperty>, Object* import_meta) { m_import_meta = import_meta; } | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| namespace JS { | namespace JS { | ||||||
| 
 | 
 | ||||||
| // 1.2.1 CreateSyntheticModule ( exportNames, evaluationSteps, realm, hostDefined ), https://tc39.es/proposal-json-modules/#sec-createsyntheticmodule
 | // 1.2.1 CreateSyntheticModule ( exportNames, evaluationSteps, realm, hostDefined ), https://tc39.es/proposal-json-modules/#sec-createsyntheticmodule
 | ||||||
| SyntheticModule::SyntheticModule(Vector<FlyString> export_names, SyntheticModule::EvaluationFunction evaluation_steps, Realm& realm, StringView filename) | SyntheticModule::SyntheticModule(Vector<DeprecatedFlyString> export_names, SyntheticModule::EvaluationFunction evaluation_steps, Realm& realm, StringView filename) | ||||||
|     : Module(realm, filename) |     : Module(realm, filename) | ||||||
|     , m_export_names(move(export_names)) |     , m_export_names(move(export_names)) | ||||||
|     , m_evaluation_steps(move(evaluation_steps)) |     , m_evaluation_steps(move(evaluation_steps)) | ||||||
|  | @ -23,14 +23,14 @@ SyntheticModule::SyntheticModule(Vector<FlyString> export_names, SyntheticModule | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 1.2.3.1 GetExportedNames( exportStarSet ), https://tc39.es/proposal-json-modules/#sec-smr-getexportednames
 | // 1.2.3.1 GetExportedNames( exportStarSet ), https://tc39.es/proposal-json-modules/#sec-smr-getexportednames
 | ||||||
| ThrowCompletionOr<Vector<FlyString>> SyntheticModule::get_exported_names(VM&, Vector<Module*>) | ThrowCompletionOr<Vector<DeprecatedFlyString>> SyntheticModule::get_exported_names(VM&, Vector<Module*>) | ||||||
| { | { | ||||||
|     // 1. Return module.[[ExportNames]].
 |     // 1. Return module.[[ExportNames]].
 | ||||||
|     return m_export_names; |     return m_export_names; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 1.2.3.2 ResolveExport( exportName, resolveSet ), https://tc39.es/proposal-json-modules/#sec-smr-resolveexport
 | // 1.2.3.2 ResolveExport( exportName, resolveSet ), https://tc39.es/proposal-json-modules/#sec-smr-resolveexport
 | ||||||
| ThrowCompletionOr<ResolvedBinding> SyntheticModule::resolve_export(VM&, FlyString const& export_name, Vector<ResolvedBinding>) | ThrowCompletionOr<ResolvedBinding> SyntheticModule::resolve_export(VM&, DeprecatedFlyString const& export_name, Vector<ResolvedBinding>) | ||||||
| { | { | ||||||
|     // 1. If module.[[ExportNames]] does not contain exportName, return null.
 |     // 1. If module.[[ExportNames]] does not contain exportName, return null.
 | ||||||
|     if (!m_export_names.contains_slow(export_name)) |     if (!m_export_names.contains_slow(export_name)) | ||||||
|  | @ -119,7 +119,7 @@ ThrowCompletionOr<Promise*> SyntheticModule::evaluate(VM& vm) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 1.2.2 SetSyntheticModuleExport ( module, exportName, exportValue ), https://tc39.es/proposal-json-modules/#sec-setsyntheticmoduleexport
 | // 1.2.2 SetSyntheticModuleExport ( module, exportName, exportValue ), https://tc39.es/proposal-json-modules/#sec-setsyntheticmoduleexport
 | ||||||
| ThrowCompletionOr<void> SyntheticModule::set_synthetic_module_export(FlyString const& export_name, Value export_value) | ThrowCompletionOr<void> SyntheticModule::set_synthetic_module_export(DeprecatedFlyString const& export_name, Value export_value) | ||||||
| { | { | ||||||
|     auto& vm = this->realm().vm(); |     auto& vm = this->realm().vm(); | ||||||
| 
 | 
 | ||||||
|  | @ -139,7 +139,7 @@ NonnullGCPtr<SyntheticModule> SyntheticModule::create_default_export_synthetic_m | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     // 2. Return CreateSyntheticModule("default", closure, realm)
 |     // 2. Return CreateSyntheticModule("default", closure, realm)
 | ||||||
|     return realm.heap().allocate_without_realm<SyntheticModule>(Vector<FlyString> { "default" }, move(closure), realm, filename); |     return realm.heap().allocate_without_realm<SyntheticModule>(Vector<DeprecatedFlyString> { "default" }, move(closure), realm, filename); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 1.4 ParseJSONModule ( source ), https://tc39.es/proposal-json-modules/#sec-parse-json-module
 | // 1.4 ParseJSONModule ( source ), https://tc39.es/proposal-json-modules/#sec-parse-json-module
 | ||||||
|  |  | ||||||
|  | @ -19,18 +19,18 @@ public: | ||||||
| 
 | 
 | ||||||
|     static NonnullGCPtr<SyntheticModule> create_default_export_synthetic_module(Value default_export, Realm& realm, StringView filename); |     static NonnullGCPtr<SyntheticModule> create_default_export_synthetic_module(Value default_export, Realm& realm, StringView filename); | ||||||
| 
 | 
 | ||||||
|     ThrowCompletionOr<void> set_synthetic_module_export(FlyString const& export_name, Value export_value); |     ThrowCompletionOr<void> set_synthetic_module_export(DeprecatedFlyString const& export_name, Value export_value); | ||||||
| 
 | 
 | ||||||
|     virtual ThrowCompletionOr<void> link(VM& vm) override; |     virtual ThrowCompletionOr<void> link(VM& vm) override; | ||||||
|     virtual ThrowCompletionOr<Promise*> evaluate(VM& vm) override; |     virtual ThrowCompletionOr<Promise*> evaluate(VM& vm) override; | ||||||
|     virtual ThrowCompletionOr<Vector<FlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set) override; |     virtual ThrowCompletionOr<Vector<DeprecatedFlyString>> get_exported_names(VM& vm, Vector<Module*> export_star_set) override; | ||||||
|     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, FlyString const& export_name, Vector<ResolvedBinding> resolve_set) override; |     virtual ThrowCompletionOr<ResolvedBinding> resolve_export(VM& vm, DeprecatedFlyString const& export_name, Vector<ResolvedBinding> resolve_set) override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     SyntheticModule(Vector<FlyString> export_names, EvaluationFunction evaluation_steps, Realm& realm, StringView filename); |     SyntheticModule(Vector<DeprecatedFlyString> export_names, EvaluationFunction evaluation_steps, Realm& realm, StringView filename); | ||||||
| 
 | 
 | ||||||
|     Vector<FlyString> m_export_names;      // [[ExportNames]]
 |     Vector<DeprecatedFlyString> m_export_names; // [[ExportNames]]
 | ||||||
|     EvaluationFunction m_evaluation_steps; // [[EvaluationSteps]]
 |     EvaluationFunction m_evaluation_steps;      // [[EvaluationSteps]]
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| ThrowCompletionOr<NonnullGCPtr<Module>> parse_json_module(StringView source_text, Realm& realm, StringView filename); | ThrowCompletionOr<NonnullGCPtr<Module>> parse_json_module(StringView source_text, Realm& realm, StringView filename); | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/DeprecatedString.h> | #include <AK/DeprecatedString.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <AK/StringView.h> | #include <AK/StringView.h> | ||||||
| #include <AK/Variant.h> | #include <AK/Variant.h> | ||||||
| 
 | 
 | ||||||
|  | @ -207,16 +207,16 @@ public: | ||||||
|     { |     { | ||||||
|         return m_value.visit( |         return m_value.visit( | ||||||
|             [](StringView view) { return view; }, |             [](StringView view) { return view; }, | ||||||
|             [](FlyString const& identifier) { return identifier.view(); }, |             [](DeprecatedFlyString const& identifier) { return identifier.view(); }, | ||||||
|             [](Empty) -> StringView { VERIFY_NOT_REACHED(); }); |             [](Empty) -> StringView { VERIFY_NOT_REACHED(); }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString flystring_value() const |     DeprecatedFlyString DeprecatedFlyString_value() const | ||||||
|     { |     { | ||||||
|         return m_value.visit( |         return m_value.visit( | ||||||
|             [](StringView view) -> FlyString { return view; }, |             [](StringView view) -> DeprecatedFlyString { return view; }, | ||||||
|             [](FlyString const& identifier) -> FlyString { return identifier; }, |             [](DeprecatedFlyString const& identifier) -> DeprecatedFlyString { return identifier; }, | ||||||
|             [](Empty) -> FlyString { VERIFY_NOT_REACHED(); }); |             [](Empty) -> DeprecatedFlyString { VERIFY_NOT_REACHED(); }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     StringView filename() const { return m_filename; } |     StringView filename() const { return m_filename; } | ||||||
|  | @ -236,7 +236,7 @@ public: | ||||||
|     DeprecatedString string_value(StringValueStatus& status) const; |     DeprecatedString string_value(StringValueStatus& status) const; | ||||||
|     DeprecatedString raw_template_value() const; |     DeprecatedString raw_template_value() const; | ||||||
| 
 | 
 | ||||||
|     void set_identifier_value(FlyString value) |     void set_identifier_value(DeprecatedFlyString value) | ||||||
|     { |     { | ||||||
|         m_value = move(value); |         m_value = move(value); | ||||||
|     } |     } | ||||||
|  | @ -249,7 +249,7 @@ private: | ||||||
|     DeprecatedString m_message; |     DeprecatedString m_message; | ||||||
|     StringView m_trivia; |     StringView m_trivia; | ||||||
|     StringView m_original_value; |     StringView m_original_value; | ||||||
|     Variant<Empty, StringView, FlyString> m_value {}; |     Variant<Empty, StringView, DeprecatedFlyString> m_value {}; | ||||||
|     StringView m_filename; |     StringView m_filename; | ||||||
|     size_t m_line_number { 0 }; |     size_t m_line_number { 0 }; | ||||||
|     size_t m_line_column { 0 }; |     size_t m_line_column { 0 }; | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ namespace PDF { | ||||||
| ENUMERATE_COLOR_SPACE_FAMILIES(ENUMERATE); | ENUMERATE_COLOR_SPACE_FAMILIES(ENUMERATE); | ||||||
| #undef ENUMERATE | #undef ENUMERATE | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<ColorSpaceFamily> ColorSpaceFamily::get(FlyString const& family_name) | PDFErrorOr<ColorSpaceFamily> ColorSpaceFamily::get(DeprecatedFlyString const& family_name) | ||||||
| { | { | ||||||
| #define ENUMERATE(f_name, ever_needs_parameters) \ | #define ENUMERATE(f_name, ever_needs_parameters) \ | ||||||
|     if (family_name == f_name.name()) {          \ |     if (family_name == f_name.name()) {          \ | ||||||
|  | @ -27,7 +27,7 @@ PDFErrorOr<ColorSpaceFamily> ColorSpaceFamily::get(FlyString const& family_name) | ||||||
|     return Error(Error::Type::MalformedPDF, DeprecatedString::formatted("Unknown ColorSpace family {}", family_name)); |     return Error(Error::Type::MalformedPDF, DeprecatedString::formatted("Unknown ColorSpace family {}", family_name)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<ColorSpace>> ColorSpace::create(FlyString const& name) | PDFErrorOr<NonnullRefPtr<ColorSpace>> ColorSpace::create(DeprecatedFlyString const& name) | ||||||
| { | { | ||||||
|     // Simple color spaces with no parameters, which can be specified directly
 |     // Simple color spaces with no parameters, which can be specified directly
 | ||||||
|     if (name == CommonNames::DeviceGray) |     if (name == CommonNames::DeviceGray) | ||||||
|  | @ -305,7 +305,7 @@ PDFErrorOr<NonnullRefPtr<ColorSpace>> ICCBasedColorSpace::create(Document* docum | ||||||
| 
 | 
 | ||||||
|     auto dict = param.get<NonnullRefPtr<Object>>()->cast<StreamObject>()->dict(); |     auto dict = param.get<NonnullRefPtr<Object>>()->cast<StreamObject>()->dict(); | ||||||
| 
 | 
 | ||||||
|     FlyString name; |     DeprecatedFlyString name; | ||||||
|     if (!dict->contains(CommonNames::Alternate)) { |     if (!dict->contains(CommonNames::Alternate)) { | ||||||
|         auto number_of_components = dict->get_value(CommonNames::N).to_int(); |         auto number_of_components = dict->get_value(CommonNames::N).to_int(); | ||||||
|         if (number_of_components == 1) |         if (number_of_components == 1) | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Forward.h> | #include <AK/Forward.h> | ||||||
| #include <LibGfx/Color.h> | #include <LibGfx/Color.h> | ||||||
| #include <LibPDF/Value.h> | #include <LibPDF/Value.h> | ||||||
|  | @ -28,28 +28,28 @@ namespace PDF { | ||||||
| 
 | 
 | ||||||
| class ColorSpaceFamily { | class ColorSpaceFamily { | ||||||
| public: | public: | ||||||
|     ColorSpaceFamily(FlyString name, bool never_needs_paramaters_p) |     ColorSpaceFamily(DeprecatedFlyString name, bool never_needs_paramaters_p) | ||||||
|         : m_name(move(name)) |         : m_name(move(name)) | ||||||
|         , m_never_needs_parameters(never_needs_paramaters_p) |         , m_never_needs_parameters(never_needs_paramaters_p) | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     FlyString name() const { return m_name; }; |     DeprecatedFlyString name() const { return m_name; }; | ||||||
|     bool never_needs_parameters() const { return m_never_needs_parameters; }; |     bool never_needs_parameters() const { return m_never_needs_parameters; }; | ||||||
|     static PDFErrorOr<ColorSpaceFamily> get(FlyString const&); |     static PDFErrorOr<ColorSpaceFamily> get(DeprecatedFlyString const&); | ||||||
| 
 | 
 | ||||||
| #define ENUMERATE(name, ever_needs_parameters) static ColorSpaceFamily name; | #define ENUMERATE(name, ever_needs_parameters) static ColorSpaceFamily name; | ||||||
|     ENUMERATE_COLOR_SPACE_FAMILIES(ENUMERATE) |     ENUMERATE_COLOR_SPACE_FAMILIES(ENUMERATE) | ||||||
| #undef ENUMERATE | #undef ENUMERATE | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     FlyString m_name; |     DeprecatedFlyString m_name; | ||||||
|     bool m_never_needs_parameters; |     bool m_never_needs_parameters; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class ColorSpace : public RefCounted<ColorSpace> { | class ColorSpace : public RefCounted<ColorSpace> { | ||||||
| public: | public: | ||||||
|     static PDFErrorOr<NonnullRefPtr<ColorSpace>> create(FlyString const&); |     static PDFErrorOr<NonnullRefPtr<ColorSpace>> create(DeprecatedFlyString const&); | ||||||
|     static PDFErrorOr<NonnullRefPtr<ColorSpace>> create(Document*, NonnullRefPtr<ArrayObject>); |     static PDFErrorOr<NonnullRefPtr<ColorSpace>> create(Document*, NonnullRefPtr<ArrayObject>); | ||||||
| 
 | 
 | ||||||
|     virtual ~ColorSpace() = default; |     virtual ~ColorSpace() = default; | ||||||
|  |  | ||||||
|  | @ -8,10 +8,10 @@ | ||||||
| 
 | 
 | ||||||
| namespace PDF { | namespace PDF { | ||||||
| 
 | 
 | ||||||
| #define ENUMERATE(name) FlyString CommonNames::name = #name; | #define ENUMERATE(name) DeprecatedFlyString CommonNames::name = #name; | ||||||
| ENUMERATE_COMMON_NAMES(ENUMERATE) | ENUMERATE_COMMON_NAMES(ENUMERATE) | ||||||
| #undef ENUMERATE | #undef ENUMERATE | ||||||
| 
 | 
 | ||||||
| FlyString CommonNames::IdentityH = "Identity-H"; | DeprecatedFlyString CommonNames::IdentityH = "Identity-H"; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| 
 | 
 | ||||||
| #define ENUMERATE_COMMON_NAMES(A) \ | #define ENUMERATE_COMMON_NAMES(A) \ | ||||||
|     A(AIS)                        \ |     A(AIS)                        \ | ||||||
|  | @ -150,11 +150,11 @@ namespace PDF { | ||||||
| 
 | 
 | ||||||
| class CommonNames { | class CommonNames { | ||||||
| public: | public: | ||||||
| #define ENUMERATE(name) static FlyString name; | #define ENUMERATE(name) static DeprecatedFlyString name; | ||||||
|     ENUMERATE_COMMON_NAMES(ENUMERATE) |     ENUMERATE_COMMON_NAMES(ENUMERATE) | ||||||
| #undef ENUMERATE | #undef ENUMERATE | ||||||
| 
 | 
 | ||||||
|     static FlyString IdentityH; |     static DeprecatedFlyString IdentityH; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -199,7 +199,7 @@ PDFErrorOr<void> Document::add_page_tree_node_to_page_tree(NonnullRefPtr<DictObj | ||||||
|     return {}; |     return {}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree(NonnullRefPtr<DictObject> tree, FlyString name) | PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree(NonnullRefPtr<DictObject> tree, DeprecatedFlyString name) | ||||||
| { | { | ||||||
|     if (tree->contains(CommonNames::Kids)) { |     if (tree->contains(CommonNames::Kids)) { | ||||||
|         return find_in_name_tree_nodes(tree->get_array(CommonNames::Kids), name); |         return find_in_name_tree_nodes(tree->get_array(CommonNames::Kids), name); | ||||||
|  | @ -210,7 +210,7 @@ PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree(NonnullRefPtr<Dict | ||||||
|     return find_in_key_value_array(key_value_names_array, name); |     return find_in_key_value_array(key_value_names_array, name); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree_nodes(NonnullRefPtr<ArrayObject> siblings, FlyString name) | PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree_nodes(NonnullRefPtr<ArrayObject> siblings, DeprecatedFlyString name) | ||||||
| { | { | ||||||
|     for (size_t i = 0; i < siblings->size(); i++) { |     for (size_t i = 0; i < siblings->size(); i++) { | ||||||
|         auto sibling = TRY(resolve_to<DictObject>(siblings->at(i))); |         auto sibling = TRY(resolve_to<DictObject>(siblings->at(i))); | ||||||
|  | @ -226,7 +226,7 @@ PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_name_tree_nodes(NonnullRefPt | ||||||
|     return Error { Error::Type::MalformedPDF, DeprecatedString::formatted("Didn't find node in name tree containing name {}", name) }; |     return Error { Error::Type::MalformedPDF, DeprecatedString::formatted("Didn't find node in name tree containing name {}", name) }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_key_value_array(NonnullRefPtr<ArrayObject> key_value_array, FlyString name) | PDFErrorOr<NonnullRefPtr<Object>> Document::find_in_key_value_array(NonnullRefPtr<ArrayObject> key_value_array, DeprecatedFlyString name) | ||||||
| { | { | ||||||
|     if (key_value_array->size() % 2 == 1) |     if (key_value_array->size() % 2 == 1) | ||||||
|         return Error { Error::Type::MalformedPDF, "key/value array has dangling key" }; |         return Error { Error::Type::MalformedPDF, "key/value array has dangling key" }; | ||||||
|  | @ -306,7 +306,7 @@ PDFErrorOr<Destination> Document::create_destination_from_parameters(NonnullRefP | ||||||
|     return Destination { type, page_number_by_index_ref.get(page_ref.as_ref_index()), parameters }; |     return Destination { type, page_number_by_index_ref.get(page_ref.as_ref_index()), parameters }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<Object>> Document::get_inheritable_object(FlyString const& name, NonnullRefPtr<DictObject> object) | PDFErrorOr<NonnullRefPtr<Object>> Document::get_inheritable_object(DeprecatedFlyString const& name, NonnullRefPtr<DictObject> object) | ||||||
| { | { | ||||||
|     if (!object->contains(name)) { |     if (!object->contains(name)) { | ||||||
|         auto parent = TRY(object->get_dict(this, CommonNames::Parent)); |         auto parent = TRY(object->get_dict(this, CommonNames::Parent)); | ||||||
|  | @ -352,7 +352,7 @@ PDFErrorOr<NonnullRefPtr<OutlineItem>> Document::build_outline_item(NonnullRefPt | ||||||
|             auto dest_arr = dest_obj->cast<ArrayObject>(); |             auto dest_arr = dest_obj->cast<ArrayObject>(); | ||||||
|             outline_item->dest = TRY(create_destination_from_parameters(dest_arr, page_number_by_index_ref)); |             outline_item->dest = TRY(create_destination_from_parameters(dest_arr, page_number_by_index_ref)); | ||||||
|         } else if (dest_obj->is<NameObject>() || dest_obj->is<StringObject>()) { |         } else if (dest_obj->is<NameObject>() || dest_obj->is<StringObject>()) { | ||||||
|             FlyString dest_name; |             DeprecatedFlyString dest_name; | ||||||
|             if (dest_obj->is<NameObject>()) |             if (dest_obj->is<NameObject>()) | ||||||
|                 dest_name = dest_obj->cast<NameObject>()->name(); |                 dest_name = dest_obj->cast<NameObject>()->name(); | ||||||
|             else |             else | ||||||
|  |  | ||||||
|  | @ -138,11 +138,11 @@ private: | ||||||
|     PDFErrorOr<Destination> create_destination_from_parameters(NonnullRefPtr<ArrayObject>, HashMap<u32, u32> const&); |     PDFErrorOr<Destination> create_destination_from_parameters(NonnullRefPtr<ArrayObject>, HashMap<u32, u32> const&); | ||||||
|     PDFErrorOr<Destination> create_destination_from_dictionary_entry(NonnullRefPtr<Object> const& entry, HashMap<u32, u32> const& page_number_by_index_ref); |     PDFErrorOr<Destination> create_destination_from_dictionary_entry(NonnullRefPtr<Object> const& entry, HashMap<u32, u32> const& page_number_by_index_ref); | ||||||
| 
 | 
 | ||||||
|     PDFErrorOr<NonnullRefPtr<Object>> get_inheritable_object(FlyString const& name, NonnullRefPtr<DictObject>); |     PDFErrorOr<NonnullRefPtr<Object>> get_inheritable_object(DeprecatedFlyString const& name, NonnullRefPtr<DictObject>); | ||||||
| 
 | 
 | ||||||
|     PDFErrorOr<NonnullRefPtr<Object>> find_in_name_tree(NonnullRefPtr<DictObject> root, FlyString name); |     PDFErrorOr<NonnullRefPtr<Object>> find_in_name_tree(NonnullRefPtr<DictObject> root, DeprecatedFlyString name); | ||||||
|     PDFErrorOr<NonnullRefPtr<Object>> find_in_name_tree_nodes(NonnullRefPtr<ArrayObject> siblings, FlyString name); |     PDFErrorOr<NonnullRefPtr<Object>> find_in_name_tree_nodes(NonnullRefPtr<ArrayObject> siblings, DeprecatedFlyString name); | ||||||
|     PDFErrorOr<NonnullRefPtr<Object>> find_in_key_value_array(NonnullRefPtr<ArrayObject> key_value_array, FlyString name); |     PDFErrorOr<NonnullRefPtr<Object>> find_in_key_value_array(NonnullRefPtr<ArrayObject> key_value_array, DeprecatedFlyString name); | ||||||
| 
 | 
 | ||||||
|     NonnullRefPtr<DocumentParser> m_parser; |     NonnullRefPtr<DocumentParser> m_parser; | ||||||
|     RefPtr<DictObject> m_catalog; |     RefPtr<DictObject> m_catalog; | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace PDF { | namespace PDF { | ||||||
| 
 | 
 | ||||||
| ErrorOr<ByteBuffer> Filter::decode(ReadonlyBytes bytes, FlyString const& encoding_type, RefPtr<DictObject> decode_parms) | ErrorOr<ByteBuffer> Filter::decode(ReadonlyBytes bytes, DeprecatedFlyString const& encoding_type, RefPtr<DictObject> decode_parms) | ||||||
| { | { | ||||||
|     int predictor = 1; |     int predictor = 1; | ||||||
|     int columns = 1; |     int columns = 1; | ||||||
|  |  | ||||||
|  | @ -7,15 +7,15 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/ByteBuffer.h> | #include <AK/ByteBuffer.h> | ||||||
|  | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Error.h> | #include <AK/Error.h> | ||||||
| #include <AK/FlyString.h> |  | ||||||
| #include <LibPDF/ObjectDerivatives.h> | #include <LibPDF/ObjectDerivatives.h> | ||||||
| 
 | 
 | ||||||
| namespace PDF { | namespace PDF { | ||||||
| 
 | 
 | ||||||
| class Filter { | class Filter { | ||||||
| public: | public: | ||||||
|     static ErrorOr<ByteBuffer> decode(ReadonlyBytes bytes, FlyString const& encoding_type, RefPtr<DictObject> decode_parms); |     static ErrorOr<ByteBuffer> decode(ReadonlyBytes bytes, DeprecatedFlyString const& encoding_type, RefPtr<DictObject> decode_parms); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     static ErrorOr<ByteBuffer> decode_ascii_hex(ReadonlyBytes bytes); |     static ErrorOr<ByteBuffer> decode_ascii_hex(ReadonlyBytes bytes); | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace PDF { | namespace PDF { | ||||||
| 
 | 
 | ||||||
| static bool is_standard_latin_font(FlyString const& font) | static bool is_standard_latin_font(DeprecatedFlyString const& font) | ||||||
| { | { | ||||||
|     return font.is_one_of( |     return font.is_one_of( | ||||||
|         "Times-Roman", "TimesNewRoman", |         "Times-Roman", "TimesNewRoman", | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <AK/Debug.h> | #include <AK/Debug.h> | ||||||
| #include <AK/FlyString.h> | #include <AK/DeprecatedFlyString.h> | ||||||
| #include <AK/Format.h> | #include <AK/Format.h> | ||||||
| #include <AK/RefCounted.h> | #include <AK/RefCounted.h> | ||||||
| #include <AK/SourceLocation.h> | #include <AK/SourceLocation.h> | ||||||
|  |  | ||||||
|  | @ -15,33 +15,33 @@ PDFErrorOr<NonnullRefPtr<Object>> ArrayObject::get_object_at(Document* document, | ||||||
|     return document->resolve_to<Object>(at(index)); |     return document->resolve_to<Object>(at(index)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PDFErrorOr<NonnullRefPtr<Object>> DictObject::get_object(Document* document, FlyString const& key) const | PDFErrorOr<NonnullRefPtr<Object>> DictObject::get_object(Document* document, DeprecatedFlyString const& key) const | ||||||
| { | { | ||||||
|     return document->resolve_to<Object>(get_value(key)); |     return document->resolve_to<Object>(get_value(key)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define DEFINE_ACCESSORS(class_name, snake_name)                                                                       \ | #define DEFINE_ACCESSORS(class_name, snake_name)                                                                                 \ | ||||||
|     PDFErrorOr<NonnullRefPtr<class_name>> ArrayObject::get_##snake_name##_at(Document* document, size_t index) const   \ |     PDFErrorOr<NonnullRefPtr<class_name>> ArrayObject::get_##snake_name##_at(Document* document, size_t index) const             \ | ||||||
|     {                                                                                                                  \ |     {                                                                                                                            \ | ||||||
|         if (index >= m_elements.size())                                                                                \ |         if (index >= m_elements.size())                                                                                          \ | ||||||
|             return Error { Error::Type::Internal, "Out of bounds array access" };                                      \ |             return Error { Error::Type::Internal, "Out of bounds array access" };                                                \ | ||||||
|         return document->resolve_to<class_name>(m_elements[index]);                                                    \ |         return document->resolve_to<class_name>(m_elements[index]);                                                              \ | ||||||
|     }                                                                                                                  \ |     }                                                                                                                            \ | ||||||
|                                                                                                                        \ |                                                                                                                                  \ | ||||||
|     NonnullRefPtr<class_name> ArrayObject::get_##snake_name##_at(size_t index) const                                   \ |     NonnullRefPtr<class_name> ArrayObject::get_##snake_name##_at(size_t index) const                                             \ | ||||||
|     {                                                                                                                  \ |     {                                                                                                                            \ | ||||||
|         VERIFY(index < m_elements.size());                                                                             \ |         VERIFY(index < m_elements.size());                                                                                       \ | ||||||
|         return cast_to<class_name>(m_elements[index]);                                                                 \ |         return cast_to<class_name>(m_elements[index]);                                                                           \ | ||||||
|     }                                                                                                                  \ |     }                                                                                                                            \ | ||||||
|                                                                                                                        \ |                                                                                                                                  \ | ||||||
|     PDFErrorOr<NonnullRefPtr<class_name>> DictObject::get_##snake_name(Document* document, FlyString const& key) const \ |     PDFErrorOr<NonnullRefPtr<class_name>> DictObject::get_##snake_name(Document* document, DeprecatedFlyString const& key) const \ | ||||||
|     {                                                                                                                  \ |     {                                                                                                                            \ | ||||||
|         return document->resolve_to<class_name>(get_value(key));                                                       \ |         return document->resolve_to<class_name>(get_value(key));                                                                 \ | ||||||
|     }                                                                                                                  \ |     }                                                                                                                            \ | ||||||
|                                                                                                                        \ |                                                                                                                                  \ | ||||||
|     NonnullRefPtr<class_name> DictObject::get_##snake_name(FlyString const& key) const                                 \ |     NonnullRefPtr<class_name> DictObject::get_##snake_name(DeprecatedFlyString const& key) const                                 \ | ||||||
|     {                                                                                                                  \ |     {                                                                                                                            \ | ||||||
|         return cast_to<class_name>(get_value(key));                                                                    \ |         return cast_to<class_name>(get_value(key));                                                                              \ | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| ENUMERATE_OBJECT_TYPES(DEFINE_ACCESSORS) | ENUMERATE_OBJECT_TYPES(DEFINE_ACCESSORS) | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn