parse.y (named_class_head): Check for TYPENAME_TYPE.
* parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify union tag mismatch error reporting. From-SVN: r36096
This commit is contained in:
parent
291c9aa2c8
commit
9687f8f4e0
@ -1,3 +1,8 @@
|
||||
2000-09-01 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
|
||||
union tag mismatch error reporting.
|
||||
|
||||
2000-09-01 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* call.c (build_scoped_method_call): Check it is not a namespace.
|
||||
|
@ -2393,24 +2393,30 @@ named_class_head:
|
||||
{
|
||||
if ($1.t != error_mark_node)
|
||||
{
|
||||
$$.t = TREE_TYPE ($1.t);
|
||||
tree type = TREE_TYPE ($1.t);
|
||||
|
||||
$$.t = type;
|
||||
$$.new_type_flag = $1.new_type_flag;
|
||||
if (current_aggr == union_type_node
|
||||
&& TREE_CODE ($$.t) != UNION_TYPE)
|
||||
cp_pedwarn ("`union' tag used in declaring `%#T'",
|
||||
$$.t);
|
||||
else if (TREE_CODE ($$.t) == UNION_TYPE
|
||||
&& current_aggr != union_type_node)
|
||||
cp_pedwarn ("non-`union' tag used in declaring `%#T'", $$);
|
||||
else if (TREE_CODE ($$.t) == RECORD_TYPE)
|
||||
if ((current_aggr == union_type_node)
|
||||
!= (TREE_CODE (type) == UNION_TYPE))
|
||||
cp_pedwarn (current_aggr == union_type_node
|
||||
? "`union' tag used in declaring `%#T'"
|
||||
: "non-`union' tag used in declaring `%#T'",
|
||||
type);
|
||||
else if (TREE_CODE (type) == RECORD_TYPE)
|
||||
/* We might be specializing a template with a different
|
||||
class-key; deal. */
|
||||
CLASSTYPE_DECLARED_CLASS ($$.t)
|
||||
CLASSTYPE_DECLARED_CLASS (type)
|
||||
= (current_aggr == class_type_node);
|
||||
if ($2)
|
||||
{
|
||||
maybe_process_partial_specialization ($$.t);
|
||||
xref_basetypes (current_aggr, $1.t, $$.t, $2);
|
||||
if (TREE_CODE (type) == TYPENAME_TYPE)
|
||||
/* In a definition of a member class template, we
|
||||
will get here with an implicit typename, a
|
||||
TYPENAME_TYPE with a type. */
|
||||
type = TREE_TYPE (type);
|
||||
maybe_process_partial_specialization (type);
|
||||
xref_basetypes (current_aggr, $1.t, type, $2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user