diff options
author | Jason Merrill <jason@redhat.com> | 2011-05-27 15:31:59 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-05-27 15:31:59 -0400 |
commit | 87fd3cf18a7e5d67bbbf9a96c34c5476544a4eac (patch) | |
tree | cb30504f468540fa345380bf247098a12f7fc9a8 /gcc | |
parent | 0453694246f95eac300dca7c931d0f25368da2bb (diff) | |
download | gcc-87fd3cf18a7e5d67bbbf9a96c34c5476544a4eac.zip gcc-87fd3cf18a7e5d67bbbf9a96c34c5476544a4eac.tar.gz gcc-87fd3cf18a7e5d67bbbf9a96c34c5476544a4eac.tar.bz2 |
re PR c++/48284 ([C++0x] incorrect printing of decltype operand in diagnostic)
PR c++/48284
* error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
with INDIRECT_REF of REFERENCE_TYPE.
From-SVN: r174353
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/error.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/error6.C | 8 |
4 files changed, 18 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 332b98c..19ef7ca 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2011-05-27 Jason Merrill <jason@redhat.com> + PR c++/48284 + * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot + with INDIRECT_REF of REFERENCE_TYPE. + PR c++/49181 * pt.c (get_mostly_instantiated_function_type): Use push_access_scope. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 8d7aaa7..a40630a 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1890,7 +1890,10 @@ dump_expr (tree t, int flags) && strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this"))) { dump_expr (ob, flags | TFF_EXPR_IN_PARENS); - pp_cxx_arrow (cxx_pp); + if (TREE_CODE (TREE_TYPE (ob)) == REFERENCE_TYPE) + pp_cxx_dot (cxx_pp); + else + pp_cxx_arrow (cxx_pp); } } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 474b857..d034def 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2011-05-27 Jason Merrill <jason@redhat.com> + * g++.dg/cpp0x/error6.C: New. + * g++.dg/cpp0x/error5.C: New. 2011-05-27 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/g++.dg/cpp0x/error6.C b/gcc/testsuite/g++.dg/cpp0x/error6.C new file mode 100644 index 0000000..3515652 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/error6.C @@ -0,0 +1,8 @@ +// PR c++/48284 +// { dg-options -std=c++0x } + +template<typename C> +auto g(C& c) -> decltype (c.f()) { return c.f(); } // { dg-error "decltype .c\\.f" } + +template<typename C> +auto g(C& c) -> decltype (c.f()) { return c.f(); } // { dg-error "decltype .c\\.f" } |