From 522da2bf7e2cf6c457cf50bcb3ba80d3ea329e79 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Fri, 1 Aug 2003 09:01:12 +0000 Subject: [PATCH] re PR c++/9447 (using Base::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 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/decl2.c | 2 +- gcc/cp/semantics.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/using5.C | 17 +++++++++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/template/using5.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bc4eaf7647a..8c2e6a3b636 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-08-01 Nathan Sidwell + + 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 * pt.c (coerce_template_parms): Refactor. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index bd51bd1c136..a8c62634469 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 a94174ad945..de5b190ee02 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 26e44a3bfbe..57e9802dc33 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-08-01 Nathan Sidwell + + PR c++/9447 + * g++.dg/template/using5.C: New test. + 2003-07-31 Roger Sayle * 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 00000000000..096ddc0b7cd --- /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 + +// PR 9447. further test cases for dependent using decl + +template struct Base; + +template struct Derived : public Base { + using Base::i; + + Derived() { i; } + + int get_i() { return i.f(); } + +}; -- 2.30.2