diff options
author | Carlo Wood <carlo@alinoe.com> | 2003-11-07 03:53:44 +0000 |
---|---|---|
committer | Carlo Wood <carlo@gcc.gnu.org> | 2003-11-07 03:53:44 +0000 |
commit | eb622d37cfc1e4d1760aa1eba3e1ea3149f80469 (patch) | |
tree | d4d01d9a0e1c026e10245484a21100cb87167881 | |
parent | 2215f7320e000a724667658ca60492a05629db86 (diff) | |
download | gcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.zip gcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.tar.gz gcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.tar.bz2 |
demangle.h (qualifier_list<Allocator>::decode_qualifiers(string_type&, string_type&, bool member_function_pointer_qualifiers): Always seperate the '[' of an array type with a space from what is left of it...
* include/bits/demangle.h
(qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool member_function_pointer_qualifiers):
Always seperate the '[' of an array type with a space from
what is left of it, except when that is the closing bracket
of another array dimension.
From-SVN: r73328
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/demangle.h | 11 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/demangle/abi_examples/10.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/demangle/regression/3111-2.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/demangle/regression/7986-01.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/demangle/regression/7986-07.cc | 2 |
6 files changed, 19 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 68c8571..1563a6d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,6 +1,15 @@ 2003-11-07 Carlo Wood <carlo@alinoe.com> * include/bits/demangle.h + (qualifier_list<Allocator>::decode_qualifiers(string_type&, + string_type&, bool member_function_pointer_qualifiers): + Always seperate the '[' of an array type with a space from + what is left of it, except when that is the closing bracket + of another array dimension. + +2003-11-07 Carlo Wood <carlo@alinoe.com> + + * include/bits/demangle.h (qualifier_list<Allocator>::decode_qualifiers(string_type&, string_type&, bool) const): Made const. (qualifier_list<Allocator>::M_printing_suppressed): Added mutable. diff --git a/libstdc++-v3/include/bits/demangle.h b/libstdc++-v3/include/bits/demangle.h index 901eaa7..2858166 100644 --- a/libstdc++-v3/include/bits/demangle.h +++ b/libstdc++-v3/include/bits/demangle.h @@ -1380,7 +1380,7 @@ namespace __gnu_cxx // <Q>[K|V|r]+ ==> [ const| volatile| restrict]+Q "KVr..." // <Q>U<S> ==> SQ "U<S>..." // <Q>M<C> ==> C::*Q "M<C>..." (<C> recurs.) - // A<I> ==> [I] "A<I>..." (<I> recurs.) + // A<I> ==> [I] "A<I>..." (<I> recurs.) // <Q>A<I> ==> (Q) [I] "A<I>..." (<I> recurs.) // Note that when <Q> ends on an A<I2> then the brackets are omitted: // A<I2>A<I> ==> [I2][I] @@ -1454,14 +1454,15 @@ namespace __gnu_cxx case 'A': { string_type index = (*iter).get_optional_type(); - if (++iter != M_qualifier_starts.rend() - && (*iter).first_qualifier() != 'A') + if (++iter == M_qualifier_starts.rend()) + postfix = " [" + index + "]" + postfix; + else if ((*iter).first_qualifier() == 'A') + postfix = "[" + index + "]" + postfix; + else { prefix += " ("; postfix = ") [" + index + "]" + postfix; } - else - postfix = "[" + index + "]" + postfix; break; } case 'M': diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/10.cc b/libstdc++-v3/testsuite/demangle/abi_examples/10.cc index fc422a7..d639ca8 100644 --- a/libstdc++-v3/testsuite/demangle/abi_examples/10.cc +++ b/libstdc++-v3/testsuite/demangle/abi_examples/10.cc @@ -34,7 +34,7 @@ int main() { static int bar; }; int Foo<int[4]>::bar; */ - verify_demangle("_ZN3FooIA4_iE3barE", "Foo<int[4]>::bar"); + verify_demangle("_ZN3FooIA4_iE3barE", "Foo<int [4]>::bar"); return 0; } diff --git a/libstdc++-v3/testsuite/demangle/regression/3111-2.cc b/libstdc++-v3/testsuite/demangle/regression/3111-2.cc index 8897c50..42d50f4 100644 --- a/libstdc++-v3/testsuite/demangle/regression/3111-2.cc +++ b/libstdc++-v3/testsuite/demangle/regression/3111-2.cc @@ -32,7 +32,7 @@ int main() // verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i", // "f(int[sizeof(N::A::f() const::foo())])"); verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i", - "f(int[sizeof(N::A::f() const::foo)])"); + "f(int [sizeof(N::A::f() const::foo)])"); return 0; } diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-01.cc b/libstdc++-v3/testsuite/demangle/regression/7986-01.cc index e864957..46551e7 100644 --- a/libstdc++-v3/testsuite/demangle/regression/7986-01.cc +++ b/libstdc++-v3/testsuite/demangle/regression/7986-01.cc @@ -27,7 +27,7 @@ int main() { using namespace __gnu_test; // cplus-dem FAIL - verify_demangle("_Z1fA37_iPS_", "f(int[37], int (*) [37])"); + verify_demangle("_Z1fA37_iPS_", "f(int [37], int (*) [37])"); return 0; } diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-07.cc b/libstdc++-v3/testsuite/demangle/regression/7986-07.cc index 6a4dfb0..e035256 100644 --- a/libstdc++-v3/testsuite/demangle/regression/7986-07.cc +++ b/libstdc++-v3/testsuite/demangle/regression/7986-07.cc @@ -28,7 +28,7 @@ int main() using namespace __gnu_test; // cplus-dem FAIL - verify_demangle("_Z3fooA30_A_i", "foo(int[30][])"); + verify_demangle("_Z3fooA30_A_i", "foo(int [30][])"); return 0; |