diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-01-31 22:38:00 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-01-31 22:38:00 +0100 |
commit | 19bdccb4be4b0c3eae14c5634d25e1a83506a2f0 (patch) | |
tree | fa800345c959c330e1898ca4f11e9502cbe1690c /gcc | |
parent | fcb2cdfcfecc800d537fffa13dad17e4a3a34ae2 (diff) | |
download | gcc-19bdccb4be4b0c3eae14c5634d25e1a83506a2f0.zip gcc-19bdccb4be4b0c3eae14c5634d25e1a83506a2f0.tar.gz gcc-19bdccb4be4b0c3eae14c5634d25e1a83506a2f0.tar.bz2 |
re PR c++/79304 (diagnostic shows bogus expression ((X<T>*)this)->.c)
PR c++/79304
* error.c (dump_expr) <case COMPONENT_REF>: Don't print .
after ARROW_EXPR.
* g++.dg/diagnostic/pr79304.C: New test.
From-SVN: r245073
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/error.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/diagnostic/pr79304.C | 20 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 04d2a60..560bbfa 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2017-01-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/79304 + * error.c (dump_expr) <case COMPONENT_REF>: Don't print . + after ARROW_EXPR. + 2017-01-31 David Malcolm <dmalcolm@redhat.com> PR c++/79298 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 4f4c11d..92137f7 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2247,7 +2247,8 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags) else { dump_expr (pp, ob, flags | TFF_EXPR_IN_PARENS); - pp_cxx_dot (pp); + if (TREE_CODE (ob) != ARROW_EXPR) + pp_cxx_dot (pp); } dump_expr (pp, TREE_OPERAND (t, 1), flags & ~TFF_EXPR_IN_PARENS); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef50eda..c313baa 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/79304 + * g++.dg/diagnostic/pr79304.C: New test. + 2017-01-31 David Malcolm <dmalcolm@redhat.com> PR c++/79298 diff --git a/gcc/testsuite/g++.dg/diagnostic/pr79304.C b/gcc/testsuite/g++.dg/diagnostic/pr79304.C new file mode 100644 index 0000000..eedae42 --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/pr79304.C @@ -0,0 +1,20 @@ +// PR c++/79304 +// { dg-do compile } + +struct C { }; + +template<class T> +struct X +{ + C* c; + + void f() { + this->c.s(); // { dg-error "->c" } + } +}; + +int main() +{ + X<int> x; + x.f(); +} |