@@ -6185,7 +6185,17 @@ TEST_F(FormatTest, ReturnTypeBreakingStyle) {
61856185 "void\n"
61866186 "A::operator[]() {}\n"
61876187 "void\n"
6188- "A::operator!() {}\n",
6188+ "A::operator!() {}\n"
6189+ "void\n"
6190+ "A::operator**() {}\n"
6191+ "void\n"
6192+ "A::operator<Foo> *() {}\n"
6193+ "void\n"
6194+ "A::operator<Foo> **() {}\n"
6195+ "void\n"
6196+ "A::operator<Foo> &() {}\n"
6197+ "void\n"
6198+ "A::operator void **() {}\n",
61896199 Style);
61906200 verifyFormat("constexpr auto\n"
61916201 "operator()() const -> reference {}\n"
@@ -6202,6 +6212,10 @@ TEST_F(FormatTest, ReturnTypeBreakingStyle) {
62026212 "constexpr auto\n"
62036213 "operator void *() const -> reference {}\n"
62046214 "constexpr auto\n"
6215+ "operator void **() const -> reference {}\n"
6216+ "constexpr auto\n"
6217+ "operator void *() const -> reference {}\n"
6218+ "constexpr auto\n"
62056219 "operator void &() const -> reference {}\n"
62066220 "constexpr auto\n"
62076221 "operator void &&() const -> reference {}\n"
@@ -14986,9 +15000,20 @@ TEST_F(FormatTest, OperatorSpacing) {
1498615000 Style.PointerAlignment = FormatStyle::PAS_Right;
1498715001 verifyFormat("Foo::operator*();", Style);
1498815002 verifyFormat("Foo::operator void *();", Style);
15003+ verifyFormat("Foo::operator void **();", Style);
1498915004 verifyFormat("Foo::operator()(void *);", Style);
1499015005 verifyFormat("Foo::operator*(void *);", Style);
1499115006 verifyFormat("Foo::operator*();", Style);
15007+ verifyFormat("Foo::operator**();", Style);
15008+ verifyFormat("Foo::operator&();", Style);
15009+ verifyFormat("Foo::operator<int> *();", Style);
15010+ verifyFormat("Foo::operator<Foo> *();", Style);
15011+ verifyFormat("Foo::operator<int> **();", Style);
15012+ verifyFormat("Foo::operator<Foo> **();", Style);
15013+ verifyFormat("Foo::operator<int> &();", Style);
15014+ verifyFormat("Foo::operator<Foo> &();", Style);
15015+ verifyFormat("Foo::operator<int> &&();", Style);
15016+ verifyFormat("Foo::operator<Foo> &&();", Style);
1499215017 verifyFormat("operator*(int (*)(), class Foo);", Style);
1499315018
1499415019 verifyFormat("Foo::operator&();", Style);
@@ -14999,21 +15024,39 @@ TEST_F(FormatTest, OperatorSpacing) {
1499915024 verifyFormat("operator&(int (&)(), class Foo);", Style);
1500015025
1500115026 verifyFormat("Foo::operator&&();", Style);
15027+ verifyFormat("Foo::operator**();", Style);
1500215028 verifyFormat("Foo::operator void &&();", Style);
1500315029 verifyFormat("Foo::operator()(void &&);", Style);
1500415030 verifyFormat("Foo::operator&&(void &&);", Style);
1500515031 verifyFormat("Foo::operator&&();", Style);
1500615032 verifyFormat("operator&&(int(&&)(), class Foo);", Style);
15033+ verifyFormat("operator const nsTArrayRight<E> &()", Style);
15034+ verifyFormat("[[nodiscard]] operator const nsTArrayRight<E, Allocator> &()",
15035+ Style);
15036+ verifyFormat("operator void **()", Style);
15037+ verifyFormat("operator const FooRight<Object> &()", Style);
15038+ verifyFormat("operator const FooRight<Object> *()", Style);
15039+ verifyFormat("operator const FooRight<Object> **()", Style);
1500715040
1500815041 Style.PointerAlignment = FormatStyle::PAS_Left;
1500915042 verifyFormat("Foo::operator*();", Style);
15043+ verifyFormat("Foo::operator**();", Style);
1501015044 verifyFormat("Foo::operator void*();", Style);
15045+ verifyFormat("Foo::operator void**();", Style);
1501115046 verifyFormat("Foo::operator/*comment*/ void*();", Style);
1501215047 verifyFormat("Foo::operator/*a*/ const /*b*/ void*();", Style);
1501315048 verifyFormat("Foo::operator/*a*/ volatile /*b*/ void*();", Style);
1501415049 verifyFormat("Foo::operator()(void*);", Style);
1501515050 verifyFormat("Foo::operator*(void*);", Style);
1501615051 verifyFormat("Foo::operator*();", Style);
15052+ verifyFormat("Foo::operator<int>*();", Style);
15053+ verifyFormat("Foo::operator<Foo>*();", Style);
15054+ verifyFormat("Foo::operator<int>**();", Style);
15055+ verifyFormat("Foo::operator<Foo>**();", Style);
15056+ verifyFormat("Foo::operator<int>&();", Style);
15057+ verifyFormat("Foo::operator<Foo>&();", Style);
15058+ verifyFormat("Foo::operator<int>&&();", Style);
15059+ verifyFormat("Foo::operator<Foo>&&();", Style);
1501715060 verifyFormat("operator*(int (*)(), class Foo);", Style);
1501815061
1501915062 verifyFormat("Foo::operator&();", Style);
@@ -15035,9 +15078,17 @@ TEST_F(FormatTest, OperatorSpacing) {
1503515078 verifyFormat("Foo::operator&&(void&&);", Style);
1503615079 verifyFormat("Foo::operator&&();", Style);
1503715080 verifyFormat("operator&&(int(&&)(), class Foo);", Style);
15081+ verifyFormat("operator const nsTArrayLeft<E>&()", Style);
15082+ verifyFormat("[[nodiscard]] operator const nsTArrayLeft<E, Allocator>&()",
15083+ Style);
15084+ verifyFormat("operator void**()", Style);
15085+ verifyFormat("operator const FooLeft<Object>&()", Style);
15086+ verifyFormat("operator const FooLeft<Object>*()", Style);
15087+ verifyFormat("operator const FooLeft<Object>**()", Style);
1503815088
1503915089 // PR45107
1504015090 verifyFormat("operator Vector<String>&();", Style);
15091+ verifyFormat("operator const Vector<String>&();", Style);
1504115092 verifyFormat("operator foo::Bar*();", Style);
1504215093 verifyFormat("operator const Foo<X>::Bar<Y>*();", Style);
1504315094 verifyFormat("operator/*a*/ const /*b*/ Foo /*c*/<X> /*d*/ ::Bar<Y>*();",
0 commit comments