Commit 5973c743 by Paolo Carlini Committed by Paolo Carlini

re PR c++/32113 (ICE with invalid template parameter)

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

	PR c++/32113
	* search.c (lookup_member): Check the name argument for
	error_mark_node.

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

	PR c++/32113
	* g++.dg/template/crash70.C: New.

From-SVN: r127963
parent a53bf42c
2007-08-31 Paolo Carlini <pcarlini@suse.de> 2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/32113
* search.c (lookup_member): Check the name argument for
error_mark_node.
2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/33212 PR c++/33212
* parser.c (cp_parser_trait_expr): Check rerurn value of * parser.c (cp_parser_trait_expr): Check rerurn value of
cp_parser_type_id. cp_parser_type_id.
......
...@@ -1199,6 +1199,9 @@ lookup_member (tree xbasetype, tree name, int protect, bool want_type) ...@@ -1199,6 +1199,9 @@ lookup_member (tree xbasetype, tree name, int protect, bool want_type)
const char *errstr = 0; const char *errstr = 0;
if (name == error_mark_node)
return NULL_TREE;
gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
if (TREE_CODE (xbasetype) == TREE_BINFO) if (TREE_CODE (xbasetype) == TREE_BINFO)
......
2007-08-31 Paolo Carlini <pcarlini@suse.de> 2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/32113
* g++.dg/template/crash70.C: New.
2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/33212 PR c++/33212
* g++.dg/ext/is_class_error.C: New. * g++.dg/ext/is_class_error.C: New.
// PR c++/32113
template<int> struct A;
template<typename T> void foo (A<&T::template i>); // { dg-error "not a template" }
template void foo<A<0> > (A<0>); // { dg-error "does not match" }
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