diff options
| author | fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-05 22:04:40 +0000 |
|---|---|---|
| committer | fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-05 22:04:40 +0000 |
| commit | 8fc22c4b11a173d04b23d0605d6676da863757ff (patch) | |
| tree | 2d3527a5b38e2c5f40bce11ac0febc39cf39c7fc | |
| parent | 5ed3d3b86cc6b24082dfe76a20b3ce81db57f6f5 (diff) | |
| download | ppe42-gcc-8fc22c4b11a173d04b23d0605d6676da863757ff.tar.gz ppe42-gcc-8fc22c4b11a173d04b23d0605d6676da863757ff.zip | |
gcc/testsuite/ChangeLog
2011-12-05 Fabien Chene <fabien@gcc.gnu.org>
PR c++/51319
* g++.dg/lookup/using50.C: New.
* g++.dg/lookup/using51.C: New.
gcc/cp/ChangeLog
2011-12-05 Fabien Chene <fabien@gcc.gnu.org>
PR c++/51319
* semantics.c (finish_id_expression): Strip using declarations
early in the function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182029 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/lookup/using50.C | 15 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/lookup/using51.C | 17 |
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index cca601d3973..9a1043a1a9b 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2893,6 +2893,8 @@ finish_id_expression (tree id_expression, const char **error_msg, location_t location) { + decl = strip_using_decl (decl); + /* Initialize the output parameters. */ *idk = CP_ID_KIND_NONE; *error_msg = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index efb2ed42af3..12709b770b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-12-05 Fabien ChĂȘne <fabien@gcc.gnu.org> + + PR c++/51319 + * g++.dg/lookup/using50.C: New. + * g++.dg/lookup/using51.C: New. + 2011-12-05 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/51396 diff --git a/gcc/testsuite/g++.dg/lookup/using50.C b/gcc/testsuite/g++.dg/lookup/using50.C new file mode 100644 index 00000000000..d525a472b61 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/using50.C @@ -0,0 +1,15 @@ +// PR c++/51319 +// { dg-do compile } + +template<int> struct X {}; + +struct Base +{ + enum { a = 1 }; +}; + +struct Der : Base +{ + using Base::a; + typedef X<(int)a> Y; +}; diff --git a/gcc/testsuite/g++.dg/lookup/using51.C b/gcc/testsuite/g++.dg/lookup/using51.C new file mode 100644 index 00000000000..8438f7f2cc8 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/using51.C @@ -0,0 +1,17 @@ +// PR c++/51382 +// { dg-do compile } + +template< int Value > +struct Base +{ + enum { b_e = Value }; +}; + +template< typename Type > +struct Derived : Type +{ + Type::b_e; + enum { d_e = b_e }; +}; + +int v = (int)Derived< Base< 3 > >::d_e; |

