OSDN Git Service

* pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jun 1998 23:35:46 +0000 (23:35 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jun 1998 23:35:46 +0000 (23:35 +0000)
types.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20498 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/pt.c
gcc/testsuite/g++.old-deja/g++.pt/enum4.C [new file with mode: 0644]

index 69856b7..9fe7fdd 100644 (file)
@@ -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 (file)
index 0000000..28f4b29
--- /dev/null
@@ -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;