diff options
| author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-10 22:04:09 +0000 |
|---|---|---|
| committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-10 22:04:09 +0000 |
| commit | cf399df174fcef82af55904a30eecdd9f93196ff (patch) | |
| tree | b902cae44221110fcb4a1215a2361abfa9d26d5b | |
| parent | 4c71ddcf0e17f7eb6311ca4ac480233490cc8261 (diff) | |
| download | ppe42-gcc-cf399df174fcef82af55904a30eecdd9f93196ff.tar.gz ppe42-gcc-cf399df174fcef82af55904a30eecdd9f93196ff.zip | |
PR c++/9798
* decl.c (push_using_directive): Push before recursing.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64133 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/cp/decl.c | 9 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/lookup/using3.C | 12 |
3 files changed, 21 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 403747113f4..9f70757d19d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,6 +1,9 @@ 2003-03-10 Jason Merrill <jason@redhat.com> - PR c++/9868 + PR c++/9798 + * decl.c (push_using_directive): Push before recursing. + + PR c++/9868, c++/9524 * call.c (resolve_scoped_fn_name): Handle the case of a function pointer member. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index b3e617f88f4..eeae35ad0df 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4442,14 +4442,15 @@ push_using_directive (tree used) if (purpose_member (used, ud) != NULL_TREE) POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE); - /* Recursively add all namespaces used. */ - for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter)) - push_using_directive (TREE_PURPOSE (iter)); - ancestor = namespace_ancestor (current_decl_namespace (), used); ud = current_binding_level->using_directives; ud = tree_cons (used, ancestor, ud); current_binding_level->using_directives = ud; + + /* Recursively add all namespaces used. */ + for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter)) + push_using_directive (TREE_PURPOSE (iter)); + POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ud); } diff --git a/gcc/testsuite/g++.dg/lookup/using3.C b/gcc/testsuite/g++.dg/lookup/using3.C new file mode 100644 index 00000000000..f3642759717 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/using3.C @@ -0,0 +1,12 @@ +// PR c++/9798 + +namespace std { } +namespace STL { using namespace std; } +namespace std { + using namespace STL; +} +namespace STL { + struct A { + void B() { using namespace std; } + }; +} |

