diff options
| -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; |

