Commit f769035f by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/19608 (ICE after friend function definition in local class)

cp:
	PR c++/19608
	* parser.c (cp_parser_late_parsing_for_member): Use
	current_function_decl as scope to push to and from.
testsuite:
	PR c++/19608
	* g++.dg/parse/local-class1.C: New.

From-SVN: r95036
parent 6a720599
2005-02-14 Nathan Sidwell <nathan@codesourcery.com>
PR c++/19608
* parser.c (cp_parser_late_parsing_for_member): Use
current_function_decl as scope to push to and from.
PR c++/19884
* pt.c (check_explicit_specialization): Make sure namespace
binding lookup found an overloaded function.
......
......@@ -15286,9 +15286,10 @@ cp_parser_late_parsing_for_member (cp_parser* parser, tree member_function)
tokens = DECL_PENDING_INLINE_INFO (member_function);
DECL_PENDING_INLINE_INFO (member_function) = NULL;
DECL_PENDING_INLINE_P (member_function) = 0;
/* If this was an inline function in a local class, enter the scope
of the containing function. */
function_scope = decl_function_context (member_function);
/* If this is a local class, enter the scope of the containing
function. */
function_scope = current_function_decl;
if (function_scope)
push_function_context_to (function_scope);
......
2005-02-14 Nathan Sidwell <nathan@codesourcery.com>
PR c++/19608
* g++.dg/parse/local-class1.C: New.
PR c++/19895
* g++.dg/parse/ptrmem3.C: New.
......
// Copyright (C) 2005 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 14 Feb 2005 <nathan@codesourcery.com>
// Origin: Jorn Wolfgang Rennecke <amylaar@gcc.gnu.org>
// Bug 19608: ICE on invalid
void f ()
{
class c
{
friend void g () { } // { dg-error "local class definition" "" }
};
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment