WebKit Bugzilla
Attachment 357467 Details for
Bug 177566
: Support concatenating StringView with other string types
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
To Land
bug-177566-20181217123511.patch (text/plain), 28.86 KB, created by
Daniel Bates
on 2018-12-17 12:35:11 PST
(
hide
)
Description:
To Land
Filename:
MIME Type:
Creator:
Daniel Bates
Created:
2018-12-17 12:35:11 PST
Size:
28.86 KB
patch
obsolete
>Subversion Revision: 239278 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index 4574f3062f640ac1384dc57793ecf45748f6d707..09eab304d781125e8db1856b74be58b47d9d55c7 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,22 @@ >+2018-12-17 Daniel Bates <dabates@apple.com> >+ >+ Support concatenating StringView with other string types >+ https://bugs.webkit.org/show_bug.cgi?id=177566 >+ >+ Reviewed by Darin Adler. >+ >+ Add operator+ overloads to StringOperators.h to support concatenating a StringView with >+ other string types (e.g. String). This lets a person write more naturally looking code: >+ >+ stringView + string >+ >+ Instead of: >+ >+ makeString(stringView, string) >+ >+ * wtf/text/StringOperators.h: >+ (WTF::operator+): Added various operator+ overloads. >+ > 2018-12-17 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r239265 and r239274. >diff --git a/Source/WTF/wtf/text/StringOperators.h b/Source/WTF/wtf/text/StringOperators.h >index 90930567e7cb99a8df49be130cb31c0eaa128d9b..12e082614209c599bc2bdf35bb8c02f4ef97528b 100644 >--- a/Source/WTF/wtf/text/StringOperators.h >+++ b/Source/WTF/wtf/text/StringOperators.h >@@ -112,6 +112,12 @@ inline StringAppend<const char*, AtomicString> operator+(const char* string1, co > return StringAppend<const char*, AtomicString>(string1, string2); > } > >+template<typename T, typename = std::enable_if_t<std::is_same<std::decay_t<T>, StringView>::value>> >+inline StringAppend<const char*, StringView> operator+(const char* string1, T string2) >+{ >+ return StringAppend<const char*, StringView>(string1, string2); >+} >+ > template<typename U, typename V> > inline StringAppend<const char*, StringAppend<U, V>> operator+(const char* string1, const StringAppend<U, V>& string2) > { >@@ -128,6 +134,12 @@ inline StringAppend<const UChar*, AtomicString> operator+(const UChar* string1, > return StringAppend<const UChar*, AtomicString>(string1, string2); > } > >+template<typename T, typename = std::enable_if_t<std::is_same<std::decay_t<T>, StringView>::value>> >+inline StringAppend<const UChar*, StringView> operator+(const UChar* string1, T string2) >+{ >+ return StringAppend<const UChar*, StringView>(string1, string2); >+} >+ > template<typename U, typename V> > inline StringAppend<const UChar*, StringAppend<U, V>> operator+(const UChar* string1, const StringAppend<U, V>& string2) > { >@@ -144,6 +156,12 @@ inline StringAppend<ASCIILiteral, AtomicString> operator+(const ASCIILiteral& st > return StringAppend<ASCIILiteral, AtomicString>(string1, string2); > } > >+template<typename T, typename = std::enable_if_t<std::is_same<std::decay_t<T>, StringView>::value>> >+inline StringAppend<ASCIILiteral, StringView> operator+(const ASCIILiteral& string1, T string2) >+{ >+ return StringAppend<ASCIILiteral, StringView>(string1, string2); >+} >+ > template<typename U, typename V> > inline StringAppend<ASCIILiteral, StringAppend<U, V>> operator+(const ASCIILiteral& string1, const StringAppend<U, V>& string2) > { >@@ -156,6 +174,12 @@ StringAppend<String, T> operator+(const String& string1, T string2) > return StringAppend<String, T>(string1, string2); > } > >+template<typename T, typename U, typename = std::enable_if_t<std::is_same<std::decay_t<T>, StringView>::value>> >+StringAppend<StringView, U> operator+(T string1, U string2) >+{ >+ return StringAppend<StringView, U>(string1, string2); >+} >+ > template<typename U, typename V, typename W> > StringAppend<StringAppend<U, V>, W> operator+(const StringAppend<U, V>& string1, W string2) > { >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index ad2629fdda55e1fa36919f243229e6d52dbbd09d..e7c0324a8cc02f13896c2d323169ed189ed6796a 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,16 @@ >+2018-12-17 Daniel Bates <dabates@apple.com> >+ >+ Support concatenating StringView with other string types >+ https://bugs.webkit.org/show_bug.cgi?id=177566 >+ >+ Reviewed by Darin Adler. >+ >+ Add some tests to ensure we do not regress the number of allocations needed when performing >+ string concatenation with string views. >+ >+ * TestWebKitAPI/Tests/WTF/StringOperators.cpp: >+ (TestWebKitAPI::TEST): >+ > 2018-12-17 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r239265 and r239274. >diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp >index 595afb054a4561ee605289b89ead4ebd977c7f26..9abcbb3a87d8c072d96d042dbff0aae4cd7c66f1 100644 >--- a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp >+++ b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp >@@ -29,6 +29,7 @@ > > static int wtfStringCopyCount; > >+#include <wtf/text/StringView.h> > #include <wtf/text/WTFString.h> > > namespace TestWebKitAPI { >@@ -47,22 +48,33 @@ TEST(WTF, StringOperators) > AtomicString atomicString("AtomicString"); > ASCIILiteral literal { "ASCIILiteral"_s }; > >+ String stringViewBacking { "StringView" }; >+ StringView stringView { stringViewBacking }; >+ > EXPECT_EQ(0, wtfStringCopyCount); > > EXPECT_N_WTF_STRING_COPIES(2, string + string); > EXPECT_N_WTF_STRING_COPIES(2, string + atomicString); > EXPECT_N_WTF_STRING_COPIES(2, atomicString + string); > EXPECT_N_WTF_STRING_COPIES(2, atomicString + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(1, stringView + string); >+ EXPECT_N_WTF_STRING_COPIES(1, string + stringView); >+ EXPECT_N_WTF_STRING_COPIES(1, stringView + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(1, atomicString + stringView); > > EXPECT_N_WTF_STRING_COPIES(1, "C string" + string); > EXPECT_N_WTF_STRING_COPIES(1, string + "C string"); > EXPECT_N_WTF_STRING_COPIES(1, "C string" + atomicString); > EXPECT_N_WTF_STRING_COPIES(1, atomicString + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(0, "C string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, stringView + "C string"); > > EXPECT_N_WTF_STRING_COPIES(1, literal + string); > EXPECT_N_WTF_STRING_COPIES(1, string + literal); > EXPECT_N_WTF_STRING_COPIES(1, literal + atomicString); > EXPECT_N_WTF_STRING_COPIES(1, atomicString + literal); >+ EXPECT_N_WTF_STRING_COPIES(0, literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, stringView + literal); > > EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + string); > EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + string)); >@@ -92,19 +104,54 @@ TEST(WTF, StringOperators) > EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + atomicString)); > EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + atomicString)); > >- EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + "C string" + string); >- EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + "C string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + ("C string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + literal + string); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + string)); >- EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + string)); >- >- EXPECT_N_WTF_STRING_COPIES(2, literal + string + "C string" + atomicString); >- EXPECT_N_WTF_STRING_COPIES(2, literal + (string + "C string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + ("C string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + literal + atomicString); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + literal + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + (literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(0, literal + stringView + "C string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, literal + (stringView + "C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(0, (literal + stringView) + ("C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(0, "C string" + stringView + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, "C string" + (stringView + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(0, ("C string" + stringView) + (literal + stringView)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + "C string" + string + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + "C string" + string + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + ("C string" + string) + (literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + literal + string + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + string + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + string) + (literal + stringView)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + "C string" + stringView + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + "C string" + stringView + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + ("C string" + stringView) + (literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + literal + stringView + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + stringView + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + stringView) + (literal + string)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + string + "C string" + atomicString + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (string + "C string" + atomicString + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + ("C string" + atomicString) + (literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + literal + atomicString + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + literal + atomicString + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + (literal + atomicString) + (literal + stringView)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + string + "C string" + stringView + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (string + "C string" + stringView + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + ("C string" + stringView) + (literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + literal + stringView + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + literal + stringView + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + (literal + stringView) + (literal + atomicString)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + stringView + "C string" + atomicString + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (stringView + "C string" + atomicString + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + stringView) + ("C string" + atomicString) + (literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + stringView + literal + atomicString + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (stringView + literal + atomicString + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + stringView) + (literal + atomicString) + (literal + string)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + stringView + "C string" + string + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (stringView + "C string" + string + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + stringView) + ("C string" + string) + (literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + stringView + literal + string + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (stringView + literal + string + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + stringView) + (literal + string) + (literal + atomicString)); > > EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + atomicString); > EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + atomicString)); >@@ -120,39 +167,97 @@ TEST(WTF, StringOperators) > EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + atomicString + literal)); > EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (atomicString + literal)); > >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + atomicString); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + ("C string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, string + "C string" + atomicString + "C string"); >- EXPECT_N_WTF_STRING_COPIES(2, string + ("C string" + atomicString + "C string")); >- EXPECT_N_WTF_STRING_COPIES(2, (string + "C string") + (atomicString + "C string")); >- >- EXPECT_N_WTF_STRING_COPIES(2, literal + string + literal + atomicString); >- EXPECT_N_WTF_STRING_COPIES(2, literal + (string + literal + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + (literal + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, string + literal + atomicString + literal); >- EXPECT_N_WTF_STRING_COPIES(2, string + (literal + atomicString + literal)); >- EXPECT_N_WTF_STRING_COPIES(2, (string + literal) + (atomicString + literal)); >- >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + string); >- EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + ("C string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + "C string" + string + "C string"); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + ("C string" + string + "C string")); >- EXPECT_N_WTF_STRING_COPIES(2, (atomicString + "C string") + (string + "C string")); >- >- EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + literal + string); >- EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + literal + string)); >- EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + (literal + string)); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + literal + string + literal); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + string + literal)); >- EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (string + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + atomicString + "C string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + atomicString + "C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + ("C string" + atomicString) + ("C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + "C string" + atomicString + "C string" + stringView + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, string + ("C string" + atomicString + "C string" + stringView + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + "C string") + (atomicString + "C string") + (stringView + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + string + literal + atomicString + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (string + literal + atomicString + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + (literal + atomicString) + (literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + literal + atomicString + literal + stringView + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, string + (literal + atomicString + literal + stringView + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + literal) + (atomicString + literal) + (stringView + literal)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + stringView + "C string" + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + stringView + "C string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + ("C string" + stringView) + ("C string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + "C string" + stringView + "C string" + atomicString + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, string + ("C string" + stringView + "C string" + atomicString + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + "C string") + (stringView + "C string") + (atomicString + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + string + literal + stringView + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (string + literal + stringView + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + (literal + stringView) + (literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + literal + stringView + literal + atomicString + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, string + (literal + stringView + literal + atomicString + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + literal) + (stringView + literal) + (atomicString + literal)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + string + "C string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + string + "C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + ("C string" + string) + ("C string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + "C string" + string + "C string" + stringView + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + ("C string" + string + "C string" + stringView + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + "C string") + (string + "C string") + (stringView + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + literal + string + literal + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + literal + string + literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + (literal + string) + (literal + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + literal + string + literal + stringView + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + string + literal + stringView + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (string + literal) + (stringView + literal)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + stringView + "C string" + string); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + stringView + "C string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + ("C string" + stringView) + ("C string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + "C string" + stringView + "C string" + string + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + ("C string" + stringView + "C string" + string + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + "C string") + (stringView + "C string") + (string + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + literal + stringView + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + literal + stringView + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + (literal + stringView) + (literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + literal + stringView + literal + string + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + stringView + literal + string + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (stringView + literal) + (string + literal)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + stringView + "C string" + atomicString + "C string" + string); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (stringView + "C string" + atomicString + "C string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + stringView) + ("C string" + atomicString) + ("C string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + "C string" + atomicString + "C string" + string + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + ("C string" + atomicString + "C string" + string + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + "C string") + (atomicString + "C string") + (string + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + stringView + literal + atomicString + literal + string); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (stringView + literal + atomicString + literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + stringView) + (literal + atomicString) + (literal + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + literal + atomicString + literal + string + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + (literal + atomicString + literal + string + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + literal) + (atomicString + literal) + (string + literal)); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + stringView + "C string" + string + "C string" + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, "C string" + (stringView + "C string" + string + "C string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, ("C string" + stringView) + ("C string" + string) + ("C string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + "C string" + string + "C string" + atomicString + "C string"); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + ("C string" + string + "C string" + atomicString + "C string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + "C string") + (string + "C string") + (atomicString + "C string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, literal + stringView + literal + string + literal + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, literal + (stringView + literal + string + literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (literal + stringView) + (literal + string) + (literal + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + literal + string + literal + atomicString + literal); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + (literal + string + literal + atomicString + literal)); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + literal) + (string + literal) + (atomicString + literal)); > > #if COMPILER(MSVC) > EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + string); > EXPECT_N_WTF_STRING_COPIES(1, string + L"wide string"); > EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + atomicString); > EXPECT_N_WTF_STRING_COPIES(1, atomicString + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(0, L"wide string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, stringView + L"wide string"); > > EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + string); > EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + string)); >@@ -168,19 +273,54 @@ TEST(WTF, StringOperators) > EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + atomicString + L"wide string")); > EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (atomicString + L"wide string")); > >- EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + atomicString); >- EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + string) + (L"wide string" + atomicString)); >- EXPECT_N_WTF_STRING_COPIES(2, string + L"wide string" + atomicString + L"wide string"); >- EXPECT_N_WTF_STRING_COPIES(2, string + (L"wide string" + atomicString + L"wide string")); >- EXPECT_N_WTF_STRING_COPIES(2, (string + L"wide string") + (atomicString + L"wide string")); >- >- EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + atomicString + L"wide string" + string); >- EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (atomicString + L"wide string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + atomicString) + (L"wide string" + string)); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + L"wide string" + string + L"wide string"); >- EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + string + L"wide string")); >- EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (string + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(0, L"wide string" + stringView + L"wide string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(0, L"wide string" + (stringView + L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(0, (L"wide string" + stringView) + (L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(0, stringView + L"wide string" + stringView + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(0, stringView + (L"wide string" + stringView + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(0, (stringView + L"wide string") + (stringView + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + atomicString + L"wide string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + atomicString + L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + string) + (L"wide string" + atomicString) + (L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + L"wide string" + atomicString + L"wide string" + stringView + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, string + (L"wide string" + atomicString + L"wide string" + stringView + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + L"wide string") + (atomicString + L"wide string") + (stringView + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + stringView + L"wide string" + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + stringView + L"wide string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + string) + (L"wide string" + stringView) + (L"wide string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, string + L"wide string" + stringView + L"wide string" + atomicString + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, string + (L"wide string" + stringView + L"wide string" + atomicString + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (string + L"wide string") + (stringView + L"wide string") + (atomicString + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + atomicString + L"wide string" + string + L"wide string" + stringView); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (atomicString + L"wide string" + string + L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + atomicString) + (L"wide string" + string) + (L"wide string" + stringView)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + L"wide string" + string + L"wide string" + stringView + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + string + L"wide string" + stringView + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (string + L"wide string") + (stringView + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + atomicString + L"wide string" + stringView + L"wide string" + string); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (atomicString + L"wide string" + stringView + L"wide string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + atomicString) + (L"wide string" + stringView) + (L"wide string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + L"wide string" + stringView + L"wide string" + string + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + stringView + L"wide string" + string + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (stringView + L"wide string") + (string + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + stringView + L"wide string" + atomicString + L"wide string" + string); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (stringView + L"wide string" + atomicString + L"wide string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + stringView) + (L"wide string" + atomicString) + (L"wide string" + string)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + L"wide string" + atomicString + L"wide string" + string + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + (L"wide string" + atomicString + L"wide string" + string + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + L"wide string") + (atomicString + L"wide string") + (string + L"wide string")); >+ >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + stringView + L"wide string" + string + L"wide string" + atomicString); >+ EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (stringView + L"wide string" + string + L"wide string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + stringView) + (L"wide string" + string) + (L"wide string" + atomicString)); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + L"wide string" + string + L"wide string" + atomicString + L"wide string"); >+ EXPECT_N_WTF_STRING_COPIES(2, stringView + (L"wide string" + string + L"wide string" + atomicString + L"wide string")); >+ EXPECT_N_WTF_STRING_COPIES(2, (stringView + L"wide string") + (string + L"wide string") + (atomicString + L"wide string")); > #endif > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 177566
:
322014
| 357467