From: Mark Mitchell Date: Mon, 14 Oct 2002 21:09:25 +0000 (+0000) Subject: re PR c++/7176 (g++ confused by friend and static member with same name) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=77631fa7edc6a2b6c4177c0f7a3b1eb454e372c3;p=gcc.git re PR c++/7176 (g++ confused by friend and static member with same name) PR c++/7176 * g++.dg/parse/friend1.C: New test. * g++.old-deja/g++.pt/memtemp64.C: Adjust. PR c++/7176 * lex.c (do_identifier): Add another option for the parsing parameter. * parse.y (do_id): Use it. From-SVN: r58135 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5704c900663..e5c7356e5af 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2002-10-14 Mark Mitchell + + PR c++/7176 + * lex.c (do_identifier): Add another option for the parsing + parameter. + * parse.y (do_id): Use it. + 2002-10-11 Gabriel Dos Reis PRs C++/6803, C++/7721 and C++/7803 diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 2342c2320c7..bab29888e8b 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -1135,7 +1135,7 @@ do_identifier (token, parsing, args) tree args; { register tree id; - int lexing = (parsing == 1); + int lexing = (parsing == 1 || parsing == 3); if (! lexing) id = lookup_name (token, 0); @@ -1157,7 +1157,7 @@ do_identifier (token, parsing, args) /* Remember that this name has been used in the class definition, as per [class.scope0] */ - if (id && parsing) + if (id && parsing && parsing != 3) maybe_note_name_used_in_class (token, id); if (id == error_mark_node) diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 104c4a70ed0..78cf991f192 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -1516,7 +1516,7 @@ do_id: do_identifier; we only do that for unqualified identifiers. */ if (!lastiddecl || !BASELINK_P (lastiddecl)) - $$ = do_identifier ($-1, 1, NULL_TREE); + $$ = do_identifier ($-1, 3, NULL_TREE); else $$ = $-1; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 76df36f02b8..5b1374cc043 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2002-10-14 Mark Mitchell + + PR c++/7176 + * g++.dg/parse/friend1.C: New test. + * g++.old-deja/g++.pt/memtemp64.C: Adjust. + 2002-10-14 Jakub Jelinek * gcc.dg/20021014-1.c: New test. diff --git a/gcc/testsuite/g++.dg/parse/friend1.C b/gcc/testsuite/g++.dg/parse/friend1.C new file mode 100644 index 00000000000..f19dc9c628b --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/friend1.C @@ -0,0 +1,9 @@ +namespace N { + template + static void f (); + + struct S { + friend void N::f (); + static void f (int); + }; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C index fbebe3ae82f..6185d3d6058 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C @@ -4,7 +4,7 @@ template struct S1 {}; template -void f(T); // ERROR - original declaration. +void f(T); template struct S2