Commit 98979fe0 by Nathan Sidwell Committed by Nathan Sidwell

decl.c (grokparms): Unobfuscate and get correct diagnostic for parameters with…

decl.c (grokparms): Unobfuscate and get correct diagnostic for parameters with pointers to arrays...

cp:
	* decl.c (grokparms): Unobfuscate and get correct diagnostic for
	parameters with pointers to arrays of unknown bound.

From-SVN: r38901
parent b37bf5bd
2001-01-11 Nathan Sidwell <nathan@codesourcery.com> 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
* decl.c (grokparms): Unobfuscate and get correct diagnostic for
parameters with pointers to arrays of unknown bound.
2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
* parse.y (template_parm_header, template_spec_header): New * parse.y (template_parm_header, template_spec_header): New
reductions. Split out from ... reductions. Split out from ...
(template_header): ... here. Use them. (template_header): ... here. Use them.
......
...@@ -11907,15 +11907,22 @@ grokparms (first_parm) ...@@ -11907,15 +11907,22 @@ grokparms (first_parm)
{ {
/* [dcl.fct]/6, parameter types cannot contain pointers /* [dcl.fct]/6, parameter types cannot contain pointers
(references) to arrays of unknown bound. */ (references) to arrays of unknown bound. */
tree t = type; tree t = TREE_TYPE (type);
int ptr = TYPE_PTR_P (type);
while (POINTER_TYPE_P (t)
|| (TREE_CODE (t) == ARRAY_TYPE while (1)
&& TYPE_DOMAIN (t) != NULL_TREE)) {
t = TREE_TYPE (t); if (TYPE_PTR_P (t))
ptr = 1;
else if (TREE_CODE (t) != ARRAY_TYPE)
break;
else if (!TYPE_DOMAIN (t))
break;
t = TREE_TYPE (t);
}
if (TREE_CODE (t) == ARRAY_TYPE) if (TREE_CODE (t) == ARRAY_TYPE)
cp_error ("parameter `%D' includes %s to array of unknown bound `%T'", cp_error ("parameter `%D' includes %s to array of unknown bound `%T'",
decl, TYPE_PTR_P (type) ? "pointer" : "reference", t); decl, ptr ? "pointer" : "reference", t);
} }
DECL_ARG_TYPE (decl) = TREE_TYPE (decl); DECL_ARG_TYPE (decl) = TREE_TYPE (decl);
......
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