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.
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;
{
tree template = NULL_TREE, parmlist;
char *mangled_name;
- tree id, t, id_context;
+ tree id, t;
if (TREE_CODE (d1) == IDENTIFIER_NODE)
{
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
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)
{
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;