From: Jakub Jelinek Date: Fri, 24 Aug 2007 17:09:50 +0000 (+0200) Subject: re PR c++/32898 (Definition of variable N::i outside namespace N not rejected) X-Git-Tag: releases/gcc-4.2.2~124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d15fc80264813f8d5161ebd65fa33c306410b6bf;p=thirdparty%2Fgcc.git re PR c++/32898 (Definition of variable N::i outside namespace N not rejected) PR c++/32898 * name-lookup.c (set_decl_namespace): lookup_qualified_name failure is error_mark_node rather than NULL_TREE. * pt.c (check_explicit_specialization): Likewise. * g++.dg/lookup/ns3.C: New test. From-SVN: r127777 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 51894de0715f..db4c828b133e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2007-08-24 Jakub Jelinek + + PR c++/32898 + * name-lookup.c (set_decl_namespace): lookup_qualified_name failure + is error_mark_node rather than NULL_TREE. + * pt.c (check_explicit_specialization): Likewise. + 2007-08-22 Jason Merrill PR c++/29365 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index b0358479b56e..744dd5c489ec 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2924,7 +2924,7 @@ set_decl_namespace (tree decl, tree scope, bool friendp) /* See whether this has been declared in the namespace. */ old = lookup_qualified_name (scope, DECL_NAME (decl), false, true); - if (!old) + if (old == error_mark_node) /* No old declaration at all. */ goto complain; if (!is_overloaded_fn (decl)) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d6749ebb959b..ac28afa4136f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1971,7 +1971,7 @@ check_explicit_specialization (tree declarator, context. */ fns = lookup_qualified_name (CP_DECL_CONTEXT (decl), dname, false, true); - if (!fns || !is_overloaded_fn (fns)) + if (fns == error_mark_node || !is_overloaded_fn (fns)) { error ("%qD is not a template function", dname); fns = error_mark_node; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f4ffedc4e423..7e1bc9295060 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2007-08-24 Jakub Jelinek + PR c++/32898 + * g++.dg/lookup/ns3.C: New test. + PR debug/32610 * gcc.dg/debug/pr32610.c: New test. diff --git a/gcc/testsuite/g++.dg/lookup/ns3.C b/gcc/testsuite/g++.dg/lookup/ns3.C new file mode 100644 index 000000000000..144cba73daee --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/ns3.C @@ -0,0 +1,5 @@ +// PR c++/32898 + +namespace N { } + +int N::i; // { dg-error "should have been declared inside" }