From 1918facfd12f3b3466d877a093ff8fc3ef80b668 Mon Sep 17 00:00:00 2001 From: Scott Brumbaugh Date: Tue, 2 Sep 2003 23:22:10 +0000 Subject: [PATCH] re PR c++/11553 (g++ accepts duplicate 'friend') PR c++/11553 * parser.c (cp_parser_decl_specifier_seq): Add check for a duplicate friend decl-specifier. PR c++/11553 * g++.dg/parse/friend3.C: New test. From-SVN: r71008 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 5 ++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/friend3.C | 10 ++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/parse/friend3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b24258b4a87..fbee4d64c18 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-09-02 Scott Brumbaugh + + PR c++/11553 + * parser.c (cp_parser_decl_specifier_seq): Add check for a + duplicate friend decl-specifier. + 2003-09-02 Mark Mitchell PR c++/11847 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 01d6dba61ed..916b042d80a 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6312,7 +6312,10 @@ cp_parser_decl_specifier_seq (cp_parser* parser, case RID_FRIEND: /* decl-specifier: friend */ - friend_p = true; + if (friend_p) + error ("duplicate `friend'"); + else + friend_p = true; /* The representation of the specifier is simply the appropriate TREE_IDENTIFIER node. */ decl_spec = token->value; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2cac015c21a..57b9436a933 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-09-02 Scott Brumbaugh + + PR c++/11553 + * g++.dg/parse/friend3.C: New test. + 2003-09-02 Mark Mitchell PR c++/11847 diff --git a/gcc/testsuite/g++.dg/parse/friend3.C b/gcc/testsuite/g++.dg/parse/friend3.C new file mode 100644 index 00000000000..39322021efc --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/friend3.C @@ -0,0 +1,10 @@ +// { dg-do compile } +// +// PR 11553 catch duplicate friend specifiers + +struct S +{ + friend friend class C; // { dg-error "duplicate" } +}; + +