diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2003-08-01 09:01:12 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2003-08-01 09:01:12 +0000 |
commit | 522da2bf7e2cf6c457cf50bcb3ba80d3ea329e79 (patch) | |
tree | 382b18eafe947752799f301c76be5dca6404f191 | |
parent | e9c00e62d0aa1448248d377d82eb1b186152a061 (diff) | |
download | gcc-522da2bf7e2cf6c457cf50bcb3ba80d3ea329e79.zip gcc-522da2bf7e2cf6c457cf50bcb3ba80d3ea329e79.tar.gz gcc-522da2bf7e2cf6c457cf50bcb3ba80d3ea329e79.tar.bz2 |
re PR c++/9447 (using Base<T>::member does not work)
cp:
PR c++/9447
* decl2.c (do_class_using_decl): Set type to NULL_TREE.
* semantics.c (finish_expr_stmt): Do not convert to void in a
template.
testsuite:
PR c++/9447
* g++.dg/template/using5.C: New test.
From-SVN: r70039
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/using5.C | 17 |
5 files changed, 31 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bc4eaf7..8c2e6a3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-08-01 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/9447 + * decl2.c (do_class_using_decl): Set type to NULL_TREE. + * semantics.c (finish_expr_stmt): Do not convert to void in a + template. + 2003-07-31 Nathan Sidwell <nathan@codesourcery.com> * pt.c (coerce_template_parms): Refactor. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index bd51bd1..a8c6263 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4096,7 +4096,7 @@ do_class_using_decl (tree decl) my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE, 980716); - value = build_lang_decl (USING_DECL, name, unknown_type_node); + value = build_lang_decl (USING_DECL, name, NULL_TREE); DECL_INITIAL (value) = TREE_OPERAND (decl, 0); return value; } diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index a94174a..de5b190 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -430,7 +430,7 @@ finish_expr_stmt (tree expr) /* Remember the type of the expression. */ expr_type = TREE_TYPE (expr); - if (stmts_are_full_exprs_p ()) + if (!processing_template_decl && stmts_are_full_exprs_p ()) expr = convert_to_void (expr, "statement"); r = add_stmt (build_stmt (EXPR_STMT, expr)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 26e44a3..57e9802 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-08-01 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/9447 + * g++.dg/template/using5.C: New test. + 2003-07-31 Roger Sayle <roger@eyesopen.com> * gcc.dg/builtins-27.c: New test case. diff --git a/gcc/testsuite/g++.dg/template/using5.C b/gcc/testsuite/g++.dg/template/using5.C new file mode 100644 index 0000000..096ddc0 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using5.C @@ -0,0 +1,17 @@ +// { dg-do compile } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 31 Jul 2003 <nathan@codesourcery.com> + +// PR 9447. further test cases for dependent using decl + +template <typename T> struct Base; + +template <typename T> struct Derived : public Base<T> { + using Base<T>::i; + + Derived() { i; } + + int get_i() { return i.f(); } + +}; |