c-typeck.c (build_indirect_ref): Call invalid_indirection_error.
gcc/ * c-typeck.c (build_indirect_ref): Call invalid_indirection_error. gcc/c-family/ * c-common.h (invalid_indirection_error): Declare. * c-common.c (invalid_indirection_error): Define. gcc/cp/ * typeck.c (cp_build_indirect_ref): Call invalid_indirection_error. From-SVN: r167666
This commit is contained in:
parent
083586b880
commit
7a6daeb0d6
@ -1,3 +1,7 @@
|
||||
2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
* c-typeck.c (build_indirect_ref): Call invalid_indirection_error.
|
||||
|
||||
2010-12-09 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* doc/extend.texi (Attribute Syntax): Correct description of
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
* c-common.h (invalid_indirection_error): Declare.
|
||||
* c-common.c (invalid_indirection_error): Define.
|
||||
|
||||
2010-12-03 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR c/46745
|
||||
|
@ -8585,6 +8585,43 @@ lvalue_error (enum lvalue_use use)
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Print an error message for an invalid indirection of type TYPE.
|
||||
ERRSTRING is the name of the operator for the indirection. */
|
||||
|
||||
void
|
||||
invalid_indirection_error (location_t loc, tree type, ref_operator errstring)
|
||||
{
|
||||
switch (errstring)
|
||||
{
|
||||
case RO_NULL:
|
||||
gcc_assert (c_dialect_cxx ());
|
||||
error_at (loc, "invalid type argument (have %qT)", type);
|
||||
break;
|
||||
case RO_ARRAY_INDEXING:
|
||||
error_at (loc,
|
||||
"invalid type argument of array indexing (have %qT)",
|
||||
type);
|
||||
break;
|
||||
case RO_UNARY_STAR:
|
||||
error_at (loc,
|
||||
"invalid type argument of unary %<*%> (have %qT)",
|
||||
type);
|
||||
break;
|
||||
case RO_ARROW:
|
||||
error_at (loc,
|
||||
"invalid type argument of %<->%> (have %qT)",
|
||||
type);
|
||||
break;
|
||||
case RO_IMPLICIT_CONVERSION:
|
||||
error_at (loc,
|
||||
"invalid type argument of implicit conversion (have %qT)",
|
||||
type);
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
/* *PTYPE is an incomplete array. Complete it with a domain based on
|
||||
INITIAL_VALUE. If INITIAL_VALUE is not present, use 1 if DO_DEFAULT
|
||||
|
@ -929,6 +929,7 @@ enum lvalue_use {
|
||||
};
|
||||
|
||||
extern void lvalue_error (enum lvalue_use);
|
||||
extern void invalid_indirection_error (location_t, tree, ref_operator);
|
||||
|
||||
extern int complete_array_type (tree *, tree, bool);
|
||||
|
||||
|
@ -2267,26 +2267,8 @@ build_indirect_ref (location_t loc, tree ptr, ref_operator errstring)
|
||||
}
|
||||
}
|
||||
else if (TREE_CODE (pointer) != ERROR_MARK)
|
||||
switch (errstring)
|
||||
{
|
||||
case RO_ARRAY_INDEXING:
|
||||
error_at (loc,
|
||||
"invalid type argument of array indexing (have %qT)",
|
||||
type);
|
||||
break;
|
||||
case RO_UNARY_STAR:
|
||||
error_at (loc,
|
||||
"invalid type argument of unary %<*%> (have %qT)",
|
||||
type);
|
||||
break;
|
||||
case RO_ARROW:
|
||||
error_at (loc,
|
||||
"invalid type argument of %<->%> (have %qT)",
|
||||
type);
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
invalid_indirection_error (loc, type, errstring);
|
||||
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
* typeck.c (cp_build_indirect_ref): Call invalid_indirection_error.
|
||||
|
||||
2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
* typeck.c (composite_pointer_error): New function.
|
||||
|
@ -2776,23 +2776,8 @@ cp_build_indirect_ref (tree ptr, ref_operator errorstring,
|
||||
gcc_unreachable ();
|
||||
}
|
||||
else if (pointer != error_mark_node)
|
||||
switch (errorstring)
|
||||
{
|
||||
case RO_NULL:
|
||||
error ("invalid type argument");
|
||||
break;
|
||||
case RO_ARRAY_INDEXING:
|
||||
error ("invalid type argument of array indexing");
|
||||
break;
|
||||
case RO_UNARY_STAR:
|
||||
error ("invalid type argument of unary %<*%>");
|
||||
break;
|
||||
case RO_IMPLICIT_CONVERSION:
|
||||
error ("invalid type argument of implicit conversion");
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
invalid_indirection_error (input_location, type, errorstring);
|
||||
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user