diff options
author | Fabien Chêne <fabien@gcc.gnu.org> | 2012-02-17 08:49:35 +0100 |
---|---|---|
committer | Fabien Chêne <fabien@gcc.gnu.org> | 2012-02-17 08:49:35 +0100 |
commit | 6acc8d53a91f4c3630fc85274ea75e8224fcdf37 (patch) | |
tree | 7fe00c88472a30aba2b52b84bdb4feac9882d609 /gcc | |
parent | 2f46ac4db1c784bef60cb4bb6e9e4bc33b9e9466 (diff) | |
download | gcc-6acc8d53a91f4c3630fc85274ea75e8224fcdf37.zip gcc-6acc8d53a91f4c3630fc85274ea75e8224fcdf37.tar.gz gcc-6acc8d53a91f4c3630fc85274ea75e8224fcdf37.tar.bz2 |
re PR c++/52126 (compilation error)
gcc/testsuite/ChangeLog
2012-02-16 Fabien Chene <fabien@gcc.gnu.org>
PR c++/52126
* g++.dg/template/using21.C: New.
* g++.dg/template/using22.C: Likewise.
gcc/cp/ChangeLog
2012-02-16 Fabien Chene <fabien@gcc.gnu.org>
PR c++/52126
* decl.c (xref_basetypes): call dependent_scope_p instead of
dependent_type_p.
From-SVN: r184328
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/using21.C | 28 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/using22.C | 33 |
5 files changed, 74 insertions, 1 deletions
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 <fabien@gcc.gnu.org> + + PR c++/52126 + * decl.c (xref_basetypes): call dependent_scope_p instead of + dependent_type_p. + 2012-02-16 Jason Merrill <jason@redhat.com> 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 <fabien@gcc.gnu.org> + + PR c++/52126 + * g++.dg/template/using21.C: New. + * g++.dg/template/using22.C: Likewise. + 2012-02-16 Jason Merrill <jason@redhat.com> 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<typename T> +struct A +{ + int foo; + + struct B : A<T> + { + using A::foo; + }; + + struct C : A + { + using A::foo; + }; + + struct D : A<T> + { + using A<T>::foo; + }; + + struct E : A + { + using A<T>::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 <class T> struct Z {}; + +template<typename T> +struct A +{ + struct B : A<T> + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct C : A + { + using A::nonexist; // { dg-error "no members matching" } + }; + + struct D : A<T> + { + using A<T>::nonexist; // { dg-error "no members matching" } + }; + + struct E : A + { + using A<T>::nonexist; // { dg-error "no members matching" } + }; + + struct F : Z<T> + { + using Z<T>::nonexist; + }; +}; |