mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 22:06:12 +08:00
re PR c++/28274 (Redeclaration with extra default argument doesn't work)
PR c++/28274 * name-lookup.c (pushdecl_maybe_friend): Check default args later. From-SVN: r145042
This commit is contained in:
parent
e6142656cb
commit
f7cbd40ea6
@ -1,3 +1,8 @@
|
||||
2009-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/28274
|
||||
* name-lookup.c (pushdecl_maybe_friend): Check default args later.
|
||||
|
||||
2009-03-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/39495
|
||||
|
@ -813,9 +813,6 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||
}
|
||||
}
|
||||
|
||||
if (TREE_CODE (x) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (x))
|
||||
check_default_args (x);
|
||||
|
||||
check_template_shadow (x);
|
||||
|
||||
/* If this is a function conjured up by the back end, massage it
|
||||
@ -826,11 +823,10 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||
SET_DECL_LANGUAGE (x, lang_c);
|
||||
}
|
||||
|
||||
t = x;
|
||||
if (DECL_NON_THUNK_FUNCTION_P (x) && ! DECL_FUNCTION_MEMBER_P (x))
|
||||
{
|
||||
t = push_overloaded_decl (x, PUSH_LOCAL, is_friend);
|
||||
if (t != x)
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
|
||||
if (!namespace_bindings_p ())
|
||||
/* We do not need to create a binding for this name;
|
||||
push_overloaded_decl will have already done so if
|
||||
@ -842,9 +838,14 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||
t = push_overloaded_decl (x, PUSH_GLOBAL, is_friend);
|
||||
if (t == x)
|
||||
add_decl_to_level (x, NAMESPACE_LEVEL (CP_DECL_CONTEXT (t)));
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
|
||||
}
|
||||
|
||||
if (TREE_CODE (x) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (x))
|
||||
check_default_args (x);
|
||||
|
||||
if (t != x || DECL_FUNCTION_TEMPLATE_P (t))
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
|
||||
|
||||
/* If declaring a type as a typedef, copy the type (unless we're
|
||||
at line 0), and install this TYPE_DECL as the new type's typedef
|
||||
name. See the extensive comment in ../c-decl.c (pushdecl). */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/28274
|
||||
* g++.dg/parse/defarg14.C: New test.
|
||||
|
||||
2009-03-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/39528
|
||||
|
6
gcc/testsuite/g++.dg/parse/defarg14.C
Normal file
6
gcc/testsuite/g++.dg/parse/defarg14.C
Normal file
@ -0,0 +1,6 @@
|
||||
// PR c++/28274
|
||||
|
||||
extern "C" {
|
||||
void foo (int i, int j = 6);
|
||||
void foo (int i = 4, int j);
|
||||
}
|
Loading…
Reference in New Issue
Block a user