From afbce7b7cfb6dcfdebd6ee299557226bd1640a8b Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 24 Apr 2013 12:46:53 -0400 Subject: re PR c++/53721 ([C++11] "this" not allowed in trailing return type) PR c++/53721 * parser.c (cp_parser_postfix_dot_deref_expression): Fix thinko. From-SVN: r198257 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/parser.c | 2 +- gcc/testsuite/g++.dg/cpp0x/decltype51.C | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/decltype51.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 761ca34..770f24a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-04-24 Jason Merrill + + PR c++/53721 + * parser.c (cp_parser_postfix_dot_deref_expression): Fix thinko. + 2013-04-24 Paolo Carlini * typeck.c (cxx_sizeof_or_alignof_type): Change -Wpointer-arith diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index cb26292..2239a07 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6155,7 +6155,7 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser, /* Unlike the object expression in other contexts, *this is not required to be of complete type for purposes of class member access (5.2.5) outside the member function body. */ - else if (scope != current_class_ref + else if (postfix_expression != current_class_ref && !(processing_template_decl && scope == current_class_type)) scope = complete_type_or_else (scope, NULL_TREE); /* Let the name lookup machinery know that we are processing a diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype51.C b/gcc/testsuite/g++.dg/cpp0x/decltype51.C new file mode 100644 index 0000000..9ab41467 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/decltype51.C @@ -0,0 +1,10 @@ +// PR c++/53721 +// { dg-require-effective-target c++11 } + +struct A +{ + void f() {}; + auto g() -> decltype(this->f()) + { + } +}; -- cgit v1.1