re PR c++/9447 (using Base<T>::member does not work)
authorNathan Sidwell <nathan@codesourcery.com>
Fri, 1 Aug 2003 09:01:12 +0000 (09:01 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Fri, 1 Aug 2003 09:01:12 +0000 (09:01 +0000)
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
gcc/cp/decl2.c
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/using5.C [new file with mode: 0644]

index bc4eaf7647a918b8dada60ea478d77ad375841df..8c2e6a3b636695dfeed5f5741c960c40683a2a48 100644 (file)
@@ -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.
index bd51bd1c136a9fe774aef2078a56661a01b910e0..a8c62634469ec081d5c6e564342c1a2c27de03f2 100644 (file)
@@ -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;
 }
index a94174ad945b433aaddb48af7eecac836fc25f97..de5b190ee0246eac5e014ea02fb4bb6782d17392 100644 (file)
@@ -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));
index 26e44a3bfbe9dd75fd43deaff785a462dc595754..57e9802dc33903a8dbf8fd41dda1a27f3191b5b7 100644 (file)
@@ -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 (file)
index 0000000..096ddc0
--- /dev/null
@@ -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(); }
+  
+};