diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cp/pt.c | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e59e9c1..e3d3a26 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-03-25 Jason Merrill <jason@redhat.com> + + PR c++/13294 + * pt.c (maybe_process_partial_specialization): Remember the + context of a specialization. + 2004-03-25 Kazu Hirata <kazu@cs.umass.edu> * cxx-pretty-print.c: Fix comment typos. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index be2f2c7..3e3d0e9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -733,7 +733,15 @@ maybe_process_partial_specialization (tree type) { tree tpl_ns = decl_namespace_context (CLASSTYPE_TI_TEMPLATE (type)); if (is_associated_namespace (current_namespace, tpl_ns)) - /* Same or super-using namespace. */; + /* Same or super-using namespace. */ + { + if (DECL_NAMESPACE_SCOPE_P (CLASSTYPE_TI_TEMPLATE (type))) + /* If this is a specialization of a namespace-scope class + template, remember the context of the + specialization. */ + TYPE_CONTEXT (type) = DECL_CONTEXT (TYPE_NAME (type)) + = FROB_CONTEXT (current_namespace); + } else { pedwarn ("specializing `%#T' in different namespace", type); |
