From 6acc8d53a91f4c3630fc85274ea75e8224fcdf37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabien=20Ch=C3=AAne?= Date: Fri, 17 Feb 2012 08:49:35 +0100 Subject: re PR c++/52126 (compilation error) 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. From-SVN: r184328 --- 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 (limited to 'gcc') 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; + }; +}; -- cgit v1.1