aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>2001-11-04 09:50:44 +0000
committerKriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org>2001-11-04 09:50:44 +0000
commit2a2b1d56d323821f6a74d942b0fa2a00d4ffbdbc (patch)
tree8f0c50d03b8588763ba0f2dc22ba81b723ff8219
parent5f850402c73e9ef012b493c2b237c054ad853043 (diff)
downloadgcc-2a2b1d56d323821f6a74d942b0fa2a00d4ffbdbc.zip
gcc-2a2b1d56d323821f6a74d942b0fa2a00d4ffbdbc.tar.gz
gcc-2a2b1d56d323821f6a74d942b0fa2a00d4ffbdbc.tar.bz2
* pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
From-SVN: r46772
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/pt.c1
-rw-r--r--gcc/testsuite/g++.dg/ext/typeof1.C21
3 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1cc0cf6..e566e30 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2001-11-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
+
2001-11-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* lex.c (copy_lang_type): Add static prototype.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index a2971f9..f1a41f2 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7174,6 +7174,7 @@ tsubst_copy (t, args, complain, in_decl)
case ARRAY_TYPE:
case TYPENAME_TYPE:
case UNBOUND_CLASS_TEMPLATE:
+ case TYPEOF_TYPE:
case TYPE_DECL:
return tsubst (t, args, complain, in_decl);
diff --git a/gcc/testsuite/g++.dg/ext/typeof1.C b/gcc/testsuite/g++.dg/ext/typeof1.C
new file mode 100644
index 0000000..a3c13c8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/typeof1.C
@@ -0,0 +1,21 @@
+// Test typeof template argument substitution
+
+// Copyright (C) 2001 Free Software Foundation
+// Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+// { dg-do compile }
+// { dg-options "" }
+
+template <class T> struct A {
+ void f() {}
+ void g(T* t) {
+ A<typeof(t)> a;
+ a.f();
+ }
+};
+
+int main()
+{
+ A<int> a;
+ int b;
+ a.g(&b);
+}