diff options
author | Jason Merrill <jason@redhat.com> | 2008-11-19 14:36:38 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-11-19 14:36:38 -0500 |
commit | 2de6c675d3b3c7a32dee10fee434e120f8cbd05f (patch) | |
tree | b08da2a8217dd0074d918b8726166538db2f69c9 /gcc | |
parent | da3933ba836ad0821dfb7522fc9d6b9099969299 (diff) | |
download | gcc-2de6c675d3b3c7a32dee10fee434e120f8cbd05f.zip gcc-2de6c675d3b3c7a32dee10fee434e120f8cbd05f.tar.gz gcc-2de6c675d3b3c7a32dee10fee434e120f8cbd05f.tar.bz2 |
re PR c++/37563 (Trouble calling qualified member function)
PR c++/37563
* parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor
name is not a declaration.
From-SVN: r142015
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/pseudodtor5.C | 23 |
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8ce3cfe..12a826d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2008-11-19 Jason Merrill <jason@redhat.com> + PR c++/37563 + * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor + name is not a declaration. + PR c++/37256 * pt.c (instantiate_decl): Don't require a definition of a template that is explicitly instantiated 'extern'. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 5c1f849..2bf0e66 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -5264,7 +5264,7 @@ cp_parser_pseudo_destructor_name (cp_parser* parser, /*typename_keyword_p=*/false, /*check_dependency_p=*/true, /*type_p=*/false, - /*is_declaration=*/true) + /*is_declaration=*/false) != NULL_TREE); /* Now, if we saw a nested-name-specifier, we might be doing the second production. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 53a99de..f1f6c28 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-11-19 Jason Merrill <jason@redhat.com> + PR c++/37563 + * g++.dg/template/pseudodtor5.C: New test. + PR c++/37256 * g++.dg/cpp0x/extern_template-3.C: New test. diff --git a/gcc/testsuite/g++.dg/template/pseudodtor5.C b/gcc/testsuite/g++.dg/template/pseudodtor5.C new file mode 100644 index 0000000..751e662 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pseudodtor5.C @@ -0,0 +1,23 @@ +// PR c++/37563 + +struct A {}; + +template<int> struct Traits +{ + typedef void X; +}; + +template<> struct Traits<0> +{ + typedef A X; +}; + +template<int N> struct B +{ + typedef typename Traits<N>::X Y; + + void foo(Y y) + { + y.Y::A::~A(); + } +}; |