From fa3546f12eff8fd7db529ecc3c42666c8c8218cd Mon Sep 17 00:00:00 2001
From: Paolo Carlini <paolo@gcc.gnu.org>
Date: Tue, 14 Aug 2007 22:13:45 +0000
Subject: [PATCH] re PR c++/27211 (Bogus error "template definition of
 non-template" when there is no non-template)

/cp
2007-08-14  Paolo Carlini  <pcarlini@suse.de>

	PR c++/27211
	* decl2.c (check_classfn): Return error_mark_node in case of error;
	in that case, do not call add_method.
	* decl.c (start_decl): Deal with check_classfn returning
	error_mark_node.
	(grokfndecl): Likewise.
	* pt.c (tsubst_friend_function): Likewise.

/testsuite
2007-08-14  Paolo Carlini  <pcarlini@suse.de>

	PR c++/27211
	* g++.dg/template/error27.C: New.
	* g++.dg/template/error28.C: New.
	* g++.dg/other/pr28304.C: Adjust.
	* g++.old-deja/g++.mike/p811.C: Likewise.

From-SVN: r127493
---
 gcc/cp/pt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e4f56d806b3d..5a0bd7170ba4 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -6287,7 +6287,7 @@ tsubst_friend_function (tree decl, tree args)
 	  tree fn = check_classfn (context,
 				   new_friend, NULL_TREE);
 
-	  if (fn)
+	  if (fn && fn != error_mark_node)
 	    new_friend = fn;
 	}
     }
-- 
GitLab