pt.c (lookup_template_class): Don't mess with the context of the instantiation.
authorJason Merrill <jason@yorick.cygnus.com>
Fri, 17 Jul 1998 16:29:25 +0000 (16:29 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 17 Jul 1998 16:29:25 +0000 (12:29 -0400)
* pt.c (lookup_template_class): Don't mess with the context of the
instantiation.
* decl2.c (current_decl_namespace): Remove special handling for
templates.

From-SVN: r21265

gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/cp/pt.c

index d58646e644259735ab964ea4974a8a52530b47dd..7d5fb71f9ae79370a4666541b6aaa95c532c42f8 100644 (file)
@@ -1,5 +1,10 @@
 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
 
+       * pt.c (lookup_template_class): Don't mess with the context of the
+       instantiation.
+       * decl2.c (current_decl_namespace): Remove special handling for
+       templates.
+
        * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
        a member template specialization.
 
index 6713c65834b610e13032b596a963fa05e41118d9..e484e6d4cf6724c443d5a053c4b07a2d6633ea69 100644 (file)
@@ -4136,15 +4136,9 @@ current_decl_namespace ()
     return TREE_PURPOSE (decl_namespace_list);
 
   if (current_class_type)
-    if (CLASSTYPE_USE_TEMPLATE (current_class_type))
-      result = decl_namespace (CLASSTYPE_TI_TEMPLATE (current_class_type));
-    else
-      result = decl_namespace (TYPE_STUB_DECL (current_class_type));
+    result = decl_namespace (TYPE_STUB_DECL (current_class_type));
   else if (current_function_decl)
-    if (DECL_USE_TEMPLATE (current_function_decl))
-      result = decl_namespace (DECL_TI_TEMPLATE (current_function_decl));
-    else
-      result = decl_namespace (current_function_decl);
+    result = decl_namespace (current_function_decl);
   else 
     result = current_namespace;
   return result;
index e982c92822e35220f8cf003a4c196b0ed9e41363..ed23223d664efbc9251bfebb3096da162acf6698 100644 (file)
@@ -2985,7 +2985,7 @@ lookup_template_class (d1, arglist, in_decl, context)
 {
   tree template = NULL_TREE, parmlist;
   char *mangled_name;
-  tree id, t, id_context;
+  tree id, t;
 
   if (TREE_CODE (d1) == IDENTIFIER_NODE)
     {
@@ -3030,12 +3030,6 @@ lookup_template_class (d1, arglist, in_decl, context)
   else
     my_friendly_abort (272);
 
-  /* A namespace is used as context only for mangling.
-     Template IDs with namespace context are found 
-     in the global binding level.  */
-  if (context != NULL_TREE && TREE_CODE (context) == NAMESPACE_DECL)
-    context = global_namespace;
-
   /* With something like `template <class T> class X class X { ... };'
      we could end up with D1 having nothing but an IDENTIFIER_LOCAL_VALUE.
      We don't want to do that, but we have to deal with the situation, so
@@ -3043,15 +3037,8 @@ lookup_template_class (d1, arglist, in_decl, context)
   if (! template)
     return error_mark_node;
 
-  /* We need an id_context to get the mangling right. If this is a
-     nested template, use the context. If it is global, retrieve the
-     context from the template.  */
-  if (context && TREE_CODE (context) != NAMESPACE_DECL)
-    id_context = context;
-  else
-    id_context = DECL_CONTEXT (template);
-  if (id_context == NULL_TREE)
-    id_context = global_namespace;
+  if (context == NULL_TREE)
+    context = global_namespace;
 
   if (TREE_CODE (template) != TEMPLATE_DECL)
     {
@@ -3154,7 +3141,7 @@ lookup_template_class (d1, arglist, in_decl, context)
       mangled_name = mangle_class_name_for_template (IDENTIFIER_POINTER (d1),
                                                     parmlist,
                                                     arglist_for_mangling,
-                                                    id_context);
+                                                    context);
       id = get_identifier (mangled_name);
       IDENTIFIER_TEMPLATE (id) = d1;