From 4fc6070e01c97ca75678c4e35d2db47ce834cc41 Mon Sep 17 00:00:00 2001 From: fabien Date: Fri, 17 Feb 2012 07:49:35 +0000 Subject: [PATCH] gcc/testsuite/ChangeLog 2012-02-16 Fabien Chene PR c++/52126 * g++.dg/template/using21.C: New. * g++.dg/template/using22.C: Likewise. gcc/cp/ChangeLog 2012-02-16 Fabien Chene PR c++/52126 * decl.c (xref_basetypes): call dependent_scope_p instead of dependent_type_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184328 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 2 +- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/template/using21.C | 28 ++++++++++++++++++++++++++++ gcc/testsuite/g++.dg/template/using22.C | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/using21.C create mode 100644 gcc/testsuite/g++.dg/template/using22.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 773f364..c6bf817 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2012-02-16 Fabien Chêne + + PR c++/52126 + * decl.c (xref_basetypes): call dependent_scope_p instead of + dependent_type_p. + 2012-02-16 Jason Merrill PR c++/51415 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index f0ba181..90746a5 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -11880,7 +11880,7 @@ xref_basetypes (tree ref, tree base_list) TYPE_FOR_JAVA (ref) = 1; base_binfo = NULL_TREE; - if (CLASS_TYPE_P (basetype) && !dependent_type_p (basetype)) + if (CLASS_TYPE_P (basetype) && !dependent_scope_p (basetype)) { base_binfo = TYPE_BINFO (basetype); /* The original basetype could have been a typedef'd type. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4ae4119..72f9f74 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-02-16 Fabien Chêne + + PR c++/52126 + * g++.dg/template/using21.C: New. + * g++.dg/template/using22.C: Likewise. + 2012-02-16 Jason Merrill PR c++/51415 diff --git a/gcc/testsuite/g++.dg/template/using21.C b/gcc/testsuite/g++.dg/template/using21.C new file mode 100644 index 0000000..7f61f85 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using21.C @@ -0,0 +1,28 @@ +// PR c++/52126 +// { dg-do compile } + +template +struct A +{ + int foo; + + struct B : A + { + using A::foo; + }; + + struct C : A + { + using A::foo; + }; + + struct D : A + { + using A::foo; + }; + + struct E : A + { + using A::foo; + }; +}; diff --git a/gcc/testsuite/g++.dg/template/using22.C b/gcc/testsuite/g++.dg/template/using22.C new file mode 100644 index 0000000..b456e62 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using22.C @@ -0,0 +1,33 @@ +// PR c++/52126 +// { dg-do compile } + +template struct Z {}; + +template +struct A +{ + struct B : A + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct C : A + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct D : A + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct E : A + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct F : Z + { + using Z::nonexist; + }; +}; -- 2.7.4