aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>1998-06-13 23:35:46 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1998-06-13 23:35:46 +0000
commit581d38d0bac90445b1a58cff2857609d141e995f (patch)
tree5e9eba8b70253b0a2e6bfde7762fd04632717976
parent5e7955289faf43ba7ff15c5815d768657fb225d8 (diff)
downloadgcc-581d38d0bac90445b1a58cff2857609d141e995f.zip
gcc-581d38d0bac90445b1a58cff2857609d141e995f.tar.gz
gcc-581d38d0bac90445b1a58cff2857609d141e995f.tar.bz2
pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for types.
* pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for types. From-SVN: r20498
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/enum4.C16
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 69856b7..9fe7fdd 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3164,6 +3164,11 @@ for_each_template_parm (t, fn, data)
{
if (!t)
return 0;
+
+ if (TREE_CODE_CLASS (TREE_CODE (t)) == 't'
+ && for_each_template_parm (TYPE_CONTEXT (t), fn, data))
+ return 1;
+
switch (TREE_CODE (t))
{
case INDIRECT_REF:
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum4.C b/gcc/testsuite/g++.old-deja/g++.pt/enum4.C
new file mode 100644
index 0000000..28f4b29
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/enum4.C
@@ -0,0 +1,16 @@
+// Build don't link:
+
+template <class T>
+struct U
+{
+ T mT;
+};
+
+template <class H>
+struct M
+{
+ enum FLAG {On, Off};
+ U<FLAG> mUF;
+};
+
+M<char> gm;