From efb169b09d08c84445a5705d7895a32180445bc8 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Tue, 7 Jun 2005 08:45:32 +0000 Subject: [PATCH] parser.c (cp_parser_late_parsing_default_args): Fix overeager assert in previous patch. cp: * parser.c (cp_parser_late_parsing_default_args): Fix overeager assert in previous patch. testsuite: * g++.dg/parse/defarg10.C: New. From-SVN: r100702 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/parser.c | 5 ++++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/parse/defarg10.C | 11 +++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/parse/defarg10.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cbfe7649936..99799781702 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-06-07 Nathan Sidwell + + * parser.c (cp_parser_late_parsing_default_args): Fix overeager + assert in previous patch. + 2005-06-06 Jakub Jelinek * error.c (locate_error): Use gmsgid instead of msgid for argument diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c0059d055f6..23c1621cebe 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -15599,7 +15599,10 @@ cp_parser_late_parsing_default_args (cp_parser *parser, tree fn) if (!default_arg) continue; - gcc_assert (TREE_CODE (default_arg) == DEFAULT_ARG); + if (TREE_CODE (default_arg) != DEFAULT_ARG) + /* This can happen for a friend declaration for a function + already declared with default arguments. */ + continue; /* Push the saved tokens for the default argument onto the parser's lexer stack. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 65f2435a67e..a6edac72e70 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-06-07 Nathan Sidwell + + * g++.dg/parse/defarg10.C: New. + 2005-06-06 Jakub Jelinek PR regression/21897 diff --git a/gcc/testsuite/g++.dg/parse/defarg10.C b/gcc/testsuite/g++.dg/parse/defarg10.C new file mode 100644 index 00000000000..ca228ac6492 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/defarg10.C @@ -0,0 +1,11 @@ +// Copyright (C) 2005 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Jun 2005 + +// From java library. + +void Foo (int = 0); + +class Class +{ + friend void Foo (int); +};