aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/semantics.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-04-07 17:46:57 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-04-07 17:46:57 -0400
commit5b97c77f8caedb9434ef5feab416154403d24123 (patch)
treeb64c1b85c092e3d9f6bf16001c2ca4d87f53360a /gcc/cp/semantics.c
parent1ee44b260d206b5ebc51466d672adffcdcebf4f2 (diff)
downloadgcc-5b97c77f8caedb9434ef5feab416154403d24123.zip
gcc-5b97c77f8caedb9434ef5feab416154403d24123.tar.gz
gcc-5b97c77f8caedb9434ef5feab416154403d24123.tar.bz2
semantics.c (finish_decltype_type): Add complain parm.
* semantics.c (finish_decltype_type): Add complain parm. * cp-tree.h: Adjust. * parser.c (cp_parser_decltype): Adjust. * pt.c (tsubst): Adjust. From-SVN: r172139
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r--gcc/cp/semantics.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index a15740a..80ec028 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -4785,7 +4785,8 @@ describable_type (tree expr)
a full expression. */
tree
-finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
+finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
+ tsubst_flags_t complain)
{
tree orig_expr = expr;
tree type = NULL_TREE;
@@ -4798,7 +4799,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
|| (TREE_CODE (expr) == BIT_NOT_EXPR
&& TYPE_P (TREE_OPERAND (expr, 0))))
{
- error ("argument to decltype must be an expression");
+ if (complain & tf_error)
+ error ("argument to decltype must be an expression");
return error_mark_node;
}
@@ -4864,7 +4866,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
if (OVL_CHAIN (expr)
|| TREE_CODE (OVL_FUNCTION (expr)) == TEMPLATE_DECL)
{
- error ("%qE refers to a set of overloaded functions", orig_expr);
+ if (complain & tf_error)
+ error ("%qE refers to a set of overloaded functions",
+ orig_expr);
return error_mark_node;
}
else
@@ -4916,7 +4920,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
default:
gcc_assert (TYPE_P (expr) || DECL_P (expr)
|| TREE_CODE (expr) == SCOPE_REF);
- error ("argument to decltype must be an expression");
+ if (complain & tf_error)
+ error ("argument to decltype must be an expression");
return error_mark_node;
}
}
@@ -4954,7 +4959,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
if (!type || type == unknown_type_node)
{
- error ("type of %qE is unknown", expr);
+ if (complain & tf_error)
+ error ("type of %qE is unknown", expr);
return error_mark_node;
}