We weren't printing the condition and message of a STATIC_ASSERT.
It's also unnecessary to duplicate the code for instantiating a
STATIC_ASSERT between tsubst_expr and instantiate_class_template_1.
gcc/cp/ChangeLog
2020-05-11 Jason Merrill <jason@redhat.com>
* pt.c (instantiate_class_template_1): Call tsubst_expr for
STATIC_ASSERT member.
* ptree.c (cxx_print_xnode): Handle STATIC_ASSERT.
+2020-05-11 Jason Merrill <jason@redhat.com>
+
+ * pt.c (instantiate_class_template_1): Call tsubst_expr for
+ STATIC_ASSERT member.
+ * ptree.c (cxx_print_xnode): Handle STATIC_ASSERT.
+
2020-05-11 Jason Merrill <jason@redhat.com>
* pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Remove redundant
{
/* Build new TYPE_FIELDS. */
if (TREE_CODE (t) == STATIC_ASSERT)
- {
- tree condition;
-
- ++c_inhibit_evaluation_warnings;
- condition =
- tsubst_expr (STATIC_ASSERT_CONDITION (t), args,
- tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/true);
- --c_inhibit_evaluation_warnings;
-
- finish_static_assert (condition,
- STATIC_ASSERT_MESSAGE (t),
- STATIC_ASSERT_SOURCE_LOCATION (t),
- /*member_p=*/true);
- }
+ tsubst_expr (t, args, tf_warning_or_error, NULL_TREE,
+ /*integral_constant_expression_p=*/true);
else if (TREE_CODE (t) != CONST_DECL)
{
tree r;
case LAMBDA_EXPR:
cxx_print_lambda_node (file, node, indent);
break;
+ case STATIC_ASSERT:
+ if (location_t loc = STATIC_ASSERT_SOURCE_LOCATION (node))
+ {
+ expanded_location xloc = expand_location (loc);
+ indent_to (file, indent+4);
+ fprintf (file, "%s:%d:%d", xloc.file, xloc.line, xloc.column);
+ }
+ print_node (file, "condition", STATIC_ASSERT_CONDITION (node), indent+4);
+ if (tree message = STATIC_ASSERT_MESSAGE (node))
+ print_node (file, "message", message, indent+4);
+ break;
default:
break;
}