From b1b79e36b42dd9a9f972966ba548ef0b8278ee2a Mon Sep 17 00:00:00 2001
From: mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 12 Dec 2005 16:29:44 +0000
Subject: [PATCH] 	PR c++/25300 	* tree.c (build_qualified_name):
 Return error_mark_node for 	erroneous input. 	PR c++/25300 	*
 g++.dg/template/inherit.C: Do not use a generic error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108413 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/cp/ChangeLog                        | 6 ++++++
 gcc/cp/tree.c                           | 4 ++++
 gcc/testsuite/ChangeLog                 | 5 +++++
 gcc/testsuite/g++.dg/template/inherit.C | 2 +-
 4 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b3bad798b3eb..700b99241ea9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2005-12-12  Mark Mitchell  <mark@codesourcery.com>
+
+	PR c++/25300
+	* tree.c (build_qualified_name): Return error_mark_node for
+	erroneous input.
+
 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/25337 
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 15ee56c7c870..4340c69e1d37 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -817,6 +817,10 @@ tree
 build_qualified_name (tree type, tree scope, tree name, bool template_p)
 {
   tree t;
+  if (type == error_mark_node
+      || scope == error_mark_node
+      || name == error_mark_node)
+    return error_mark_node;
   t = build2 (SCOPE_REF, type, scope, name);
   QUALIFIED_NAME_IS_TEMPLATE (t) = template_p;
   return t;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bdade3ec6f60..6e5aad0f9dc6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-12-12  Mark Mitchell  <mark@codesourcery.com>
+
+	PR c++/25300
+	* g++.dg/template/inherit.C: Do not use a generic error message.
+
 2005-12-12  Andrew Pinski  <pinskia@physics.uc.edu>
 
 	PR libobjc/25354
diff --git a/gcc/testsuite/g++.dg/template/inherit.C b/gcc/testsuite/g++.dg/template/inherit.C
index dbff7e145eed..bc20345fa0a7 100644
--- a/gcc/testsuite/g++.dg/template/inherit.C
+++ b/gcc/testsuite/g++.dg/template/inherit.C
@@ -9,5 +9,5 @@ struct Z : X<int> { };
 int main()
 {
   Z z;
-  z.X::f();                     // { dg-error ".*" "" }
+  z.X::f();                     // { dg-error "template parameters" "" }
 }
-- 
GitLab